<?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>233822</bug_id>
          
          <creation_ts>2021-12-03 09:57:56 -0800</creation_ts>
          <short_desc>[JSC] Port EXTRA_CTI_THUNKS to all platforms</short_desc>
          <delta_ts>2022-03-01 07:44:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geza Lore">glore</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>angelos</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820189</commentid>
    <comment_count>0</comment_count>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-03 09:57:56 -0800</bug_when>
    <thetext>[JSC] Port EXTRA_CTI_THUNKS to all platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820196</commentid>
    <comment_count>1</comment_count>
      <attachid>445869</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-03 10:15:45 -0800</bug_when>
    <thetext>Created attachment 445869
WIP - EWS sanity check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820207</commentid>
    <comment_count>2</comment_count>
      <attachid>445870</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-03 10:26:26 -0800</bug_when>
    <thetext>Created attachment 445870
WIP - remove unused arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820224</commentid>
    <comment_count>3</comment_count>
      <attachid>445873</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-03 11:01:07 -0800</bug_when>
    <thetext>Created attachment 445873
WIP - build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822772</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-10 09:58:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/86326948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823965</commentid>
    <comment_count>5</comment_count>
      <attachid>447123</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2021-12-14 04:52:12 -0800</bug_when>
    <thetext>Created attachment 447123
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827928</commentid>
    <comment_count>6</comment_count>
      <attachid>448291</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-04 06:59:42 -0800</bug_when>
    <thetext>Created attachment 448291
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827967</commentid>
    <comment_count>7</comment_count>
      <attachid>448301</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-04 09:23:36 -0800</bug_when>
    <thetext>Created attachment 448301
Windows fix 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827977</commentid>
    <comment_count>8</comment_count>
      <attachid>448303</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-04 09:39:47 -0800</bug_when>
    <thetext>Created attachment 448303
Windows fix 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828015</commentid>
    <comment_count>9</comment_count>
      <attachid>448312</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-04 11:28:49 -0800</bug_when>
    <thetext>Created attachment 448312
Windows fix 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828265</commentid>
    <comment_count>10</comment_count>
      <attachid>448385</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-05 07:09:38 -0800</bug_when>
    <thetext>Created attachment 448385
cleanup 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828308</commentid>
    <comment_count>11</comment_count>
      <attachid>448400</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-05 10:20:47 -0800</bug_when>
    <thetext>Created attachment 448400
cleanup 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828324</commentid>
    <comment_count>12</comment_count>
      <attachid>448407</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-05 10:43:26 -0800</bug_when>
    <thetext>Created attachment 448407
Xcode build fix [hopefully]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828547</commentid>
    <comment_count>13</comment_count>
      <attachid>448482</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-06 03:01:48 -0800</bug_when>
    <thetext>Created attachment 448482
For review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828612</commentid>
    <comment_count>14</comment_count>
      <attachid>448500</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-06 07:37:23 -0800</bug_when>
    <thetext>Created attachment 448500
minor style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829747</commentid>
    <comment_count>15</comment_count>
      <attachid>448500</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-11 02:24:05 -0800</bug_when>
    <thetext>Comment on attachment 448500
minor style fix

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

Nice. But found several bugs.
In ARM64E, we need to tag return address register in the prologue. And we should not tag it when doing a tail call. It seems that this patch broke these things.
Please check this is met by comparing old code and new code.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:44
&gt; +    static inline constexpr RegisterID dataTempRegister = ARMRegisters::ip;
&gt; +    static inline constexpr RegisterID addressTempRegister = ARMRegisters::r6;
&gt;  
&gt; -    static constexpr ARMRegisters::FPDoubleRegisterID fpTempRegister = ARMRegisters::d7;
&gt; +    static inline constexpr ARMRegisters::FPDoubleRegisterID fpTempRegister = ARMRegisters::d7;

When constexpr is specified, static member variable is implicitly inline. So this is not necessary.
http://eel.is/c++draft/dcl.constexpr#1.sentence-3

&gt; Source/JavaScriptCore/jit/CCallHelpers.cpp:98
&gt; +static_assert(!((maxFrameExtentForSlowPathCall + 2*sizeof(CPURegister)) % 16), &quot;Stack must be aligned after CTI thunk entry&quot;);

We should add space between 2 and * and sizeof.

&gt; Source/JavaScriptCore/jit/CCallHelpers.cpp:100
&gt; +void CCallHelpers::emitCTIThunkPrologue()

This is not correct. It is removing tagging from the original code.
Please ensure that these code is exactly the same to the original sequence of generated code.

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:-1286
&gt; -    jit.tagReturnAddress();

This is missing.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:-2625
&gt; -    jit.tagReturnAddress();

This is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829766</commentid>
    <comment_count>16</comment_count>
      <attachid>448839</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-11 04:35:26 -0800</bug_when>
    <thetext>Created attachment 448839
fix PACs in thunks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831673</commentid>
    <comment_count>17</comment_count>
      <attachid>449389</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-18 07:52:55 -0800</bug_when>
    <thetext>Created attachment 449389
fix PACs in thunks - v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831711</commentid>
    <comment_count>18</comment_count>
      <attachid>449400</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-18 10:00:58 -0800</bug_when>
    <thetext>Created attachment 449400
fix PACs in thunks - v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832969</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-21 20:04:30 -0800</bug_when>
    <thetext>I tried applying it and found that all tests are crashing, probably, PAC is broken with this change.
Can we split this patch into two?

1. Enabling EXTRA_CTI_THUNKS for Windows etc. part
2. Enhancing the existing thunks part

(1) should not change the existing thunk so that it will not break PAC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835589</commentid>
    <comment_count>20</comment_count>
      <attachid>450418</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-01-31 10:53:59 -0800</bug_when>
    <thetext>Created attachment 450418
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836056</commentid>
    <comment_count>21</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-01 10:54:14 -0800</bug_when>
    <thetext>I think I know what your arm64e issues are. Take resolve_scope:

On the fast path, we call:
jit.tagReturnAddress()

Then, if we go to the slow path, inside slow_op_resolve_scopeGenerator, we call:
jit.emitCTIThunkPrologue()

which does:
void CCallHelpers::emitCTIThunkPrologue()
{
    tagReturnAddress();


This leads us to tagging an already tagged value. So you&apos;ll want to audit all fast path to slow paths. Maybe we can just call untag? Or maybe we don&apos;t need to tag at all if all fast paths already tag? Otherwise, we could pass in a boolean to this function if it needs to tag. It probably depends on the context of the opcode. resolve_scope is just jumping to its slow paths. Maybe other opcodes call it?

Anyways, I think this should be enough info to go in and audit the code with this in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836546</commentid>
    <comment_count>22</comment_count>
      <attachid>450677</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-02-02 11:22:41 -0800</bug_when>
    <thetext>Created attachment 450677
fix double tagging of return address in resolve_scope and get_from_scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836558</commentid>
    <comment_count>23</comment_count>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-02-02 11:48:27 -0800</bug_when>
    <thetext>The issue indeed seems to have been double tagging in resolve_scope and get_from_scope. Thanks again for the assistance tracking this down. 

FWIW I managed to get a mostly functional arm64e build on an M1 device (still fails some 6% of tests, most having to do with i18l), and I confirmed that with the latest version of this patch there are no new test failures, so I&apos;m now fairly confident this is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846665</commentid>
    <comment_count>24</comment_count>
      <attachid>450677</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-28 09:41:06 -0800</bug_when>
    <thetext>Comment on attachment 450677
fix double tagging of return address in resolve_scope and get_from_scope

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +        Enabling the extra CTI thunks on ARMv7/Thumb-2 saves about 25%

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846715</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-28 11:22:15 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 450677 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846987</commentid>
    <comment_count>26</comment_count>
      <attachid>453486</attachid>
    <who name="Geza Lore">glore</who>
    <bug_when>2022-03-01 03:53:10 -0800</bug_when>
    <thetext>Created attachment 453486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847022</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-01 07:44:09 -0800</bug_when>
    <thetext>Committed r290647 (247920@main): &lt;https://commits.webkit.org/247920@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453486.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445869</attachid>
            <date>2021-12-03 10:15:45 -0800</date>
            <delta_ts>2021-12-03 10:28:08 -0800</delta_ts>
            <desc>WIP - EWS sanity check</desc>
            <filename>bug-233822-20211203181543.patch</filename>
            <type>text/plain</type>
            <size>186355</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZWRjMmM5MDlhNjFjNDlkMjk4MmJkM2JkOTUyOTNlM2NmNDI5Y2ZjLi5lZDJmZGNkZjY3YmIyNjNj
Nzg2OTBjZTEwYzhiNDY2OTE5NjIwNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjEtMTItMDMgIEdlemEgTG9yZSAgPGdlemFsb3JlQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3Jtcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnN1YlB0cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lzdGVy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmg6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd0Nhc2VDYWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6Cisg
ICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgICog
aml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRh
SUNGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
amZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1
ZUlzVHJ1dGh5R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToK
KyAgICAgICAgKEpTQzo6SklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2VudGVyKToKKyAgICAgICAgKEpTQzo6SklUOjpvcF9lbnRlcl9o
YW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja190
cmFwcyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRv
cik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJpdmF0ZVNsb3cp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eSk6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVRTbG93UGF0aENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENhbGw6Omdl
bmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpT
Qzo6SklUU2xvd1BhdGhDYWxsOjpKSVRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgICogaml0
L1RodW5rR2VuZXJhdG9ycy5oOgorCiAyMDIxLTEyLTAyICBHZXphIExvcmUgIDxnbG9yZUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIEdlbmVyYXRlZCBjb2RlIHNpemUgcmVkdWN0aW9ucyBm
b3IgYmFzZWxpbmUgSklUIChhbGwgYXJjaGl0ZWN0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDBkMDE1YjdjZjM1MDJl
NGJkZWUxZjIxZjA2ZGY1NzU2N2I1ZGI4Mi4uOTQzMWFkNDY3NGFkZGFlYmM4MWFlM2ZhZmNlY2Jk
ODRjYzZmZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMi0wMyAgR2V6YSBMb3JlICA8
Z2V6YWxvcmVAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBvcnQgRVhUUkFfQ1RJX1RIVU5L
UyB0byBhbGwgcGxhdGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM4MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIxLTExLTI5ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBB
ZGQgcnVudGltZSBmbGFnIGZvciBMYXllci1iYXNlZCBTVkcgZW5naW5lIChMQlNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDY4
MTA1YmQxYjQ3YzVmYTA2ZmQzNWIxOTUzMWIwMjVkZjViMjIyNzYuLjk2ZTA0MzIyM2QzY2Y3YjFh
OTVmYmJkYmQ4MDA4Mzk0MjVhZmQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0LDIyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9p
ZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0
cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0xMDA3LDEyICsxMDE3LDIy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IDI5ZGZmYzhiMzU2NjBmZWRiMTI3MmEzMzgyYTUyMWY1YWIyMTExYjUuLjk2OGFhMDgy
YWI0YmQxMmMyMzFjOGQ2M2UyMjU1ZTFlODAwMTgzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zOCwxMCAr
MzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIgPSBUQVJHRVRfQVNTRU1C
TEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRh
dGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsKKyAgICBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBUk1SZWdpc3RlcnM6
OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7CiAg
ICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVy
QXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xlKGZwVGVtcFJlZ2lzdGVy
KTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24gc2V0LCBpbnN0cnVjdGlv
bnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBvZnRlbgpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0g
c3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9S
RUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNU
RVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRlZiBEVU1NWV9SRUdJU1RF
Ul9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVz
c1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQg
c2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAg
TWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAx
ZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAor
CisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGlt
bSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CmluZGV4IDRiOWE0OTU5ZmQ4ZmYzNTFkMjlkYWZjYTA5NzI0NTNiN2JjMTY3NjYuLjk2YmUzODM3
YTFhZjllNzI1ZDI1MjRmNGVmZTY4ZDYxYWFjYzIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMjMzLDIzICsy
MzMsMTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlv
bkhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9PU1JFeGl0
RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxIYW5kbGVyLm5hdGl2ZUNvZGUpOwogICAgICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQtPmp1bXAo
KTsKICAgICAgICAgVk0qIHZtID0gJm1fdm07CiAgICAgICAgIGppdC0+YWRkTGlua1Rhc2soCiAg
ICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFi
ZWwodm0tPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgICAgIH0pOwotI2Vsc2UKLSAgICAgICAgaml0LT5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX3ZtKSk7Ci0gICAgICAgIGppdC0+cHJlcGFyZUNh
bGxPcGVyYXRpb24obV92bSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBsb29rdXBFeGNl
cHRpb25IYW5kbGVyQ2FsbCA9IGppdC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBq
aXQtPmFkZExpbmtUYXNrKAotICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBqaXQtPmp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIobV92bSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGQyMTA0
MTc0MmJkNDk1YjY2ZWNhNDUwOGQ3M2I4ZDM4Y2FjZmYxNWMuLjUyOGQ0NzM4ZGE2N2FlMDFmNmM0
MjA5OGJkZDUzMWEzNGJjZTJiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5m
byhDb2RlQmxvY2sqLCBVbmxpCiAgICAgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpHZXRCeUlkICYmIHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
IHsKICAgICAgICAgLy8gRm9yIGl0ZXJhdG9yX25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJk
b250Q2xvYmJlckpTUiIgcmVnaXN0ZXIgZWl0aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENs
b2JiZXJKU1IpOwogICAgIH0KIAogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewpAQCAtNTI4LDI0
ICs1MjgsMjQgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21Vbmxpbmtl
ZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlU
YWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsK
LSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIGhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpyZXN1bHRK
U1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpHZXRCeVZhbDoKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQog
ICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwor
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IudGFnR1BSKCk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkK
ICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02MTksNyArNjE5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVj
dHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
R2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgcmVncy50aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
CiAgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnJlc3VsdEpTUi50YWdHUFIoKTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
ICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwpAQCAtNjQ0
LDcgKzY0NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5r
ZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
cmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAg
ICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCiAgICAgICAgICAg
ICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVH
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
IGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFz
ZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKaW5kZXggYWUzOGY2ZjdkMjVlNTA4YzkwYjI1OGE5MGYzNzMzZDI1MjBm
ODAyMy4uYTQ3NDViMDVkMWQ0ZjQ0ZjQ3MWQ0Y2ZhZDYwMGVlNDFhMTg0OTM2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2
LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQo
Y29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2suZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25l
IGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgp
KTsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1w
dHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAg
IGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50
cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBp
cyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSgpKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0g
ICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUg
Y29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjcz
LDEyICsyMzksMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25D
aGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRp
b25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRXhpdFRodW5rID0gdm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IpOwogICAgIGF1dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklU
VGh1bmtQdHJUYWc+KG9zckV4aXRUaHVuay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRo
R2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBj
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAg
ICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3
ICs0NDcsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3Bl
Y3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
cik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9y
aWdpbigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5r
T1NSRXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlm
IG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApp
bmRleCAzNjE3NDc3ODFmY2Q2ZTc5MTVlN2EyNTk2ODQ2NWQwN2I2OTFiMjllLi5hNTg3OTExZjg2
NjBmMTNkNDYwNDAzZTg4Y2NiMzk2NTVmOWExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0zMTMsNyArMzEzLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxpbmsoTGlua0J1ZmZlciYpOwogICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0
aE9TUihjb25zdCBPU1JFeGl0JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29t
cGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2
b2lkIGRpc2Fzc2VtYmxlKExpbmtCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKaW5kZXggOGUzYmM1M2Q1NzIzZjhiYTAxYjU2NjU2YzU4NGZmY2VkY2I2
NjRmNS4uODQyNDgwMmQ5NWY4MTBhOWZhM2VhMDQzNjY0NmFmN2FjYmUyZDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogCiAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4
Y2VwdGlvbkhhbmRsZXIgPSBqaXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0q
IHZtUHRyID0gJnZtOwogICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwg
Q29kZUxvY2F0aW9uTGFiZWwodm1QdHItPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAg
IGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BF
bnRyeUZyYW1lKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
dm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRk
TGlua1Rhc2soCi0gICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkZUTCwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQw
OWEyYTViNTM1ZDBkOS4uMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2
b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsQXJpdHlDaGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRv
RXhjZXB0aW9uSGFuZGxlciA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwot
I2Vsc2UKLSAgICAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAg
ICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNl
cHRpb24ubGluaygmaml0KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
ICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0Lmxv
YWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDEx
ICsxMDEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5
Q2hlY2ssIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVj
dG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5
Q2hlY2spKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtC
dWZmZXItPmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSkpOwotI2VuZGlmCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNh
bGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihh
cml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsobWFpblBhdGhKdW1wcywgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA5Y2I4MmM3ZTExYThl
ODA3ZWNkOGQ2YzFkZGQ2MzExMTBhMzYxY2UxLi4zZTdjZmYwYTI5OGQyZjI5MDAzNDlmMTYzNThh
NmUwYTk1ZGFiYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRl
ICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIk1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+
CkBAIC04NTMsNiArODU0LDM4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRD
b2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFNj
b3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiwgY29uc3QgY2hhciopOwogCisgICAgdm9p
ZCBlbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpIHsKKyAgICAgICAgLy8gU3Rhc2ggZnJhbWUgcG9pbnRl
ciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBwdXNoKFg4NlJl
Z2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAg
ICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYg
Q1BVKE1JUFMpCisgICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBv
biBwbGF0Zm9ybSIKKyNlbmRpZgorICAgICAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBvbiB0aGUg
c3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBlbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpIHsKKyAgICAgICAgLy8gUmVzZXQgc3RhY2sKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIC8vIFJlc3RvcmUgZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFk
ZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwor
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgcG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgICAg
ICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwor
I2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRp
ZgorICAgIH0KKwogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgQXJnTnVtPgogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZf
dDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90
PiBzaXplT2ZBcmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGY1N2E2ZTEzNDUw
NThmZGJlODQyMzhmMjI3Mzc2NTdkMDYzOTlhMGIuLjIwYzZkYjVhMmFjNDc5MGIwZGM4MzQxMjc1
NjA5ZTZkMjk2ZGY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAjZGVmaW5lIERFRklORV9TTE9XX09QKG5hbWUp
IFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCiAgICAgICAgIGlmIChtX2J5dGVjb2RlSW5kZXgg
Pj0gc3RhcnRCeXRlY29kZUluZGV4KSB7IFwKLSAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsg
XAorICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3Bh
dGhfIyNuYW1lKTsgXAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAogICAgICAg
ICB9IFwKICAgICAgICAgTkVYVF9PUENPREVfSU5fTUFJTihvcF8jI25hbWUpOyBcCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAKICNkZWZpbmUgREVGSU5FX1NMT1dD
QVNFX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKLSAgICAgICAgZW1p
dFNsb3dDYXNlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUp
OyBcCisgICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwK
ICAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKLXZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1YikKK3ZvaWQgSklUOjplbWl0
U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQ
YXRoRnVuY3Rpb24gc3R1YikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHN0
dWIpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc3R1Yik7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtNjU4LDkgKzY1OCw2IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuc3RyaWN0ZXEpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9wcm90b3R5cGVfb2YpCi0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChy
ZXNvbHZlX3Njb3BlKQotI2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNo
ZWNrX3RkeikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJvcGVydHlfa2V5
KQogICAgICAgICBkZWZhdWx0OgpAQCAtODU3LDkgKzg1NCw3IEBAIHZvaWQgSklUOjpjb21waWxl
QW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAg
ICAgICAgbV9hcml0eUNoZWNrID0gZW50cnlMYWJlbDsgLy8gTmV2ZXIgcmVxdWlyZSBhcml0eSBm
aXh1cC4KIAogICAgIEFTU0VSVChtX2ptcFRhYmxlLmlzRW1wdHkoKSk7Ci0gICAgCi0gICAgcHJp
dmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotICAgIAorCiAgICAgaWYgKG1fZGlzYXNz
ZW1ibGVyKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0RW5kT2ZDb2RlKGxhYmVsKCkpOwog
ICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgUENUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKQEAgLTkxMSwxMiArOTA2
LDEwIEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0
dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZgogCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBt
X25lYXJKdW1wcykgewogICAgICAgICBpZiAocmVjb3JkLnRhcmdldCkKQEAgLTEwMzcsMzUgKzEw
MzAsNiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkVmZm9ydAogICAgIHJldHVybiBmaW5hbGl6ZU9uTWFp
blRocmVhZChjb2RlQmxvY2spOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGlmICgh
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewotICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMpOwotCi0g
ICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCku
dG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxscy5h
cHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJG
cmFtZSkpKTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRp
b25DaGVja3MubGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhl
IFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1f
ZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIp
KSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVDo6ZG9NYWluVGhyZWFk
UHJlcGFyYXRpb25CZWZvcmVDb21waWxlKCkKIHsKICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3
ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1p
bmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IDI5N2YzY2E1ODI1ZjA0MzdkYTJmZjFkM2FkMWQxOTNjYzYzNmZi
NGEuLjAxMmIxNzBmZjE1ZmQ0ZmZiODZjN2NmZjQxYzAxMDUwZDk3NWY1ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMjc2LDggKzI3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suYXBwZW5kKGVtaXRF
eGNlcHRpb25DaGVjayh2bSgpKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLQogICAgICAgICB2b2lkIGFkdmFuY2VUb05leHRD
aGVja3BvaW50KCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KEp1bXApOwogICAgICAgICB2b2lkIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKQEAgLTYxNCw3
ICs2MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19h
cmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9w
dXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAKLSAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24p
OworICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKQEAgLTYyMiw3ICs2MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZh
dGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUpOwotICAgICAgICB2b2lkIGVtaXRIYXNQ
cml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
LCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlw
ZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdE5l
d0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY1OCwzOSArNjU2LDI5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVHZW5lcmF0b3IoVk0mKTsKIAogICAgIHByaXZh
dGU6Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIC8vIFRodW5rIGdlbmVy
YXRvcnMuCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVs
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1
dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9w
dXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
Jik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYpOworCiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJik7Ci0K
LSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9y
KFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdl
bmVyYXRvcihWTSYpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aHVua0lzVXNl
ZEZvck9wR2V0RnJvbVNjb3BlKFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBHbG9iYWxWYXIgYmVjYXVzZSBpdCBpcyBtb3JlIGVmZmljaWVudCB0byBl
bWl0IGlubGluZSB0aGFuIHVzZSBhIHRodW5rLgotICAgICAgICAgICAgLy8gUmVzb2x2ZWRDbG9z
dXJlVmFyIGFuZCBNb2R1bGVWYXIgYmVjYXVzZSB3ZSBkb24ndCB1c2UgdGhlc2UgdHlwZXMgd2l0
aCBvcF9nZXRfZnJvbV9zY29wZS4KLSAgICAgICAgICAgIHJldHVybiAhKHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBSZXNvbHZlZENsb3N1cmVWYXIgfHwgcmVzb2x2
ZVR5cGUgPT0gTW9kdWxlVmFyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0m
KTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQorICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9y
KFZNJik7CiAgICAgICAgIHRlbXBsYXRlIDxSZXNvbHZlVHlwZT4KICAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rKFZNJik7CiAgICAgICAgIHRlbXBsYXRlIDxSZXNvbHZlVHlwZT4KICAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVPcFJlc29s
dmVTY29wZVRodW5rKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRo
eUdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7CiAKICAgICAgICAgSnVt
cCBnZXRTbG93Q2FzZShWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRl
eCBmODY3NTgzMmE4N2NiZWRhYWYxNmJjYTg3MTVmOGIzNWNkNWFmOTMzLi44NDBmZjc2ZTVkOTY1
Y2ZiOTVhNjA3YTJiZDY2YjY2ZTFiYTViZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1MSwxOSArNDUxLDE5IEBAIHZvaWQgSklUOjplbWl0
X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9t
b2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCiAjZWxzZSAvLyBDUFUoWDg2XzY0KQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19w
YXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtOTI0LDcgKzkyNCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChnZW4uZW5kSnVtcExpc3QoKS5l
bXB0eSgpKTsKICAgICAgICAgQVNTRVJUKGdlbi5zbG93UGF0aEp1bXBMaXN0KCkuZW1wdHkoKSk7
Ci0gICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZGl2KTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBzbG93X3BhdGhfZGl2KTsKICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAyNDRiM2Zl
YjY5YjRhMGY0OWYwYmM0M2QxZTRhYjQ0OWEzMmU2Yjk3Li5lYmZhNDEwODMxNDBlMGJjZmUyZWNj
MGMwODA3NGMzOTMwZGVjZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
QEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgfQogICAgIH0pKCk7CiAKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVu
Y3Rpb24pOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1
bmN0aW9uKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBi
cmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTQz
NSw3ICs0MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwog
CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BS
KSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3Ro
ZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJldHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNTI2LDE0
ICs1MjYsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwog
CiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIG5leHRKU1IgPSBiYXNlSlNSOyAvLyBVc2VkIGFz
IHRlbXBvcmFyeSByZWdpc3RlcgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9uZXh0LCBuZXh0SlNSKTsKICAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0
eShuZXh0SlNSKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5z
dHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAg
ICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYykpKTsKIApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKICAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOwogCiAgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGl0ZXJDYWxsUmVzdWx0SlNSID0gZG9udENsb2JiZXJKU1I7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKaW5kZXggYzY3YmNlMDlmZmJjNjBlMjQzM2U2MjJlMzc4Mjc4Y2YyMDc0YjRiZS4uZjkzYTM2
OGZmNmQ4ZTI4OTRiZjYxMTVlYzkzMzM1Mzk3MzkyOTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRh
SUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YgogCiAgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2Ny
YXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIp
OwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgo
SklUJiBqaXQsIHVuc2lnCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
OjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8s
IHN0dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTIxNyw4ICsyMTcs
OCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0
UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YgogCiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BS
OwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsK
IAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRv
IGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNjI5
MjljMGMyNDg0ZmI5Y2EwZWM2NjFiYjdjMGE3ZGU2NDlmYzk4Yy4uMmI3NjIxYjk2YzljMmJlZTgz
OTBkN2U3ZDk2MDg5Yzc3MzY4OWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDksNDYgKzQ5LDEyMiBAQCBlbnVt
IGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90
OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKy8vIFJlZ2lz
dGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQp
CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5m
bzo6anNSZWdUMzIgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUklu
Zm86OmpzUmVnVDEwIH07CisjZW5kaWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCitu
YW1lc3BhY2UgRmFzdFBhdGggeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUntKU1JJ
bmZvOjpyZXR1cm5WYWx1ZUpTUn07CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdU
MiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2
IH07Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSe0dQUkluZm86OnJlZ1Q3fTsKK2NvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUntHUFJJbmZvOjpyZWdUNn07CiAjZW5kaWYKK3N0YXRpY19h
c3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVpcmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8g
U2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xvd1BhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJl
Z1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owor
Y29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
I2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BS
KSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3Nl
bWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xv
dyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVy
cyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwog
I2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0
aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKK2NvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1J7SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1J9OworI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFJ7R1BSSW5mbzo6cmVnVDd9Owor
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSe0dQUkluZm86OnJlZ1Q2fTsKICNlbmRpZgorc3Rh
dGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQ
Uiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0
aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJl
ZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Citjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBH
UFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BS
LCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBj
YWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zl
cmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiwg
ZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30K
IH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJz
IHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUklu
Zm86OmpzUmVnVDEwIH07Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycwor
bmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywg
R1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYg
fTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNl
SlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9y
IERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBT
bG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVn
VDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBl
cnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIp
Oworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJyZXF1
aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKQEAgLTEwMSw3ICsxNzcsNyBAQCBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IEdQUkluZm86OnJlZ1QyOwogc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwogc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7CiBzdGF0aWNfYXNzZXJ0
KHJlc3VsdEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IpOwotc3Rh
dGljX2Fzc2VydChzdHViSW5mb0dQUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUik7CitzdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUik7CiAKIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gxID0gR1BSSW5mbzo6cmVnVDM7CiBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMiA9IEdQUkluZm86OnJlZ1Q0OwpAQCAtMTUwLDggKzIyNiwxMiBAQCBzdGF0aWNfYXNz
ZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
KTsKIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7CisvLyBSZWdpc3Rl
cnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwogY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworCisvLyBGYXN0IHBh
dGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKQEAgLTE1OSw3NyAr
MjM5LDE3MiBAQCBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZv
OjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpT
UiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OworY29uc3RleHByIEpTVmFsdWVS
ZWdzIGRvbnRDbG9iYmVySlNSe0dQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2Vu
ZGlmCi1zdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOworc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
UiwgZG9udENsb2JiZXJKU1IpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93
IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChi
YXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBw
cm9wZXJ0eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQog
fQogCiBuYW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNW
QUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9
OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5m
bzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25h
bWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNl
bmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0
aGlzSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7
Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsK
K2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2Nv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lm
IFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092
ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBw
cm9wZXJ0eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19h
c3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwg
dG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVn
aXN0ZXJzIHsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsg
SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsK
K2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUiB9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OwogfQogCiBu
YW1lc3BhY2UgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9u
IGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsK
K2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cisj
ZW5kaWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGgg
eworI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdz
IHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
R1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29k
ZSBzaXplIG9uIEFSTV9USFVNQjIKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBl
cnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIp
LCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8v
IFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJl
Z1QyIH07Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
K2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q3IH07Citjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
KyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCB2YWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiks
ICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1i
bHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3Bl
cmF0aW9uIik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsK
Ky8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShK
U1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qw
IH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9
OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHBy
IEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BS
SW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKICNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSBy
ZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHVi
SW5mb0dQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5
IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUkluZm86OnJlZ1Q1CisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikKKyAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb2YgcmVnaXN0ZXJz
IG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMK
KyAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3Ro
ZXIgSlNWQUxVRTMyXzY0CisgICAgR1BSSW5mbzo6cmVnVDgKKyNlbmRpZgorfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1Is
IHByb2ZpbGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3Bl
cmF0aW9uIik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
cyB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuawor
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuawor
CituYW1lc3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYnJhbmRKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJ
bmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQoYnJhbmRKU1IgPT0gQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAicmVxdWly
ZWQgZm9yIERhdGFJQyIpOworfQorCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRo
IHRodW5rCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBz
bG93IHBhdGggdGh1bmsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KIH0KIAogY2xhc3MgSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggMGIzYjVmY2Q5M2FiMTJlZDQ0MDYyZTJlYmVlNjhjODZmNGRmZjJlZC4uOTY3MWVjZTA3OGM4
YmNlOTg3YTBlZWY0NThjNjVkYjIyM2U0ZGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC00NTEsMjQgKzQ1MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
ZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsK
LQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVl
KTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVj
dEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAg
IGFkZEp1bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwg
ZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9i
YWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJn
ZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9y
KFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00
NzcsMzEgKzQ2NCwyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2
YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9h
ZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
cmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAg
ICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVl
OwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZG
YWxzZXkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1Qw
LCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBk
b25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAg
YXV0byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gx
R1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0z
MigwKSwgcmVnVDApOworICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwog
Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCAr
NjM0LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKdHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3Jh
dGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwg
dmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1Qz
Mik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hU
ZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjp2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsg
Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAv
IEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC02NzksMzEgKzY0NywyNSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYg
dm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3Nl
cnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1Qy
OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNv
bWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAg
aml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxP
YmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2Rl
QmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1
dG8gaXNUcnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwg
c2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZElt
bTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzVHJ1
dGh5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0K
LSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRy
dXRoeSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBS
ZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIp
OworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlzVHJ1dGh5Lmxp
bmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHZhbHVlSXNUcnV0aHkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKQEAgLTczNCw1NyArNjk2LDU1IEBAIHZvaWQgSklUOjpl
bWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQg
SklUOjplbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4o
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93
LCBnbG9iYWxPYmplY3RHUFIsIHZhbHVlSlNSKTsKLSAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKCkpOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1
bWVudEdQUjE7Ci0KICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25UaHJvdyk7CisKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKHRocm93blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUikpOworCisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1
ZUdQUik7CisKICAgICBlbWl0TmFrZWROZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3df
aGFuZGxlckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhy
b3duVmFsdWVHUFIgPSBhcmd1bWVudEdQUjE7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvblRocm93KTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9i
amVjdEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CiAgICAgCisgICAg
Ly8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKIAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJT
ID4gMAotICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQUjApOwot
ICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihhcmd1
bWVudEdQUjApOworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0g
Z2xvYmFsT2JqZWN0R1BSOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwg
c2NyYXRjaEdQUik7CisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BSKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhy
b3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5s
aW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25UaHJv
dykpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC0xMjUxLDc3ICsxMjEx
LDc3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKICAgICAv
LyBFdmVuIHRob3VnaCBDVEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29u
c3RhbnQKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1
bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3Jl
YXNpbmcgR0MgcHJlc3N1cmUuCi0gICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9j
ay0+bnVtVmFycygpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBzaXplX3Qg
Zmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxS
ZWdpc3RlcnMoKTsKLSAgICBpZiAoZmlyc3QgPCBjb3VudCkKLSAgICAgICAgbW92ZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7Ci0gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0
OyBqIDwgY291bnQ7ICsraikKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdUMTApOwogCi0gICAgbG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVy
KHJlZ1QwKTsKLQotICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7Ci0jZWxzZQogICAg
IEFTU0VSVChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgPT0gMCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIHVuc2lnbmVkIGxvY2Fs
c1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNl
QXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVC
bG9jay0+bnVtVmFycygpOworICAgIHVpbnQzMl90IGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29k
ZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobG9jYWxzVG9Jbml0IDwgY291bnQpOwotICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRH
UFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1QwOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7CisKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2Nh
bHNUb0luaXRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihvcF9l
bnRlcl9oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisvLyAgICBzaXplX3QgZmlyc3QgPSBDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsK
Ky8vICAgIGlmIChmaXJzdCA8IGNvdW50KQorLy8gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNV
bmRlZmluZWQoKSwganNSZWdUMTApOworLy8gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwg
Y291bnQ7ICsraikKKy8vICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7CisvLworLy8gICAgbG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKKy8vICAgIGVtaXRXcml0ZUJhcnJp
ZXIocmVnVDApOworLy8KKy8vICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7CiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZS
ZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rl
cik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwogICAgIC8vIG9w
X2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9mZnNldCAwLgogICAgIGppdC5zdG9yZTMyKFRy
dXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgY29uc3RleHByIEdQ
UlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1QwOyAvLyBJbmNvbWluZwogCi0gICAgc2l6ZV90
IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1Zp
cnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChzdGFydExvY2FsKS5vZmZzZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQo
c3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGppdC5z
dWI2NChpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOwotCi0gICAgaml0Lm1v
dmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHVuZGVmaW5l
ZEdQUik7Ci0gICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOwotICAgIEp1bXAgaW5pdERv
bmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsK
ICAgICB7Ci0gICAgICAgIGppdC5zdG9yZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUluZGV4KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpdGVyYXRvckdQUiwgVGltZXNPbmUpKTsKLSAgICAgICAg
aml0LnN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwot
ICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9j
YWxzVG9Jbml0R1BSID0gcmVnVDE7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIg
PSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpz
UmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIs
IGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAg
ICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VS
VChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3Rlcikp
LCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5zdWJQdHIoaXRlcmF0b3JHUFIsIGxvY2Fsc1Rv
SW5pdEdQUiwgZW5kR1BSKTsKKyAgICAgICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmlu
ZWQoKSwgdW5kZWZpbmVkSlNSKTsKKworICAgICAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVs
KCk7CisgICAgICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFs
LCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKKyAgICAgICAgeworICAgICAgICAgICAgaml0LnN0b3Jl
VmFsdWUodW5kZWZpbmVkSlNSLCBBZGRyZXNzKGl0ZXJhdG9yR1BSKSk7CisgICAgICAgICAgICBq
aXQuc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwor
ICAgICAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgICAgICB9CisgICAgICAgIGluaXRE
b25lLmxpbmsoJmppdCk7CiAgICAgfQotICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAgICAv
LyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChjYW5CZU9wdGltaXplZEdQUiwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpKTsKICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3Vt
ZW50R1BSMSk7CiAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJp
ZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKIAotICAgIGppdC5tb3Zl
KGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7IC8vIHNhdmUu
CisgICAgaml0LnB1c2goY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyBzYXZlIChjYWxsIGFyZ3VtZW50
cyBiZWxvdyBhcmUgYWxsIGluIHJlZ2lzdGVycywgc28gb2sgdG8gc3RhY2sgdGhpcykKICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgp
Pigmdm0sIGFyZ3VtZW50R1BSMSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOworICAgIGppdC5wb3AoY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlCiAKLSAg
ICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIp
OyAvLyByZXN0b3JlLgotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJU
YWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbi5saW5rKCZqaXQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMzQ4LDExICsx
MzA4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2Vu
dGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTEzNjMs
NyArMTMxOSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRpZgogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRl
cl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMTYwNyw1NyArMTU2Miw0MyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIGFyZ3VtZW50R1BSMCk7Ci0jZWxzZQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxl
ckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZgogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2
UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0
ZXIpOwotI2VuZGlmCisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1
bWVudEdQUjA7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFy
Z0dQUjA7IC8vIEluY29taW5nCiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisg
ICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
YXJndW1lbnRHUFIwOwotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgY29kZUJsb2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVC
bG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICAKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVy
czo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hl
Y2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJw
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7Ci0gICAgYXV0
byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxl
RXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggY2FjNDBjZWQ4MmJk
OTc3Mjk2NWRlZWFhMTA5M2NjNDVmMjlkMjkxOS4uOTUyOThhZmNkMDY2NmQ1NWE5ODVjZDU4ZWZl
ZmZiMTc5MTUxZTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0
Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRo
OjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBA
IC0xMDEsNTEgKzEwMSwyMyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNv
bnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGlmICghaGFz
QW55U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzRKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgc3RhdGljX2Fzc2Vy
dCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVybGFwcyhhcmc0SlNSKSk7
Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
UiwgYXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJn
M0pTUiwgYXJnNEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBhbHJlYWR5IHVz
ZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKSA9PSByZWdU
MSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsK
KworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBp
cyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fz
c2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICAvLyBDYWxsIHNsb3cg
b3BlcmF0aW9uCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFs
T2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmpl
Y3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5
VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRp
b24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHBy
b3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGpp
dC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTIwNCw3ICsxNzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpy
ZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJ
bmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAs
NTUgKzIwMywzMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxs
T3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxy
ZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BS
MSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3Rh
dGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJu
VmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhl
IHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgpAQCAtMjg2LDM0ICsyMzQsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAg
ICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5l
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQg
b2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IHJlZ1QxOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlz
QVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEp
OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJy
YW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9j
YXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0zMjMsNyArMjcy
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
YmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpA
QCAtMzU0LDQ2ICszMDMsMjIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2Jy
YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKIHsKICAgICBVTlVT
RURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNldFByaXZhdGVC
cmFuZD4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25T
ZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0
ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEg
YWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVu
Y3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6
QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTQwNiw3ICszMzEs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFu
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsK
QEAgLTQyOCw0OSArMzUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrUHJp
dmF0ZUJyYW5kPigpOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZSk7Ci0KLSAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9w
cml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRy
YWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTQ4NiwxNiAr
Mzg2LDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5
SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwogICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2
YWx1ZSwgdmFsdWVKU1IpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKLSAgICBl
bWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQ
UigpLCBwcm9maWxlR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
CisKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1Iu
cGF5bG9hZEdQUigpLCAvKiBzY3JhdGNoR1BSOiAqLyBzdHViSW5mb0dQUik7CiAKICAgICBKSVRQ
dXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6
OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTUyOSw3NiArNDMwLDI4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9w
dXRfYnlfdmFsX2RpcmVjdDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlOwotICAgIEVDTUFN
b2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwotCi0gICAgYXV0byBsb2FkID0gWyZd
KGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAg
ICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotICAgICAgICB2YWx1ZSA9IGJ5dGVj
b2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKLSAg
ICB9OwotCi0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkKGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4oKSk7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCA1PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwotICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50
b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQ
dXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVH
UFIpOwotICAgIGVsc2UKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4oKSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6
Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9w
ZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZh
bHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1
ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFs
c1ttX3B1dEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIC8v
IFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3QgcGF0aCBhbmQgbm90IGNsb2JiZXJlZC4K
LSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICAvLyBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyB2
YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHJl
Z1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7CiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
KworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0
ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxp
bmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmln
aHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCkBAIC02MDYsMzkgKzQ1OSwzOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlm
ICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0b2luID0gZGVjbHR5cGUo
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7Ci0gICAgewotICAg
ICAgICBSZWdpc3RlclNldCB1c2VkKGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJv
ZmlsZUdQUik7Ci0gICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNCkpOwotICAgICAg
ICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDUpKTsKLSAgICB9CisgICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9m
aWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpn
bG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOwogCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlz
PwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVy
YXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxT
dHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlR1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
Rm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRvaW4+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9i
YWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIs
IHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0
LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGpp
dC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlv
biBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVw
YXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjUwLDcgKzUwMiw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNl
SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwog
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2ICs1MzEsMjggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmll
bGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92
YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlK
U1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxz
ZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgIEpJVFB1dEJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CiAKLSAgICAvLyBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJl
Z1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5l
cmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAg
LTczNiwzNCArNTYwLDQxIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5
VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CiAKKyAgICBqaXQuZW1pdENUSVRodW5r
UHJvbG9ndWUoKTsKKworICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3Jpbmcg
dGhpcz8KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlv
bgogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
LQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmlu
ZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKKyAg
ICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBuZWNlc3NhcnkgZm9yIHNl
dHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90IGNsb2JiZXIgZ2xvYmFs
T2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2UgaGFybWxlc3MuCisgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQUik7CisgICAgaml0LnNl
dHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJbmZvR1BSLAor
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwg
c3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJl
dCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKQEAgLTg0Miw5ICs2NzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7CiAKICAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTg3NSw2MiArNzA2LDM3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRz
W21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxvYWRHbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJn
dW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2Vj
bWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVh
bihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVk
IGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5l
IEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0
IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgpAQCAtOTM4LDMzICs3NDQsMzggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJl
Z2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBvaW50IG9m
IHN0b3JpbmcgdGhpcz8KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBh
cmd1bWVudEdQUjQ7Ci0KKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIp
OwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7Cisg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1l
bnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVy
YXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNS
KTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQot
ICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNl
Ci0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CkBAIC05NzUsOSArNzg2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpy
ZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRj
aEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyAr
ODIxLDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwotCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlW
YWxJbmRleCsrXTsKIAorICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6ZWNtYU1vZGVHUFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0
aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFN
b2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
ZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIo
KSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hC
b29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdl
bmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBC
YXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRo
ZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KQEAgLTEwNzQsMzMgKzg1OSwzOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGpp
dC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9p
bnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQ
UiA9IGFyZ3VtZW50R1BSNDsKLQorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQ
Uik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVw
QXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xv
dyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVu
dEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZh
bHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAg
ICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUo
KTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1w
IGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1
bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtMTExMSw3ICs5MDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRo
OjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJh
c2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJl
Zyk7CkBAIC0xMTM4LDQ3ICs5MjgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwot
Ci0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRl
eCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigp
OworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMjsKICAgICBtb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0
ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFy
Z3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09
IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9w
ZXJ0eUdQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTE5Myw3ICs5
NjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMjE5
LDQ3ICs5ODgsMjYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5SWREaXJlY3Q+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0g
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0
PigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7
CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBh
cmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVy
dHlHUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTEyNzQsMTIg
KzEwMjIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7Ci0gICAgCisKICAgICBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgbG9hZDhGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om9mZnNldE9mTW9kZU1ldGFkYXRhKCkgKyBHZXRCeUlkTW9kZU1ldGFkYXRhOjpv
ZmZzZXRPZk1vZGUoKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhN
b2RlID0gYnJhbmNoMzIoTm90RXF1YWwsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90
PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSwgc2NyYXRjaEdQUik7CkBAIC0xMzEyLDUxICsx
MDYwLDY5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJh
c2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZElu
ZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCit7CisgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQor
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KKyAgICAvLyBERkcv
RlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3Rz
LCB3aGljaCBtYXkgbm90IG1hdGNoCisgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KKyAg
ICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBz
dG9yaW5nIHRoaXM/CisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOworICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBm
b3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxs
KEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxv
Z3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAg
SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfQ2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhU
aGlzPigpOwpAQCAtMTM2OCw3ICsxMTM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWUmVnLCB0aGlzSlNSKTsKQEAgLTEzOTUsOTYgKzExNjEs
MzMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKLXsKLSAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCi0gICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhl
IHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgotICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRv
IG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKLSAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0KLSAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFy
Z3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
Z2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9i
YWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCi0gICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAg
aml0LnJldCgpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlz
PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlz
SW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3RoaXNW
YWx1ZSwgdGhpc0pTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgdGhpc0pTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsK
KworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0K
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcx
IGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5l
R2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQ
UjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRv
cihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRo
aXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBi
ZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2Jh
bE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAt
MTQ5MiwzNSArMTE5NSwzNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwor
CisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodGhpc0dQ
UiA9PSBhcmd1bWVudEdQUjEpOwotCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3Bl
cnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRl
ZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5j
YWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGpp
dC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlv
biBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM2
LDggKzEyNDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjY2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgcmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBz
byB3ZSBuZWVkIHRvIGNvbnNlcnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsK
ICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRl
IG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgog
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEyNzUsMzEgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0g
ICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsr
XTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0g
ICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZh
bHVlSlNSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8g
YXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQg
bWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFp
bGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTMwNywzNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9w
dGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBU
T0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDE7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJy
YW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2Fs
bCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtMTY5MSw0OSArMTM3MywyOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
OwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRl
eCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIC8v
IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3
aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVk
LgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRo
dW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1
cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBD
YWxsKCkpOwpAQCAtMTc3Nyw1MyArMTQzOCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEluQnlWYWw+KCk7Ci0KLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2lu
QnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpT
UiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxT
bG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFI0OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3Vt
ZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5C
eVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAg
IC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciB3aWxsIGRvIGV4YWN0
bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdl
IG5lZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNh
dGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE4NTgsNDkgKzE0OTMsMjYgQEAgdm9pZCBKSVQ6OmVtaXRI
YXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0
dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5
cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5
VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3Bl
cnR5SlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJ
bkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9
IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0g
ICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eU9yQnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE5MTIsMTIgKzE1MjQsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5t
X2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNs
b3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQ
cml2YXRlTmFtZSk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5MjYsMTIgKzE1MzYsMTAgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0
ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwotICAgIGVtaXRIYXNQ
cml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI1OTAsMTMgKzIxOTgsOSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09
IE1vZHVsZVZhcikgewogICAgICAgICAvLyBJZiBhbnkgbGlua2VkIENvZGVCbG9jayBzYXcgYSBN
b2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtlZCBDb2RlQmxvY2tzIGFyZSBndWFyYW50ZWVkCiAgICAg
ICAgIC8vIHRvIGFsc28gc2VlIE1vZHVsZVZhci4KLSAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19zdHJp
Y3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3Jl
YWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKICAgICB9IGVsc2UgewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAg
bG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3VtZW50R1BSMCwgY3VycmVudEluc3RydWN0aW9uKTsKLSNl
bHNlCiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTI2MDYs
MTEgKzIyMTAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmCiAgICAgfQogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTI2MTksNDMgKzIyMjEsMzQg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNo
KFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1Jl
Z2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIg
R1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7IC8vIEluY29taW5nCisgICAgY29u
c3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQUjM7IC8vIE9ubHkgdXNlZCBh
cyBzY3JhdGNoIHJlZ2lzdGVyCiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3JpbmcgdGhpcz8KKyAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAg
aml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxv
Y2tHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25z
UmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwogICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKLQogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0
LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQot
ICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGpp
dC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0g
ICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8g
VGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0
Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9w
VGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0
Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRf
dG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1
bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTI3NDMs
NyArMjMzNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZUNhc2VzLmFwcGVu
ZChqdW1wKCkpOwogCiAgICAgZ2VuZXJpY0Nhc2VzLmxpbmsodGhpcyk7Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9n
ZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAKICAgICBkb25lQ2FzZXMubGluayh0aGlzKTsKQEAgLTI4MDYsNyArMjM5
OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgb3BlcmF0aW9uQ2FzZXMubGluayh0aGlzKTsK
IAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOwogICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0yOTM2LDcgKzI1MjksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7CiAK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Z2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmso
dGhpcyk7CkBAIC0yOTU0LDIxICsyNTQ3LDIxIEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0CiAK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiop
CiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjU3MCwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5f
YnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19w
YXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2
YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1
MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZN
JiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5
ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4
MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRo
dW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RL
ZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9u
S2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9
CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwg
Y29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhh
c2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAx
NmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwg
VGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIo
Vk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSog
aG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRj
OWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uNWNlMmFmZjA0MTFlZDJlYTdiOGMxZGE0NWJhNGMzNjEw
NTljYjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENh
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApA
QCAtMzYsMTUgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKICAgICBWTSYg
dm0gPSBtX2ppdC0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1faml0LT5t
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5kZXgpOwogCi0gICAgVU5VU0VEX1ZBUklB
QkxFKG1fcGMpOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJ
bmZvOjphcmd1bWVudEdQUjE7CiAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5l
YXJDYWxsKHZtLmppdFN0dWJzLT5jdGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0
aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwpAQCAtNTYsNDQgKzUzLDMxIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpn
ZW5lcmF0ZVRodW5rKFZNJiB2bSwgU2xvCiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGpp
dC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAorICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBv
aW50IG9mIHN0b3JpbmcgdGhpcz8KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKIAorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLQotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0K
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1lbnRHUFIxID09
IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKICAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHVi
KHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAg
IC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCmluZGV4IDg5OWEy
OTAwZmVkZTM3ZGQwZWE1ZTZmMmI5MDY3ZDY1YjAyZTczNjAuLjM0MGM5ZWVjYTZlODI2NTJhOTM2
YWUwOTY0YjA0NDNmNjM0MTJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0
aENhbGwuaApAQCAtMzUsNTAgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKSVRT
bG93UGF0aENhbGwgewogcHVibGljOgotICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24pCisg
ICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVu
Y3Rpb24pCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fc2xvd1BhdGhGdW5jdGlv
bihzbG93UGF0aEZ1bmN0aW9uKQotICAgICAgICAsIG1fcGMocGMpCiAgICAgewogICAgICAgICBh
c3NlcnRJc0NGdW5jdGlvblB0cihzbG93UGF0aEZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICB2b2lkIGNhbGwoKTsKICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVRodW5rKFZNJiwgU2xvd1Bh
dGhGdW5jdGlvbik7CiAKLSNlbHNlIC8vIG5vdCBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQot
ICAgIEpJVDo6Q2FsbCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIG1faml0LT51cGRhdGVUb3BDYWxs
RnJhbWUoKTsKLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+
YWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTE2KSwgTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1f
aml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIxKTsKLSAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50
R1BSMik7Ci0jZWxzZQotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZElt
bVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjEpOwotI2VuZGlmCi0gICAgICAgIEpJVDo6Q2Fs
bCBjYWxsID0gbV9qaXQtPmFwcGVuZENhbGwobV9zbG93UGF0aEZ1bmN0aW9uKTsKLQotI2lmIENQ
VShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMCk7
IC8vIHZQQwotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDEpOyAvLyBjYWxsRnJhbWUgcmVn
aXN0ZXIKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QwID09IEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QxID09IEdQUkluZm86
OnJldHVyblZhbHVlR1BSMik7Ci0jZW5kaWYKLQotICAgICAgICBtX2ppdC0+ZXhjZXB0aW9uQ2hl
Y2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotCiBwcml2YXRlOgogICAgIEpJVCogbV9qaXQ7CiAgICAgU2xvd1BhdGhG
dW5jdGlvbiBtX3Nsb3dQYXRoRnVuY3Rpb247Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fcGM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDhlYjU3YzA5N2IzMGJiNjljOWEyZWFhZGFjODM5ZjNi
ZWRlMmM2OTcuLjAzYzQ5ZDY2NzRiZWMwMmI5NDkwMDc1Mzc3ZGI0NmViNjg4N2ZhMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTQ5LDkg
KzQ5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKLQogICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC01OSw4ICs1Nyw2IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKQEAgLTc3LDggKzczLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5l
cmEKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0K
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNl
cnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKQEAgLTEwMSw4ICs5NSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9wVGh1
bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7
CkBAIC0xMTMsOCArMTA1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICAvLyBFeGNlcHRpb24g
ZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNl
cnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGpp
dC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlmIENQVShB
Uk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBl
cnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Cisj
ZWxpZiBDUFUoTUlQUykKKyAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNl
bHNlCisjICAgICAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYK
ICAgICB9CiAKQEAgLTEyMyw4ICsxMTksMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKICNpZiBDUFUoWDg2XzY0KQogICAg
ICAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wb3BQYWlyKENDYWxs
SGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVy
KTsKKyNlbGlmIENQVShNSVBTKQorICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7
CisjZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgogI2Vu
ZGlmCiAgICAgfQogICAgIGppdC5yZXQoKTsKQEAgLTE0Myw4ICsxNDMsNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJDaGVja0V4Y2VwdGlvbiIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0KIHRlbXBsYXRlPHR5cGVuYW1lIFRhZ1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRl
clZhbGlkYXRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBl
IHRhZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmlu
ZGV4IGE5ZmVlZWE5MjRhZTAwNzhkODQ1MWUxNzJjNGM0OTQ1ZGYxZDVlZTEuLjEwNTQ5MTA0ZWY2
MjBlNzgyOWYwYjRhYmNhYmFlZGM0OTczNWEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtMzgsMTMgKzM4LDggQEAgZW51bSBjbGFzcyBDYWxs
TW9kZTsKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xh
c3MgVk07CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJh
Y2tHZW5lcmF0b3IoVk0mKTsKLQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSYp
OwpAQCAtODIsOSArNzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHRydW5jVGh1bmtHZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYpOwogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDQy
Y2FhNTc1ZWM4ZmUyZjAxODgyNzc5YTRiNDMzMWJkYWNiMjdiZmYuLmNkZjhjNzczNWFhNmZlZGY0
ZTM3NzRkYTA2NmZkNzQyYjJmZjNhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODM5
LDE0ICs4MzksNiBAQAogI2RlZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEK
ICNlbmRpZgogCi0jaWYgQ1BVKEFSTTY0KSB8fCAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1Mp
KQotLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIHRodW5rcyBjYW4gdXNlIHVwIHRvIDYg
YXJndW1lbnQgcmVnaXN0ZXJzLCBhbmQKLSAgIG1ha2UgdXNlIG9mIEFSTTY0IGxpa2UgZmVhdHVy
ZXMuIEZvciBub3csIHdlJ2xsIG9ubHkgc3VwcG9ydCB0aGVtIG9uIHBsYXRmb3JtcwotICAgdGhh
dCBoYXZlIDYgb3IgbW9yZSBhcmd1bWVudCByZWdpc3RlcnMgdG8gdXNlLgotKi8KLSNkZWZpbmUg
RU5BQkxFX0VYVFJBX0NUSV9USFVOS1MgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVf
QklORElOR19JTlRFR1JJVFkpICYmICFPUyhXSU5ET1dTKQogI2RlZmluZSBFTkFCTEVfQklORElO
R19JTlRFR1JJVFkgMQogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="471160"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445870</attachid>
            <date>2021-12-03 10:26:26 -0800</date>
            <delta_ts>2021-12-03 11:11:55 -0800</delta_ts>
            <desc>WIP - remove unused arguments</desc>
            <filename>bug-233822-20211203182625.patch</filename>
            <type>text/plain</type>
            <size>188129</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZWRjMmM5MDlhNjFjNDlkMjk4MmJkM2JkOTUyOTNlM2NmNDI5Y2ZjLi5lZDJmZGNkZjY3YmIyNjNj
Nzg2OTBjZTEwYzhiNDY2OTE5NjIwNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjEtMTItMDMgIEdlemEgTG9yZSAgPGdlemFsb3JlQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3Jtcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnN1YlB0cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lzdGVy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmg6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd0Nhc2VDYWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6Cisg
ICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgICog
aml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRh
SUNGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
amZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1
ZUlzVHJ1dGh5R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToK
KyAgICAgICAgKEpTQzo6SklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2VudGVyKToKKyAgICAgICAgKEpTQzo6SklUOjpvcF9lbnRlcl9o
YW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja190
cmFwcyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRv
cik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJpdmF0ZVNsb3cp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eSk6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVRTbG93UGF0aENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENhbGw6Omdl
bmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpT
Qzo6SklUU2xvd1BhdGhDYWxsOjpKSVRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgICogaml0
L1RodW5rR2VuZXJhdG9ycy5oOgorCiAyMDIxLTEyLTAyICBHZXphIExvcmUgIDxnbG9yZUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIEdlbmVyYXRlZCBjb2RlIHNpemUgcmVkdWN0aW9ucyBm
b3IgYmFzZWxpbmUgSklUIChhbGwgYXJjaGl0ZWN0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDBkMDE1YjdjZjM1MDJl
NGJkZWUxZjIxZjA2ZGY1NzU2N2I1ZGI4Mi4uOTQzMWFkNDY3NGFkZGFlYmM4MWFlM2ZhZmNlY2Jk
ODRjYzZmZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMi0wMyAgR2V6YSBMb3JlICA8
Z2V6YWxvcmVAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBvcnQgRVhUUkFfQ1RJX1RIVU5L
UyB0byBhbGwgcGxhdGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM4MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIxLTExLTI5ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBB
ZGQgcnVudGltZSBmbGFnIGZvciBMYXllci1iYXNlZCBTVkcgZW5naW5lIChMQlNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDY4
MTA1YmQxYjQ3YzVmYTA2ZmQzNWIxOTUzMWIwMjVkZjViMjIyNzYuLjk2ZTA0MzIyM2QzY2Y3YjFh
OTVmYmJkYmQ4MDA4Mzk0MjVhZmQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0LDIyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9p
ZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0
cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0xMDA3LDEyICsxMDE3LDIy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IDI5ZGZmYzhiMzU2NjBmZWRiMTI3MmEzMzgyYTUyMWY1YWIyMTExYjUuLjk2OGFhMDgy
YWI0YmQxMmMyMzFjOGQ2M2UyMjU1ZTFlODAwMTgzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zOCwxMCAr
MzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIgPSBUQVJHRVRfQVNTRU1C
TEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRh
dGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsKKyAgICBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBUk1SZWdpc3RlcnM6
OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7CiAg
ICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVy
QXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xlKGZwVGVtcFJlZ2lzdGVy
KTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24gc2V0LCBpbnN0cnVjdGlv
bnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBvZnRlbgpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0g
c3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9S
RUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNU
RVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRlZiBEVU1NWV9SRUdJU1RF
Ul9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVz
c1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQg
c2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAg
TWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAx
ZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAor
CisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGlt
bSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CmluZGV4IDRiOWE0OTU5ZmQ4ZmYzNTFkMjlkYWZjYTA5NzI0NTNiN2JjMTY3NjYuLjk2YmUzODM3
YTFhZjllNzI1ZDI1MjRmNGVmZTY4ZDYxYWFjYzIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMjMzLDIzICsy
MzMsMTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlv
bkhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9PU1JFeGl0
RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxIYW5kbGVyLm5hdGl2ZUNvZGUpOwogICAgICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQtPmp1bXAo
KTsKICAgICAgICAgVk0qIHZtID0gJm1fdm07CiAgICAgICAgIGppdC0+YWRkTGlua1Rhc2soCiAg
ICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFi
ZWwodm0tPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgICAgIH0pOwotI2Vsc2UKLSAgICAgICAgaml0LT5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX3ZtKSk7Ci0gICAgICAgIGppdC0+cHJlcGFyZUNh
bGxPcGVyYXRpb24obV92bSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBsb29rdXBFeGNl
cHRpb25IYW5kbGVyQ2FsbCA9IGppdC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBq
aXQtPmFkZExpbmtUYXNrKAotICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBqaXQtPmp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIobV92bSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGQyMTA0
MTc0MmJkNDk1YjY2ZWNhNDUwOGQ3M2I4ZDM4Y2FjZmYxNWMuLjUyOGQ0NzM4ZGE2N2FlMDFmNmM0
MjA5OGJkZDUzMWEzNGJjZTJiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5m
byhDb2RlQmxvY2sqLCBVbmxpCiAgICAgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpHZXRCeUlkICYmIHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
IHsKICAgICAgICAgLy8gRm9yIGl0ZXJhdG9yX25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJk
b250Q2xvYmJlckpTUiIgcmVnaXN0ZXIgZWl0aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENs
b2JiZXJKU1IpOwogICAgIH0KIAogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewpAQCAtNTI4LDI0
ICs1MjgsMjQgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21Vbmxpbmtl
ZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlU
YWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsK
LSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIGhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpyZXN1bHRK
U1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpHZXRCeVZhbDoKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQog
ICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwor
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IudGFnR1BSKCk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkK
ICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02MTksNyArNjE5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVj
dHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
R2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgcmVncy50aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
CiAgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnJlc3VsdEpTUi50YWdHUFIoKTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
ICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwpAQCAtNjQ0
LDcgKzY0NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5r
ZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
cmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAg
ICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCiAgICAgICAgICAg
ICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVH
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
IGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFz
ZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKaW5kZXggYWUzOGY2ZjdkMjVlNTA4YzkwYjI1OGE5MGYzNzMzZDI1MjBm
ODAyMy4uYTQ3NDViMDVkMWQ0ZjQ0ZjQ3MWQ0Y2ZhZDYwMGVlNDFhMTg0OTM2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2
LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQo
Y29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2suZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25l
IGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgp
KTsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1w
dHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAg
IGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50
cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBp
cyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSgpKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0g
ICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUg
Y29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjcz
LDEyICsyMzksMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25D
aGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRp
b25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRXhpdFRodW5rID0gdm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IpOwogICAgIGF1dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklU
VGh1bmtQdHJUYWc+KG9zckV4aXRUaHVuay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRo
R2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBj
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAg
ICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3
ICs0NDcsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3Bl
Y3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
cik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9y
aWdpbigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5r
T1NSRXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlm
IG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApp
bmRleCAzNjE3NDc3ODFmY2Q2ZTc5MTVlN2EyNTk2ODQ2NWQwN2I2OTFiMjllLi5hNTg3OTExZjg2
NjBmMTNkNDYwNDAzZTg4Y2NiMzk2NTVmOWExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0zMTMsNyArMzEzLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxpbmsoTGlua0J1ZmZlciYpOwogICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0
aE9TUihjb25zdCBPU1JFeGl0JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29t
cGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2
b2lkIGRpc2Fzc2VtYmxlKExpbmtCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKaW5kZXggOGUzYmM1M2Q1NzIzZjhiYTAxYjU2NjU2YzU4NGZmY2VkY2I2
NjRmNS4uODQyNDgwMmQ5NWY4MTBhOWZhM2VhMDQzNjY0NmFmN2FjYmUyZDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogCiAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4
Y2VwdGlvbkhhbmRsZXIgPSBqaXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0q
IHZtUHRyID0gJnZtOwogICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwg
Q29kZUxvY2F0aW9uTGFiZWwodm1QdHItPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAg
IGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BF
bnRyeUZyYW1lKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
dm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRk
TGlua1Rhc2soCi0gICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkZUTCwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQw
OWEyYTViNTM1ZDBkOS4uMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2
b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsQXJpdHlDaGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRv
RXhjZXB0aW9uSGFuZGxlciA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwot
I2Vsc2UKLSAgICAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAg
ICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNl
cHRpb24ubGluaygmaml0KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
ICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0Lmxv
YWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDEx
ICsxMDEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5
Q2hlY2ssIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVj
dG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5
Q2hlY2spKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtC
dWZmZXItPmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSkpOwotI2VuZGlmCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNh
bGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihh
cml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsobWFpblBhdGhKdW1wcywgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA5Y2I4MmM3ZTExYThl
ODA3ZWNkOGQ2YzFkZGQ2MzExMTBhMzYxY2UxLi4zZTdjZmYwYTI5OGQyZjI5MDAzNDlmMTYzNThh
NmUwYTk1ZGFiYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRl
ICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIk1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+
CkBAIC04NTMsNiArODU0LDM4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRD
b2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFNj
b3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiwgY29uc3QgY2hhciopOwogCisgICAgdm9p
ZCBlbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpIHsKKyAgICAgICAgLy8gU3Rhc2ggZnJhbWUgcG9pbnRl
ciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBwdXNoKFg4NlJl
Z2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAg
ICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYg
Q1BVKE1JUFMpCisgICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBv
biBwbGF0Zm9ybSIKKyNlbmRpZgorICAgICAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBvbiB0aGUg
c3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgICAgIGlmIGNvbnN0ZXhwciAo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBlbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpIHsKKyAgICAgICAgLy8gUmVzZXQgc3RhY2sKKyAgICAgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgICAgIGFkZFB0cihU
cnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIC8vIFJlc3RvcmUgZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFk
ZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwor
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgcG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgICAg
ICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwor
I2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRp
ZgorICAgIH0KKwogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgQXJnTnVtPgogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZf
dDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90
PiBzaXplT2ZBcmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGY1N2E2ZTEzNDUw
NThmZGJlODQyMzhmMjI3Mzc2NTdkMDYzOTlhMGIuLjIwYzZkYjVhMmFjNDc5MGIwZGM4MzQxMjc1
NjA5ZTZkMjk2ZGY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAjZGVmaW5lIERFRklORV9TTE9XX09QKG5hbWUp
IFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCiAgICAgICAgIGlmIChtX2J5dGVjb2RlSW5kZXgg
Pj0gc3RhcnRCeXRlY29kZUluZGV4KSB7IFwKLSAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsg
XAorICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3Bh
dGhfIyNuYW1lKTsgXAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAogICAgICAg
ICB9IFwKICAgICAgICAgTkVYVF9PUENPREVfSU5fTUFJTihvcF8jI25hbWUpOyBcCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAKICNkZWZpbmUgREVGSU5FX1NMT1dD
QVNFX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKLSAgICAgICAgZW1p
dFNsb3dDYXNlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUp
OyBcCisgICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwK
ICAgICAgICAgYnJlYWs7IFwKICAgICB9CiAKLXZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1YikKK3ZvaWQgSklUOjplbWl0
U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQ
YXRoRnVuY3Rpb24gc3R1YikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHN0
dWIpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc3R1Yik7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtNjU4LDkgKzY1OCw2IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuc3RyaWN0ZXEpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9wcm90b3R5cGVfb2YpCi0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChy
ZXNvbHZlX3Njb3BlKQotI2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNo
ZWNrX3RkeikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJvcGVydHlfa2V5
KQogICAgICAgICBkZWZhdWx0OgpAQCAtODU3LDkgKzg1NCw3IEBAIHZvaWQgSklUOjpjb21waWxl
QW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAg
ICAgICAgbV9hcml0eUNoZWNrID0gZW50cnlMYWJlbDsgLy8gTmV2ZXIgcmVxdWlyZSBhcml0eSBm
aXh1cC4KIAogICAgIEFTU0VSVChtX2ptcFRhYmxlLmlzRW1wdHkoKSk7Ci0gICAgCi0gICAgcHJp
dmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotICAgIAorCiAgICAgaWYgKG1fZGlzYXNz
ZW1ibGVyKQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0RW5kT2ZDb2RlKGxhYmVsKCkpOwog
ICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgUENUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKQEAgLTkxMSwxMiArOTA2
LDEwIEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0
dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZgogCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBt
X25lYXJKdW1wcykgewogICAgICAgICBpZiAocmVjb3JkLnRhcmdldCkKQEAgLTEwMzcsMzUgKzEw
MzAsNiBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVCbG9jayog
Y29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkVmZm9ydAogICAgIHJldHVybiBmaW5hbGl6ZU9uTWFp
blRocmVhZChjb2RlQmxvY2spOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGlmICgh
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewotICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMpOwotCi0g
ICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCku
dG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxscy5h
cHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJG
cmFtZSkpKTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0K
LSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRp
b25DaGVja3MubGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhl
IFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1f
ZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIp
KSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVDo6ZG9NYWluVGhyZWFk
UHJlcGFyYXRpb25CZWZvcmVDb21waWxlKCkKIHsKICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3
ZSBoYXZlIHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1p
bmcgdHlwZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IDI5N2YzY2E1ODI1ZjA0MzdkYTJmZjFkM2FkMWQxOTNjYzYzNmZi
NGEuLjk3ZjkxYjgwODYzNDg0Nzk0NjZkNTJiY2I5YzRjYWVlMDZkMWNjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtMjc2LDggKzI3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suYXBwZW5kKGVtaXRF
eGNlcHRpb25DaGVjayh2bSgpKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLQogICAgICAgICB2b2lkIGFkdmFuY2VUb05leHRD
aGVja3BvaW50KCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KEp1bXApOwogICAgICAgICB2b2lkIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKQEAgLTU1Myw3
ICs1NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlVHlwZSwg
dHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgZW1pdF9lbnVtZXJh
dG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBPcGNvZGVUeXBl
JiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOworICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9o
YXNfcHJvcGVydHlJbXBsKGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5
KGNvbnN0IEluc3RydWN0aW9uKik7CiAKQEAgLTYxNCw3ICs2MTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRTbG93
Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rp
b24pOwogCiAgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTYyMiw3ICs2
MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogCiAgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwg
VmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFj
Y2Vzc1R5cGUpOwotICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlKTsKKyAgICAgICAg
dm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKQEAgLTY1OCwzOSArNjU2LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFz
ZWxpbmVHZW5lcmF0b3IoVk0mKTsKIAogICAgIHByaXZhdGU6Ci0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgICAgIC8vIFRodW5rIGdlbmVyYXRvcnMuCi0gICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworCiAg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3df
b3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJik7Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVy
YXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX3Rocm93X2hhbmRsZXJHZW5l
cmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYpOwogCi0gICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0aHVua0lzVXNlZEZvck9wR2V0RnJvbVNjb3BlKFJlc29s
dmVUeXBlIHJlc29sdmVUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHbG9iYWxWYXIg
YmVjYXVzZSBpdCBpcyBtb3JlIGVmZmljaWVudCB0byBlbWl0IGlubGluZSB0aGFuIHVzZSBhIHRo
dW5rLgotICAgICAgICAgICAgLy8gUmVzb2x2ZWRDbG9zdXJlVmFyIGFuZCBNb2R1bGVWYXIgYmVj
YXVzZSB3ZSBkb24ndCB1c2UgdGhlc2UgdHlwZXMgd2l0aCBvcF9nZXRfZnJvbV9zY29wZS4KLSAg
ICAgICAgICAgIHJldHVybiAhKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlw
ZSA9PSBSZXNvbHZlZENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRoeUdlbmVyYXRvcihW
TSYpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3Io
Vk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHRlbXBsYXRl
IDxSZXNvbHZlVHlwZT4KICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rKFZNJik7CiAgICAgICAgIHRl
bXBsYXRlIDxSZXNvbHZlVHlwZT4KICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rKFZNJik7CisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2VudGVy
X2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYpOworICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFs
c2V5R2VuZXJhdG9yKFZNJik7CiAKICAgICAgICAgSnVtcCBnZXRTbG93Q2FzZShWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCBmODY3NTgzMmE4N2NiZWRhYWYxNmJj
YTg3MTVmOGIzNWNkNWFmOTMzLi44NDBmZjc2ZTVkOTY1Y2ZiOTVhNjA3YTJiZDY2YjY2ZTFiYTVi
Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAg
LTQ1MSwxOSArNDUxLDE5IEBAIHZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogfQogCiAjZWxzZSAvLyBDUFUoWDg2XzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX21v
ZChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKIH0KIApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rp
dihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChnZW4uZW5kSnVtcExpc3QoKS5lbXB0eSgpKTsKICAgICAgICAgQVNTRVJU
KGdlbi5zbG93UGF0aEp1bXBMaXN0KCkuZW1wdHkoKSk7Ci0gICAgICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGl2KTsK
KyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZGl2
KTsKICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCAyNDRiM2ZlYjY5YjRhMGY0OWYwYmM0M2QxZTRhYjQ0
OWEzMmU2Yjk3Li5lYmZhNDEwODMxNDBlMGJjZmUyZWNjMGMwODA3NGMzOTMwZGVjZjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bikKICAgICAgICAgfQogICAgIH0pKCk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0
ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAog
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChy
ZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJl
dHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNTI2LDE0ICs1MjYsMTQgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIG5leHRKU1IgPSBiYXNlSlNSOyAvLyBVc2VkIGFzIHRlbXBvcmFyeSByZWdpc3RlcgogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBuZXh0SlNSKTsKICAgICBK
dW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0eShuZXh0SlNSKTsKIAotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlv
bik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rp
b24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNjIzLDcg
KzYyMyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KGp1bXAoKSk7CiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRD
bG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OmRvbnRDbG9iYmVySlNSOwogCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGl0ZXJDYWxsUmVz
dWx0SlNSID0gZG9udENsb2JiZXJKU1I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggYzY3YmNlMDlmZmJjNjBl
MjQzM2U2MjJlMzc4Mjc4Y2YyMDc0YjRiZS4uZjkzYTM2OGZmNmQ4ZTI4OTRiZjYxMTVlYzkzMzM1
Mzk3MzkyOTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEpJVEdldEJ5
SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5z
aWduZWQgc3R1YgogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNS
OwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0Lmxv
YWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElu
bGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRK
U1IpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnCiAKICAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
IAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKICAgICBnZW5l
cmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRj
aEdQUiwgcmVzdWx0SlNSKTsKQEAgLTIxNyw4ICsyMTcsOCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQg
c3R1YgogCiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJy
YW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNz
QmFzZVN0cnVjdHVyZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNjI5MjljMGMyNDg0ZmI5Y2EwZWM2NjFiYjdj
MGE3ZGU2NDlmYzk4Yy4uMmI3NjIxYjk2YzljMmJlZTgzOTBkN2U3ZDk2MDg5Yzc3MzY4OWJhNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaApAQCAtNDksNDYgKzQ5LDEyMiBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4
X3Q7CiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCiBuYW1lc3BhY2UgQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKK2NvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisjZW5kaWYK
KworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUntKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUn07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSe0dQUkluZm86OnJlZ1Q3fTsKK2NvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUntH
UFJJbmZvOjpyZWdUNn07CiAjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwg
InJlcXVpcmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJz
CituYW1lc3BhY2UgU2xvd1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9k
ZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcg
ZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFz
c2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChi
YXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1v
ZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAog
bmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKy8vIFJlZ2lzdGVycyB1
c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpq
c1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNw
YWNlIEZhc3RQYXRoIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1J7SlNSSW5mbzo6
cmV0dXJuVmFsdWVKU1J9OworI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFJ7R1BSSW5mbzo6cmVnVDd9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSe0dQUkluZm86OnJlZ1Q2fTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBl
cnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJl
ZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNw
YWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5m
bzo6cmVnVDAgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZv
OjpyZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Citjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9P
dmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlH
UFIsIGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3Rh
dGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQg
Zm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBT
bG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0
dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Bl
cnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Citjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlm
CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwogY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRpZgorc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93
IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25z
dGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNl
bmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwg
InJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9w
ZXJhdGlvbiIpOworfQogfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEwMSw3ICsxNzcsNyBA
QCBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEdQUkluZm86OnJlZ1QyOwog
c3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1IpOwogc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUik7CiBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUiA9PSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IpOwotc3RhdGljX2Fzc2VydChzdHViSW5mb0dQUiA9
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUik7CitzdGF0aWNfYXNzZXJ0
KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHVi
SW5mb0dQUik7CiAKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gR1BSSW5mbzo6
cmVnVDM7CiBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEdQUkluZm86OnJlZ1Q0
OwpAQCAtMTUwLDggKzIyNiwxMiBAQCBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKIH0KIAogbmFtZXNwYWNlIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5k
IFNsb3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OworCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVz
cGFjZSBGYXN0UGF0aCB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKQEAgLTE1OSw3NyArMjM5LDE3MiBAQCBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJ
bmZvOjpyZWdUNyB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSe0dQUklu
Zm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBk
b250Q2xvYmJlckpTUikpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zlcmxh
cChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpLCAicmVx
dWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25h
bWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQ
UkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
IHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQ
Uiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0
aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0
IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdz
IHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgor
CisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdz
IHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3Nl
bWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5
IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0
YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwg
Ynl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
cHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30K
IH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsKIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07CiBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1Ig
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUiB9
OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OwogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRo
cwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworLy8gRmFzdCBwYXRoIG9u
bHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCiBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9
OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKICNl
bmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2
YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIp
Oworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLnBheWxv
YWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiks
ICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVy
cworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Citjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBD
VEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFz
ZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BS
KSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9CiB9CiAKIG5hbWVz
cGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJv
dGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEpTVmFsdWVSZWdz
IHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BS
SW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJl
Z1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUNiwg
R1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUg
fTsKICNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0
UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
K3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3Ig
RGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNs
b3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAv
LyBXZSBhcmUgYSBiaXQgc2hvcnQgb2YgcmVnaXN0ZXJzIG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBj
YW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMKKyAgICBNYWNyb0Fzc2VtYmxlckFSTXY3
OjpzY3JhdGNoUmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNWQUxVRTMyXzY0CisgICAgR1BS
SW5mbzo6cmVnVDgKKyNlbmRpZgorfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zlcmxh
cChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIGJ5dGVjb2RlT2Zm
c2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsK
K3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
KSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9CiB9CiAKIG5hbWVz
cGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Citjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IgfTsgLy8gUmVx
dWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworY29uc3RleHByIEpTVmFsdWVSZWdzIGJy
YW5kSlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IgfTsgLy8gUmVx
dWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworCituYW1lc3BhY2UgRmFzdFBhdGggewog
I2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgeyBHUFJJbmZvOjpy
ZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07
CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiAjZW5kaWYKLXN0YXRpY19h
c3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0
YXRpY19hc3NlcnQoYnJhbmRKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCitu
YW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUiB9
OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCitjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKK3N0YXRpY19h
c3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1
bmsiKTsKK30KIH0KIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMGIzYjVmY2Q5M2FiMTJlZDQ0MDYy
ZTJlYmVlNjhjODZmNGRmZjJlZC4uOTY3MWVjZTA3OGM4YmNlOTg3YTBlZWY0NThjNjVkYjIyM2U0
ZGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC00NTEs
MjQgKzQ1MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVl
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBi
b29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZGYWxzZXko
dm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwot
I2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBq
c1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNG
YWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChi
cmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2NCwyNSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRv
cihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBl
cnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRp
Y19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9
IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAv
LyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7
CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBn
bG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXkodm0sIEpTVmFsdWVSZWdzKHZh
bHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAg
IGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdU
MCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc0ZhbHNleSA9IGppdC5icmFu
Y2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmpl
Y3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlzRmFs
c2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCArNjM0LDExIEBAIHZvaWQgSklUOjplbWl0
X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdHJ1ZT4oKTsKICAgICB1bnNp
Z25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90
YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1Qx
MDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZh
bHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdU
MzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9i
amVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNo
MiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBn
bG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0
YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzVHJ1dGh5R2VuZXJh
dG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rp
b24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBA
IC02NzksMzEgKzY0NywyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5
bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BS
ID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsK
ICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0
cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNUcnV0aHkgPSBqaXQuYnJhbmNo
SWZUcnV0aHkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJl
Z1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVt
cCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzVHJ1dGh5LmxpbmsoJmppdCk7CiAgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7Cisg
ICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgdmFsdWVKU1IsIHNjcmF0
Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVnVDApOworICAgIGlzVHJ1dGh5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgp
OwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNUcnV0aHkiKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAK
QEAgLTczNCw1NyArNjk2LDU1IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX3Rocm93KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJl
Z1QwID09IHJldHVyblZhbHVlR1BSKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRv
cEVudHJ5RnJhbWUpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25UaHJvdyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGNhbGxPcGVyYXRp
b25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93LCBnbG9iYWxPYmplY3RHUFIsIHZhbHVl
SlNSKTsKLSAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotI2Vsc2UKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0KICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CisKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHRocm93blZhbHVlSlNS
LCBieXRlY29kZU9mZnNldEdQUikpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CisKICAgICBlbWl0TmFrZWRO
ZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcikuY29kZSgp
KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQ
UjE7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsK
KworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhy
b3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1Is
IGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CiAgICAgCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9p
bnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAogI2lm
IE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIGppdC5sb2FkUHRyKCZ2
bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQUjApOwotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNU
b0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihhcmd1bWVudEdQUjApOworICAgIHsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gZ2xvYmFsT2JqZWN0R1BSOworICAgICAg
ICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgc2NyYXRjaEdQUik7CisgICAgICAgIGpp
dC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BS
KTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gYXJndW1lbnRHUFIwOworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRo
cm93blZhbHVlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xv
YmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CisKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25UaHJvdykpOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19o
YW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogCkBAIC0xMjUxLDc3ICsxMjExLDc3IEBAIHZvaWQgSklUOjplbWl0X29w
X2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKICAgICAvLyBFdmVuIHRob3VnaCBDVEkgZG9lc24n
dCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdpc3RlcnMg
dG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcK
ICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCi0gICAg
c2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOwotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50
QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpZiAoZmly
c3QgPCBjb3VudCkKLSAgICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1Jl
Z1QxMCk7Ci0gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKLSAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNS
ZWdUMTApOwogCi0gICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIHJlZ1QwKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKLQotICAgIGVtaXRFbnRl
ck9wdGltaXphdGlvbkNoZWNrKCk7Ci0jZWxzZQogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCkgPT0gMCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBh
cmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFy
Z3VtZW50R1BSNDsKLQotICAgIHVuc2lnbmVkIGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Cisg
ICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOworICAgIHVp
bnQzMl90IGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobG9j
YWxzVG9Jbml0IDwgY291bnQpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAq
IHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRHUFIpOworCisgICAgY29uc3RleHByIEdQ
UlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9j
YWxzVG9Jbml0R1BSID0gcmVnVDE7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGlt
aXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fs
c1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRHUFIpOwogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQorCisvLyAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKy8vICAgIGlmIChmaXJzdCA8IGNvdW50
KQorLy8gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwor
Ly8gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKKy8vICAgICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1Qx
MCk7CisvLworLy8gICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIHJlZ1QwKTsKKy8vICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDApOworLy8KKy8vICAgIGVt
aXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRl
cl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKKwogICAgIC8vIG9wX2VudGVyIGlzIGFsd2F5cyBhdCBieXRl
Y29kZU9mZnNldCAwLgogICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGl0ZXJhdG9yR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
ZW5kR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIg
PSBhcmd1bWVudEdQUjQ7CisgICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9
IHJlZ1QwOyAvLyBJbmNvbWluZwogCi0gICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBp
bnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZz
ZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGppdC5zdWI2NChpdGVyYXRvckdQUiwgbG9jYWxz
VG9Jbml0R1BSLCBlbmRHUFIpOwotCi0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHVuZGVmaW5lZEdQUik7Ci0gICAgYXV0byBpbml0TG9v
cCA9IGppdC5sYWJlbCgpOwotICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1Ro
YW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKICAgICB7Ci0gICAgICAgIGppdC5zdG9y
ZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBp
dGVyYXRvckdQUiwgVGltZXNPbmUpKTsKLSAgICAgICAgaml0LnN1YjY0KFRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgICAgICBqaXQuanVtcChpbml0TG9v
cCk7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7IC8v
IEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSByZWdUNTsKKyAgICAgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVy
YXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBD
b2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3Rh
cnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAg
ICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMy
KC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAg
IGppdC5zdWJQdHIoaXRlcmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKKyAgICAg
ICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdW5kZWZpbmVkSlNSKTsKKwor
ICAgICAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7CisgICAgICAgIEp1bXAgaW5pdERv
bmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsK
KyAgICAgICAgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUodW5kZWZpbmVkSlNSLCBBZGRy
ZXNzKGl0ZXJhdG9yR1BSKSk7CisgICAgICAgICAgICBqaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAgICAgICAgICAgaml0Lmp1bXAoaW5p
dExvb3ApOworICAgICAgICB9CisgICAgICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAgICAgfQot
ICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAgICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1fY29k
ZUJsb2NrKS4KKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChjYW5CZU9wdGltaXplZEdQUiwg
YXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7CiAgICAgSnVtcCBvd25l
cklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BS
MSwgYXJndW1lbnRHUFIyKTsKIAotICAgIGppdC5tb3ZlKGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7IC8vIHNhdmUuCisgICAgaml0LnB1c2goY2FuQmVPcHRp
bWl6ZWRHUFIpOyAvLyBzYXZlIChjYWxsIGFyZ3VtZW50cyBiZWxvdyBhcmUgYWxsIGluIHJlZ2lz
dGVycywgc28gb2sgdG8gc3RhY2sgdGhpcykKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbldyaXRl
QmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGppdC5wb3AoY2Fu
QmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlCiAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAgIGppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7CiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMzQ4LDExICsxMzA4LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0m
IHZtKQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQp
Ci0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
aml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTEzNjMsNyArMTMxOSw2IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9y
KFZNJiB2bSkKICNlbmRpZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTYwNyw1NyAr
MTU2Miw0MyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2Jh
bE9iamVjdChhcmd1bWVudEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxl
VHJhcHMsIGFyZ3VtZW50R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgp
LmdldENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJh
cHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
I2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYg
Q1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWly
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7IC8vIEluY29taW5nCiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAg
IGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUg
cG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgY29kZUJsb2NrR1BS
KTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICAKKyAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRp
ZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAg
IC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlv
bkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1
Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAg
ICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5k
bGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhj
ZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVj
a190cmFwc19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggY2FjNDBjZWQ4MmJkOTc3Mjk2NWRlZWFhMTA5M2NjNDVmMjlk
MjkxOS4uYWM5YjM2MWExNDM3NmYzNjMzYTA5MmMyN2E5Y2RjOWQyN2ExY2FlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU1LDgg
KzU1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0xMDEsNTEgKzEwMSwyMyBAQCB2b2lk
IEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2Rl
LCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGlmICghaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUR2V0
QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLQot
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJn
M0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGFyZzRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCA0PigpOwotCi0gICAgc3RhdGljX2Fzc2VydCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUi5vdmVybGFwcyhhcmc0SlNSKSk7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiwgYXJnNEpTUik7Ci0gICAgbW92ZVZh
bHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLCBhcmczSlNSKTsKLSAg
ICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0
ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlv
bjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7Ci0jZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7
CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
ID09IHJlZ1QwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFk
YXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7
CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5l
cmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigp
LCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGds
b2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpA
QCAtMTY0LDM1ICsxMzUsMzcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpn
bG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0
aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFy
Z3VtZW50R1BSMSk7Ci0KKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIp
OwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJy
YW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNh
bGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTIwNCw3ICsxNzcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsK
ICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKICAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMywzMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNT
RVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFs
SW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
cHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+
KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUR2V0
QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fz
c2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMjg2LDM0ICsyMzQs
MzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVO
YW1lT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmpl
Y3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwor
CisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
R2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVw
QXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
ICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2
aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsK
IAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAg
ICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0g
ICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAg
IC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlv
bkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1
ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0zMjMsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAg
IHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtMzU0LDQ2ICszMDMsMjIgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFYKIHsKICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0
aW9uKTsKIAotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKLQotICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3By
aXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1
c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0
YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3Bl
cmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25U
cmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVu
dFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTQwNiw3ICszMzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsKQEAgLTQyOCw0OSArMzUzLDI0IEBAIHZv
aWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4p
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOwotICAgIFVOVVNF
RF9QQVJBTShieXRlY29kZSk7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3Im
IGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsr
XTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7
Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0
ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8v
IGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJy
YW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTQ4NiwxNiArMzg2LDE3IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOworICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxlR1BSKTsKLSAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCAvKiBzY3JhdGNo
R1BSOiAqLyBzdHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG51bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
QEAgLTUyOSw3NiArNDMwLDI4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRf
YnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6
OnN0cmljdCgpOwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAg
ICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVj
bWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAgaWYgKGlzRGlyZWN0
KQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4o
KSk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRC
eVZhbD4oKSk7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNb
bV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRC
eVZhbFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGlmIChpc0RpcmVj
dCkKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6
Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVsc2UKLSAgICAgICAg
bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
dXRCeVZhbD4oKSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCks
IHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2Zp
bGVHUFIpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFB1
dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4g
dGhlIGZhc3QgcGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KLSAgICAvLyBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSByZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
cmVnVDE7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDU7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2
bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1
dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4g
b25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBp
dCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2
YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC02MDYsMzkgKzQ1OSwzOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICB1c2luZyBTbG93T3BlcmF0b2luID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RP
cHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q1
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gcmVnVDU7Ci0gICAgewotICAgICAgICBSZWdpc3RlclNldCB1c2VkKGJh
c2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJvZmlsZUdQUik7Ci0gICAgICAgIEFTU0VS
VCghdXNlZC5jb250YWlucyhyZWdUNCkpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMo
cmVnVDUpKTsKLSAgICB9CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gVE9ETzog
d2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJv
ZmlsZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVy
YXRvaW4+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHBy
b3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIw
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtNjUwLDcgKzUwMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
YmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlK
U1IpOwpAQCAtNjc5LDU2ICs1MzEsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJ
bnN0cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZh
bHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
UHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQ
UiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1tt
X3B1dEJ5VmFsSW5kZXgrK107CiAKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBy
ZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAg
Ly8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdv
cmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2Vz
IGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxl
IGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTczNiwzNCArNTYwLDQxIEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVG
aWVsZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNl
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIFRP
RE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3JpbmcgdGhpcz8KICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJl
Z1Q0OwotCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4o
Z2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZv
R1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKKyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8g
dGhpcyByZWdpc3RlciBpcyBuZWNlc3NhcnkgZm9yIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsCisgICAgLy8gdG8gbm90IGNsb2JiZXIgZ2xvYmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIs
IGFuZCBpcyBvdGhlcndpc2UgaGFybWxlc3MuCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgcHJvZmlsZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
OwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVz
cyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9j
YXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0Miw5ICs2NzMs
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0
aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsK
QEAgLTg3NSw2MiArNzA2LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQorICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0
eUdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21h
TW9kZUdQUjsKIAotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2Vk
Q29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNt
YU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9k
ZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9i
eV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFs
dWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0g
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGlj
X2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigp
LCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1Ip
OworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVs
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQg
bWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFp
bGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3NDQsMzggQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0
aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93
UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3JpbmcgdGhpcz8KICAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9i
YWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQ
Uik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIx
LCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7Cisg
ICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xl
YW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNl
cHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzUsOSArNzg2LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsK
ICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyArODIxLDM3IEBAIHZvaWQgSklUOjplbWl0
X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
KyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
KyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5
VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklURGVsQnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKIAorICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKICAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlK
U1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQ
UjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BSKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21h
TW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2Rl
bF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVy
blZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0
YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9i
eV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3VsdEpTUi5wYXlsb2Fk
R1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3Vs
dEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Io
Vk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTEwNzQsMzMgKzg1
OSwzOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgp
OworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQorICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCBlY21h
TW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1l
bnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZv
Iik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJv
eEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQo
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTExMSw3ICs5MDEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMTM4LDQ3ICs5MjgsMjYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7
Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0
QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKEpJVDo6
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02
NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CisKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUp
LCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTE5Myw3ICs5NjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMjE5LDQ3ICs5ODgsMjYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7Ci0g
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOworICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIz
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOworCiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
KSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTEyNzQsMTIgKzEwMjIsMTIgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
ICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNl
SlNSLCBiYXNlVlJlZyk7Ci0gICAgCisKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgbG9hZDhG
cm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om9mZnNldE9mTW9kZU1l
dGFkYXRhKCkgKyBHZXRCeUlkTW9kZU1ldGFkYXRhOjpvZmZzZXRPZk1vZGUoKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoMzIoTm90RXF1YWws
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpKSwgc2NyYXRjaEdQUik7CkBAIC0xMzEyLDUxICsxMDYwLDY5IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJ
ZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlk
PigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2Nr
LT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7
CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVy
dHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgLy8g
VGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0
aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQorICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRp
b25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KKyAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25z
IGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCisg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSk7CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAg
ICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CisgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0
aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNh
bGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5qdW1wKCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9nZXRfYnlfaWRfQ2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwpAQCAtMTM2OCw3ICsxMTM0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzOjp0aGlzSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVn
aXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNW
UmVnLCB0aGlzSlNSKTsKQEAgLTEzOTUsOTYgKzExNjEsMzMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0K
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KFZNJiB2bSkKLXsKLSAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCi0gICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIC8vIERGRy9GVEwg
bWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdo
aWNoIG1heSBub3QgbWF0Y2gKLSAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIEND
YWxsSGVscGVycyBqaXQ7Ci0KLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCi0gICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwotCi0gICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxs
Iik7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwotICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1dpdGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107Ci0gICAgCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRX
aXRoVGhpc09wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0
aGlzSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3RoaXNWYWx1ZSwgdGhpc0pTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwKLSAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
dW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkg
PT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CisgICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0
aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0
YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1
bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlz
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTQ5MiwzNSArMTE5NSwzNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6Omds
b2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKwor
ICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0
aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1Owot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlz
R1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50
R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FS
TTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCisg
ICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3Bl
cmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM2LDggKzEyNDEsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlVlJl
ZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmVzZXRT
UCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBzbyB3ZSBuZWVkIHRvIGNvbnNlcnZhdGl2
ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChn
ZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3
cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25k
aXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29k
ZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkzOTUKQEAgLTE1NzAsNTYgKzEyNzUsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlu
a2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsK
KworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2
YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3Bl
cnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsg
Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAv
IEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQg
dGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTMwNywzNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBv
ZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHZhbHVlR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQorICAgIC8vIENh
bGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
dmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8
U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJh
c2VKU1IsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
ICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2
aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsK
IAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAg
ICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0g
ICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAg
IC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlv
bkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAt
MTY5MSw0OSArMTM3MywyOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5f
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+
KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFz
ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBz
bG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5v
IHBvaW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRp
ZmZlcmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9w
ZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJ
bkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTc3Nyw1MyArMTQz
OCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0KLSAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFz
ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBw
cm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQ
UiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5C
eVZhbD4oKTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBv
aW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAg
Ly8gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJl
J3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0
IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQo
QmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE4
NTgsNDkgKzE0OTMsMjYgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3Rl
ciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2
YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBB
Y2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUg
dHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3Bl
cnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogCi0gICAg
SklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsK
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
SGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAz
PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBt
X2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0g
QmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0
eU9yQnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRp
bWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUp
OwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1By
aXZhdGVCcmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKQEAgLTE5MTIsMTIgKzE1MjQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQ
cml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVy
dHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2
YXRlTmFtZT4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRl
Y29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CisgICAgZW1pdEhh
c1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKQEAgLTE5MjYsMTIgKzE1MzYsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5t
X2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SGFzUHJpdmF0ZUJyYW5kPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jh
c2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAg
ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTI1OTAsMTMgKzIxOTgsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cgogICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgewogICAgICAgICAv
LyBJZiBhbnkgbGlua2VkIENvZGVCbG9jayBzYXcgYSBNb2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtl
ZCBDb2RlQmxvY2tzIGFyZSBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGFsc28gc2VlIE1vZHVs
ZVZhci4KLSAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0
eV93cml0ZV9lcnJvcik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKTsKICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UgewotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVu
dEdQUjApOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3Vt
ZW50R1BSMCwgY3VycmVudEluc3RydWN0aW9uKTsKLSNlbHNlCiAgICAgICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKQEAgLTI2MDYsMTEgKzIyMTAsOSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmCiAgICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
dG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQg
YnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUg
SklUIGJlY2F1c2UKQEAgLTI2MTksNDMgKzIyMjEsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2
bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNo
UGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9j
a0dQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0g
YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjI7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tH
UFIgPSBhcmd1bWVudEdQUjM7IC8vIE9ubHkgdXNlZCBhcyBzY3JhdGNoIHJlZ2lzdGVyCiAKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIFRPRE86IHdoYXQgaXMgdGhl
IHBvaW50IG9mIHN0b3JpbmcgdGhpcz8KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwogICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rp
b25HUFIpOwogICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BS
KTsKLQogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRp
b25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJz
OjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5l
bWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBj
aGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24s
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAg
IGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTI3NDMsNyArMjMzNiw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2VuZXJp
Y0Nhc2VzLmxpbmsodGhpcyk7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25l
Q2FzZXMubGluayh0aGlzKTsKQEAgLTI4MDYsNyArMjM5OSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiAgICAgb3BlcmF0aW9uQ2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9uZXh0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX25leHQpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25l
LmxpbmsodGhpcyk7CkBAIC0yOTA2LDcgKzI0OTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVu
Y3Rpb25UeXBlPgotdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRl
Y29kZSwgU2xvd1BhdGhGdW5jdGlvblR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9l
bnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93
UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CkBAIC0yOTM2LDcgKzI1MjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAg
ICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNTM3LDMxIEBA
IHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
aW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAg
ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVt
ZXJhdG9yX2luX2J5X3ZhbCk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwo
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhf
ZW51bWVyYXRvcl9pbl9ieV92YWwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rp
b24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCks
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVy
YXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9y
SGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkp
OwogfQogCiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1
Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiop
CiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfZW51bWVyYXRvcl9nZXRfYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTI5NzcsMTUgKzI1NzAsMTUgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUUKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9o
YXNfb3duX3Byb3BlcnR5KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRl
eCA0ZGI3NmE5MDFkZjU2YWZiMTNiNDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2
NDlkZGQzNTE3MDM2NmIzNTBlMjM5N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuY3BwCkBAIC0xNzEsOCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgog
ICAgIH0pOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9u
U3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBh
dXRvIGtleSA9IGJpdHdpc2VfY2FzdDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7
CkBAIC0xODEsOCArMTc5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0K
IAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtz
OjpIb3N0S2V5U2VhcmNoZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RG
dW5jdGlvbktleSYga2V5KSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2go
a2V5KTsgfQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJs
ZT4mIGEsIGNvbnN0IEhvc3RGdW5jdGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1
dGFibGVIYXNoOjplcXVhbChhLCBiKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmgKaW5kZXggODQ3Y2UyNTAyZTQwMThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYy
ODUxYTEwMTZlMGRiNTdmY2Q4YTBjYTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5oCkBAIC02Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3Qo
Vk0mKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1
YihWTSYsIFRodW5rR2VuZXJhdG9yKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rp
b25TdHViKFZNJiwgU2xvd1BhdGhGdW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2Vk
TmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9u
LCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZk
Yjk4MThkYzlmOTdjYjA3NDdhMGE0ZTEzZDcyOGIuLjVjZTJhZmYwNDExZWQyZWE3YjhjMWRhNDVi
YTRjMzYxMDU5Y2I0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xv
d1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5jcHAKQEAgLTM2LDE1ICszNiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CiAg
ICAgVk0mIHZtID0gbV9qaXQtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2ppdC0+bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2ppdC0+bV9ieXRlY29kZUluZGV4KTsKIAotICAgIFVOVVNF
RF9WQVJJQUJMRShtX3BjKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVn
ID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwogICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRSZWcpOwogICAgIG1faml0LT5lbWl0
TmFrZWROZWFyQ2FsbCh2bS5qaXRTdHVicy0+Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIodm0sIG1f
c2xvd1BhdGhGdW5jdGlvbikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKQEAgLTU2LDQ0ICs1
MywzMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFNsb3dQYXRo
Q2FsbDo6Z2VuZXJhdGVUaHVuayhWTSYgdm0sIFNsbwogCiAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwogCi0jaWYgQ1BVKFg4Nl82NCkK
LSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBUT0RPOiB3aGF0IGlz
IHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRSZWcsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwotCiAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgc3RhdGljX2Fzc2VydChKSVQ6OmFyZ3VtZW50
R1BSMSA9PSBieXRlY29kZU9mZnNldFJlZyk7CiAgICAgaml0LmFkZFB0cihHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0KKyAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0
LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9u
Q2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQ
VShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAg
IGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0
Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGlu
ayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQ
YXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRl
eCA4OTlhMjkwMGZlZGUzN2RkMGVhNWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgy
NjUyYTkzNmFlMDk2NGIwNDQzZjYzNDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2xvd1BhdGhDYWxsLmgKQEAgLTM1LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgSklUU2xvd1BhdGhDYWxsIHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBq
aXQsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0
aW9uKQorICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93
UGF0aEZ1bmN0aW9uKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRo
RnVuY3Rpb24oc2xvd1BhdGhGdW5jdGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAg
ICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYs
IFNsb3dQYXRoRnVuY3Rpb24pOwogCi0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0KLSAgICBKSVQ6OkNhbGwgY2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRl
VG9wQ2FsbEZyYW1lKCk7Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAg
bV9qaXQtPmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAg
ICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BS
MSk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjph
cmd1bWVudEdQUjIpOwotI2Vsc2UKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVS
ZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRy
dXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBK
SVQ6OkNhbGwgY2FsbCA9IG1faml0LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0K
LSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6
cmVnVDApOyAvLyB2UEMKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZy
YW1lIHJlZ2lzdGVyCi0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2Vw
dGlvbkNoZWNrKCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNs
b3dQYXRoRnVuY3Rpb24gbV9zbG93UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9u
KiBtX3BjOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA4ZWI1N2MwOTdiMzBiYjY5YzlhMmVhYWRh
YzgzOWYzYmVkZTJjNjk3Li4wM2M0OWQ2Njc0YmVjMDJiOTQ5MDA3NTM3N2RiNDZlYjY4ODdmYTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBA
IC00OSw5ICs0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFu
ZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0
aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCAr
NTcsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CkBAIC03Nyw4ICs3Myw2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAKLSNl
bmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3Rh
Y2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIEND
YWxsSGVscGVycyBqaXQ7CkBAIC0xMDEsOCArOTUsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25H
ZQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
InBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBl
cnMgaml0OwpAQCAtMTEzLDggKzEwNSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICAgICAgLy8gRXhj
ZXB0aW9uIGZ1enppbmcgY2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0
byBwcmVzZXJ2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaGVyZS4KICNpZiBDUFUoWDg2XzY0KQogICAg
ICAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCisjZWxp
ZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQogICAgICAgICBqaXQucHVzaFBhaXIoQ0Nh
bGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0
ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rl
cik7CisjZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgog
I2VuZGlmCiAgICAgfQogCkBAIC0xMjMsOCArMTE5LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKSB7CiAjaWYgQ1BVKFg4Nl82
NCkKICAgICAgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
CisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQogICAgICAgICBqaXQucG9wUGFp
cihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtS
ZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpyZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9y
bSIKICNlbmRpZgogICAgIH0KICAgICBqaXQucmV0KCk7CkBAIC0xNDMsOCArMTQzLDYgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZvaWQgZW1p
dFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwg
VGFnVHlwZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuaAppbmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUxLi4xMDU0
OTEwNGVmNjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVudW0gY2xh
c3MgQ2FsbE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjsKIGNsYXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2
ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IoVk0mKTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIAotI2lm
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApp
bmRleCA0MmNhYTU3NWVjOGZlMmYwMTg4Mjc3OWE0YjQzMzFiZGFjYjI3YmZmLi5jZGY4Yzc3MzVh
YTZmZWRmNGUzNzc0ZGEwNjZmZDc0MmIyZmYzYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgK
QEAgLTgzOSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05fVkFMSURB
VElPTiAxCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYmICFPUyhX
SU5ET1dTKSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2FuIHVzZSB1
cCB0byA2IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02NCBsaWtl
IGZlYXR1cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0Zm9ybXMK
LSAgIHRoYXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4KLSovCi0j
ZGVmaW5lIEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQo
RU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUgRU5BQkxF
X0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="471168"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445873</attachid>
            <date>2021-12-03 11:01:07 -0800</date>
            <delta_ts>2021-12-14 04:52:04 -0800</delta_ts>
            <desc>WIP - build fix</desc>
            <filename>bug-233822-20211203190105.patch</filename>
            <type>text/plain</type>
            <size>188578</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZWRjMmM5MDlhNjFjNDlkMjk4MmJkM2JkOTUyOTNlM2NmNDI5Y2ZjLi5lZDJmZGNkZjY3YmIyNjNj
Nzg2OTBjZTEwYzhiNDY2OTE5NjIwNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjEtMTItMDMgIEdlemEgTG9yZSAgPGdlemFsb3JlQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3Jtcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnN1YlB0cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lzdGVy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmg6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd0Nhc2VDYWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6Cisg
ICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6CisgICAgICAgICog
aml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRH
ZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aCk6
CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRh
SUNGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
amZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjp2YWx1
ZUlzVHJ1dGh5R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToK
KyAgICAgICAgKEpTQzo6SklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2VudGVyKToKKyAgICAgICAgKEpTQzo6SklUOjpvcF9lbnRlcl9o
YW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja190
cmFwcyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRv
cik6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfaWRfZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SGFzUHJpdmF0ZVNsb3cp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6
OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eSk6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgICogaml0L0pJVFRo
dW5rcy5oOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpK
SVRTbG93UGF0aENhbGw6OmNhbGwpOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENhbGw6Omdl
bmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpT
Qzo6SklUU2xvd1BhdGhDYWxsOjpKSVRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgICogaml0
L1RodW5rR2VuZXJhdG9ycy5oOgorCiAyMDIxLTEyLTAyICBHZXphIExvcmUgIDxnbG9yZUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdIEdlbmVyYXRlZCBjb2RlIHNpemUgcmVkdWN0aW9ucyBm
b3IgYmFzZWxpbmUgSklUIChhbGwgYXJjaGl0ZWN0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDBkMDE1YjdjZjM1MDJl
NGJkZWUxZjIxZjA2ZGY1NzU2N2I1ZGI4Mi4uOTQzMWFkNDY3NGFkZGFlYmM4MWFlM2ZhZmNlY2Jk
ODRjYzZmZGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMi0wMyAgR2V6YSBMb3JlICA8
Z2V6YWxvcmVAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBvcnQgRVhUUkFfQ1RJX1RIVU5L
UyB0byBhbGwgcGxhdGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM4MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIxLTExLTI5ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBB
ZGQgcnVudGltZSBmbGFnIGZvciBMYXllci1iYXNlZCBTVkcgZW5naW5lIChMQlNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDY4
MTA1YmQxYjQ3YzVmYTA2ZmQzNWIxOTUzMWIwMjVkZjViMjIyNzYuLjk2ZTA0MzIyM2QzY2Y3YjFh
OTVmYmJkYmQ4MDA4Mzk0MjVhZmQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0LDIyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9p
ZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0
cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0xMDA3LDEyICsxMDE3LDIy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IDI5ZGZmYzhiMzU2NjBmZWRiMTI3MmEzMzgyYTUyMWY1YWIyMTExYjUuLjk2OGFhMDgy
YWI0YmQxMmMyMzFjOGQ2M2UyMjU1ZTFlODAwMTgzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zOCwxMCAr
MzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIgPSBUQVJHRVRfQVNTRU1C
TEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRh
dGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsKKyAgICBz
dGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBUk1SZWdpc3RlcnM6
OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7CiAg
ICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVy
QXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xlKGZwVGVtcFJlZ2lzdGVy
KTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24gc2V0LCBpbnN0cnVjdGlv
bnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBvZnRlbgpAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0g
c3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9S
RUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNU
RVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRlZiBEVU1NWV9SRUdJU1RF
Ul9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVz
c1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQg
c2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAg
TWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAx
ZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAor
CisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGlt
bSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
CmluZGV4IDRiOWE0OTU5ZmQ4ZmYzNTFkMjlkYWZjYTA5NzI0NTNiN2JjMTY3NjYuLjk2YmUzODM3
YTFhZjllNzI1ZDI1MjRmNGVmZTY4ZDYxYWFjYzIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMjMzLDIzICsy
MzMsMTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlv
bkhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9PU1JFeGl0
RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxIYW5kbGVyLm5hdGl2ZUNvZGUpOwogICAgICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQtPmp1bXAo
KTsKICAgICAgICAgVk0qIHZtID0gJm1fdm07CiAgICAgICAgIGppdC0+YWRkTGlua1Rhc2soCiAg
ICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFi
ZWwodm0tPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgICAgIH0pOwotI2Vsc2UKLSAgICAgICAgaml0LT5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX3ZtKSk7Ci0gICAgICAgIGppdC0+cHJlcGFyZUNh
bGxPcGVyYXRpb24obV92bSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBsb29rdXBFeGNl
cHRpb25IYW5kbGVyQ2FsbCA9IGppdC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBq
aXQtPmFkZExpbmtUYXNrKAotICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBqaXQtPmp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIobV92bSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGQyMTA0
MTc0MmJkNDk1YjY2ZWNhNDUwOGQ3M2I4ZDM4Y2FjZmYxNWMuLjUyOGQ0NzM4ZGE2N2FlMDFmNmM0
MjA5OGJkZDUzMWEzNGJjZTJiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5m
byhDb2RlQmxvY2sqLCBVbmxpCiAgICAgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBl
OjpHZXRCeUlkICYmIHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
IHsKICAgICAgICAgLy8gRm9yIGl0ZXJhdG9yX25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJk
b250Q2xvYmJlckpTUiIgcmVnaXN0ZXIgZWl0aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNl
ZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENs
b2JiZXJKU1IpOwogICAgIH0KIAogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewpAQCAtNTI4LDI0
ICs1MjgsMjQgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21Vbmxpbmtl
ZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlU
YWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsK
LSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAgIGhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpyZXN1bHRK
U1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpHZXRCeVZhbDoKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQog
ICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwor
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IudGFnR1BSKCk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkK
ICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02MTksNyArNjE5
LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVj
dHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
R2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgcmVncy50aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
CiAgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnJlc3VsdEpTUi50YWdHUFIoKTsKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
ICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwpAQCAtNjQ0
LDcgKzY0NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5r
ZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAg
cmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAg
ICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCiAgICAgICAgICAg
ICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVH
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
IGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFz
ZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKaW5kZXggYWUzOGY2ZjdkMjVlNTA4YzkwYjI1OGE5MGYzNzMzZDI1MjBm
ODAyMy4uYTQ3NDViMDVkMWQ0ZjQ0ZjQ3MWQ0Y2ZhZDYwMGVlNDFhMTg0OTM2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2
LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQo
Y29tcGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2suZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25l
IGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgp
KTsKLSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNl
dCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1w
dHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAg
IGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50
cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBp
cyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSgpKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0g
ICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENv
bXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUg
Y29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjcz
LDEyICsyMzksMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25D
aGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRp
b25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRXhpdFRodW5rID0gdm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IpOwogICAgIGF1dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklU
VGh1bmtQdHJUYWc+KG9zckV4aXRUaHVuay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRo
R2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBj
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAg
ICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3
ICs0NDcsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3Bl
Y3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
cik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9y
aWdpbigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5r
T1NSRXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlm
IG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApp
bmRleCAzNjE3NDc3ODFmY2Q2ZTc5MTVlN2EyNTk2ODQ2NWQwN2I2OTFiMjllLi5hNTg3OTExZjg2
NjBmMTNkNDYwNDAzZTg4Y2NiMzk2NTVmOWExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0zMTMsNyArMzEzLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxpbmsoTGlua0J1ZmZlciYpOwogICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0
aE9TUihjb25zdCBPU1JFeGl0JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29t
cGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2
b2lkIGRpc2Fzc2VtYmxlKExpbmtCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAKaW5kZXggOGUzYmM1M2Q1NzIzZjhiYTAxYjU2NjU2YzU4NGZmY2VkY2I2
NjRmNS4uODQyNDgwMmQ5NWY4MTBhOWZhM2VhMDQzNjY0NmFmN2FjYmUyZDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogCiAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4
Y2VwdGlvbkhhbmRsZXIgPSBqaXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0q
IHZtUHRyID0gJnZtOwogICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwg
Q29kZUxvY2F0aW9uTGFiZWwodm1QdHItPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAg
IGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BF
bnRyeUZyYW1lKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
dm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRk
TGlua1Rhc2soCi0gICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkZUTCwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQw
OWEyYTViNTM1ZDBkOS4uMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2
b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsQXJpdHlDaGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRv
RXhjZXB0aW9uSGFuZGxlciA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwot
I2Vsc2UKLSAgICAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAg
ICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNl
cHRpb24ubGluaygmaml0KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
ICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0Lmxv
YWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDEx
ICsxMDEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5
Q2hlY2ssIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVj
dG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5
Q2hlY2spKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtC
dWZmZXItPmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSkpOwotI2VuZGlmCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNh
bGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihh
cml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsobWFpblBhdGhKdW1wcywgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggMDRlOGFmZGU0
MWMyNjhhZDljZjJlYjFjNWQzY2YwNDA5ODI4OTM1ZS4uYzVlMTk2NDE0NTYxNjkzNWExYzQ5Mzgz
MTEzNjdiOTUyYTdmZDcyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJM
aW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIK
ICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTQsNiAr
OTUsMzggQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUKICAgICBGSU5BTElaRV9DT0RFKGxpbmtC
dWZmZXIsIE5vUHRyVGFnLCBkZXNjcmlwdGlvbik7CiB9CiAKK3ZvaWQgQ0NhbGxIZWxwZXJzOjpl
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgpIHsKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCBy
ZXR1cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVi
cCk7CisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAg
cHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Cisj
ZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlm
CisgICAgLy8gTWFrZSBlbm91Z2ggc3BhY2Ugb24gdGhlIHN0YWNrIHRvIHBhc3MgYXJndW1lbnRz
IGluIGEgY2FsbAorICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwpCisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKK30K
Kwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkgeworICAgIC8vIFJl
c2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50
ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0
ZXJzOjplYnApOworI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwb3BQ
YWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMp
CisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKKyNlbHNlCisjICAgICAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggOWNiODJjN2UxMWE4
ZTgwN2VjZDhkNmMxZGRkNjMxMTEwYTM2MWNlMS4uNDI0ZTk2NjFkMjY4NTFlMzY5MzIwZTI5OGFh
YjE1YzNkOGQxNWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC04NTMsNiArODUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1pdEpJVENv
ZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2Nv
cGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKKyAgICB2b2lk
IGVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBBcmdOdW0+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNpemVP
ZkFyZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjU3YTZlMTM0NTA1OGZkYmU4
NDIzOGYyMjczNzY1N2QwNjM5OWEwYi4uMjBjNmRiNWEyYWM0NzkwYjBkYzgzNDEyNzU2MDllNmQy
OTZkZjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2OCw3IEBA
IHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkgXAogICAg
IGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+PSBzdGFy
dEJ5dGVjb2RlSW5kZXgpIHsgXAotICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAg
ICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF8jI25h
bWUpOyBcCiAgICAgICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAgIH0gXAog
ICAgICAgICBORVhUX09QQ09ERV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwxNSArMTkw
LDE1IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NBU0VfU0xP
V19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0U2xvd0Nh
c2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAg
ICAgICAgZW1pdFNsb3dDYXNlQ2FsbChpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAogICAgICAg
ICBicmVhazsgXAogICAgIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRTbG93Q2Fz
ZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5j
dGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1Yik7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCkBAIC02NTgsOSArNjU4LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Aoc3RyaWN0
ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVf
c2NvcGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hlY2tfdGR6
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkpCiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC04NTcsOSArODU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5r
V2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBt
X2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVsOyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZpeHVwLgog
CiAgICAgQVNTRVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2YXRlQ29t
cGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3NlbWJsZXIp
CiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAgICAgbV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTExLDEyICs5MDYsMTAgQEAg
dm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgp
LmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNr
LmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRo
Q2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwotI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fbmVhckp1
bXBzKSB7CiAgICAgICAgIGlmIChyZWNvcmQudGFyZ2V0KQpAQCAtMTAzNywzNSArMTAzMCw2IEBA
IENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWluVGhyZWFk
KGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAg
Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRy
eUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChG
YXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSkp
OwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlm
ICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNr
cy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9u
TG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxs
cy5hcHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpKTsKLSAg
ICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQcmVwYXJh
dGlvbkJlZm9yZUNvbXBpbGUoKQogewogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGhhdmUg
dGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWluZyB0eXBl
Y2hlY2sgb3B0aW1pemF0aW9ucyBmb3Igb3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggMjk3ZjNjYTU4MjVmMDQzN2RhMmZmMWQzYWQxZDE5M2NjNjM2ZmI0YS4uOTdm
OTFiODA4NjM0ODQ3OTQ2NmQ1MmJjYjljNGNhZWUwNmQxY2M5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBt
X2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4Y2VwdGlv
bkNoZWNrKHZtKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVF
eGNlcHRpb25IYW5kbGVycygpOwotCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENoZWNrcG9p
bnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7
CiAgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcgKzU1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0eXBlbmFt
ZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFz
X3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUmLCBTbG93
UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9w
ZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lkIGVtaXRT
bG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2Fs
bChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAK
ICAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAK
ICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlw
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVt
aXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiop
OwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNlbGluZUdl
bmVyYXRvcihWTSYpOwogCiAgICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICAgICAgLy8gVGh1bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
Jik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
Jik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9w
cml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRf
dG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsKLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZN
Jik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcihW
TSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHRodW5rSXNVc2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2ZVR5cGUg
cmVzb2x2ZVR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBiZWNhdXNl
IGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1bmsuCi0g
ICAgICAgICAgICAvLyBSZXNvbHZlZENsb3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNhdXNlIHdl
IGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAgICAgICAg
ICAgcmV0dXJuICEocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IFJl
c29sdmVkQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihWTSYpOwog
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29s
dmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVtcGxhdGUg
PFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxl
ckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5l
cmF0b3IoVk0mKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IGY4Njc1ODMyYTg3Y2JlZGFhZjE2YmNhODcxNWY4
YjM1Y2Q1YWY5MzMuLjg0MGZmNzZlNWQ5NjVjZmI5NWE2MDdhMmJkNjZiNjZlMWJhNWJmODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDUxLDE5
ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIGpzUmVn
VDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
ICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0
IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5KCkpOwogICAgICAgICBBU1NFUlQoZ2VuLnNs
b3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kaXYpOworICAgICAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9kaXYpOwogICAg
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCmluZGV4IDI0NGIzZmViNjliNGEwZjQ5ZjBiYzQzZDFlNGFiNDQ5YTMyZTZi
OTcuLmViZmE0MTA4MzE0MGUwYmNmZTJlY2MwYzA4MDc0YzM5MzBkZWNmOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
ICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9u
TW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChy
ZXR1cm5WYWx1ZUpTUiwgc3R1YkluZm9HUFIpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZh
bHVlSlNSID09IGJhc2VKU1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBuZWVkIG1vdmUocmV0dXJuVmFs
dWVKU1IsIGJhc2VKU1IpCkBAIC01MjYsMTQgKzUyNiwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0
UGF0aDo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4
dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRKU1IpOwogICAgIEp1bXAgZ2Vu
ZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwogCi0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90
RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC02MjMsNyArNjIzLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNr
cG9pbnQoanVtcCgpKTsKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENs
b2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgaXRlckNhbGxSZXN1bHRKU1Ig
PSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBjNjdiY2UwOWZmYmM2MGUyNDMzZTYy
MmUzNzgyNzhjZjIwNzRiNGJlLi5mOTNhMzY4ZmY2ZDhlMjg5NGJmNjExNWVjOTMzMzUzOTczOTI5
NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBz
dHViCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENvbnN0
YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5lQWNj
ZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7CkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVy
YXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWcKIAogICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAg
aml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0
QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCBy
ZXN1bHRKU1IpOwpAQCAtMjE3LDggKzIxNyw4IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6
Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAK
ICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnNjcmF0Y2gyR1BSOwogCiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOwogICAgIGF1dG8gZG9JbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAppbmRleCA2MjkyOWMwYzI0ODRmYjljYTBlYzY2MWJiN2MwYTdkZTY0
OWZjOThjLi4yYjc2MjFiOTZjOWMyYmVlODM5MGQ3ZTdkOTYwODljNzczNjg5YmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CkBAIC00OSw0NiArNDksMTIyIEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIGVu
dW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFjZSBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93
IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyNlbmRpZgorCisvLyBG
YXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSe0pTUkluZm86OnJldHVyblZhbHVlSlNSfTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFJ7R1BSSW5mbzo6cmVnVDd9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSe0dQUkluZm86
OnJlZ1Q2fTsKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zlcmxh
cChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWly
ZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVz
cGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9k
ZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlI
ZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BS
LCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRo
dW5rIik7CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiks
ICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3Bh
Y2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24g
Ym90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMy
IH07CisjZW5kaWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFz
dFBhdGggeworY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUntKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUn07CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUntHUFJJbmZvOjpyZWdUN307Citjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFJ7R1BS
SW5mbzo6cmVnVDZ9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9P
dmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVpcmVkIGZvciBE
YXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xv
d1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdU
MCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Qw
IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86
OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiwgZWNt
YU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3IgY2Fs
bCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0
aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1Zh
bHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworLy8g
RmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwg
c2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBv
bmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citj
b25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5
SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAicmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVy
czo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9maWxlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTAxLDcgKzE3Nyw3IEBAIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7CiBzdGF0aWNf
YXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7CiBz
dGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSKTsKIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKK3N0YXRpY19hc3NlcnQoc3R1Yklu
Zm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
KTsKIAogc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdUMzsK
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7CkBAIC0x
NTAsOCArMjI2LDEyIEBAIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBw
YXRocwogY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZh
bHVlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVy
blZhbHVlSlNSIH07CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZh
c3RQYXRoIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OwpAQCAtMTU5LDc3ICsyMzksMTcyIEBAIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJl
Z1Q3IH07Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1J7R1BSSW5mbzo6cmVn
VDYsIEdQUkluZm86OnJlZ1Q3IH07CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRDbG9i
YmVySlNSKSk7CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VK
U1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiksICJyZXF1aXJlZCBm
b3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNl
IFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07
CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFz
c2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7
CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxs
IHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNs
b3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1
cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pT
UiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpT
VmFsdWVSZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZh
c3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07
CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BS
KSwgInJlcXVpcmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0
ZXJzCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgeyBHUFJJbmZvOjpyZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiB7IEdQUkluZm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBieXRlY29k
ZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxs
IHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zlcmxh
cChiYXNlSlNSLCB0aGlzSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBu
YW1lc3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewogY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsKIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6c2NyYXRjaEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07Citjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzY3JhdGNoR1BSIH07CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYg
VVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Qx
IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdp
c3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDJHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BS
SW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJl
dXNpbmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgogI2VuZGlmCitz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7CitzdGF0
aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IucGF5bG9hZEdQUigp
LCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5
SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiwg
c3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVu
ayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2
YWx1ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0
IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVK
U1IgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07CiBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsK
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZv
OjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0
IH07CiBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwogI2Vu
ZGlmCisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsK
K2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGlj
X2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwg
dmFsdWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBEYXRhSUMi
KTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xvd1BhdGgg
eworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgR1BSSW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIC8vIFdlIGFy
ZSBhIGJpdCBzaG9ydCBvZiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwgYnV0IHdlIGNhbiBqdXN0
IGFib3V0IGdldCBhd2F5IHdpdGggdGhpcworICAgIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3RlcigpCisjZWxzZSAvLyBPdGhlciBKU1ZBTFVFMzJfNjQKKyAgICBHUFJJbmZvOjpy
ZWdUOAorI2VuZGlmCit9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGds
b2JhbE9iamVjdEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VK
U1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIs
IHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGlj
X2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwg
dmFsdWVKU1IsIHByb2ZpbGVHUFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAicmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBi
eSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1Ig
eyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiB9OyAvLyBSZXF1aXJlZCBi
eSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisKK25hbWVzcGFjZSBGYXN0UGF0aCB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5k
SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKICNlbmRpZgotc3RhdGljX2Fzc2VydChi
YXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fz
c2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7
CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJyYW5k
SlNSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKK25hbWVzcGFj
ZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSIH07IC8vIFJl
cXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFIg
fTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOwor
fQogfQogCiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwYjNiNWZjZDkzYWIxMmVkNDQwNjJlMmViZWU2
OGM4NmY0ZGZmMmVkLi45NjcxZWNlMDc4YzhiY2U5ODdhMGVlZjQ1OGM2NWRiMjIzZTRkZmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ1MSwyNCArNDUx
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSmZhbHNlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudElu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hv
dWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRkSnVtcChicmFuY2hJZkZhbHNleSh2bSgpLCB2
YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQor
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIGpzUmVnVDMy
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIodmFsdWVJc0ZhbHNleUdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRl
c3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBn
ZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8g
QmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTQ3NywzMSArNDY0LDI1IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2
bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2Vy
dCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0ganNSZWdUMzI7IC8vIEluY29t
aW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0
byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBz
Y3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1t
MzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxz
ZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQot
ICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFs
c2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7
CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGlu
aygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
dmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRy
dWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOwotCi0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BS
KSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRk
SnVtcChicmFuY2hJZlRydXRoeSh2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJl
Z1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9i
amVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9jb25kaXRpb24sIGpzUmVnVDMyKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgp
LmdldENUSVN0dWIodmFsdWVJc1RydXRoeUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7
Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4g
b25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTY3OSwz
MSArNjQ3LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVl
ID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BS
KCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSID0ganNSZWdUMzI7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdU
NTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwogICAgIGNv
bnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAK
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRo
eSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZw
UmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRv
IGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0
LDU3ICs2OTYsNTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0g
cmV0dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlG
cmFtZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwot
ICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKKworICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyB0aHJvd25WYWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDE+KCk7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFy
Z0dQUjA7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dmFsdWUsIHRocm93blZhbHVlSlNSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fdmFsdWUsIHRocm93blZhbHVlR1BSKTsKKwogICAgIGVtaXROYWtlZE5lYXJKdW1w
KHZtKCkuZ2V0Q1RJU3R1YihvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3Bf
dGhyb3dfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKKyAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpOworCisgICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAwPigpOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aHJvd25WYWx1
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7CisgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7CisgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUiwgYnl0ZWNv
ZGVPZmZzZXRHUFIpKTsKICAgICAKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBz
dG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCiAjaWYgTlVNQkVS
X09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgaml0LmxvYWRQdHIoJnZtLnRvcEVu
dHJ5RnJhbWUsIGFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKGFyZ3VtZW50R1BSMCk7CisgICAgeworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSBnbG9iYWxPYmplY3RHUFI7CisgICAgICAgIGppdC5s
b2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNvcHlD
YWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOworICAg
IH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1
bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFs
dWVHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmpl
Y3RHUFIsIHRocm93blZhbHVlSlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKwogICAg
IGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJ
VGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93KSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93X2hhbmRsZXIi
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAKQEAgLTEyNTEsNzcgKzEyMTEsNzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vzbid0IHVzZSB0
aGVtLCB3ZSBpbml0aWFsaXplIG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAg
c3RhbGUgcG9pbnRlcnMsIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwogICAgIC8v
IG9iamVjdCBsaWZldGltZSBhbmQgaW5jcmVhc2luZyBHQyBwcmVzc3VyZS4KLSAgICBzaXplX3Qg
Y291bnQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCk7Ci0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIHNpemVfdCBmaXJzdCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwotICAgIGlmIChmaXJzdCA8IGNv
dW50KQotICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEwKTsK
LSAgICBmb3IgKHNpemVfdCBqID0gZmlyc3Q7IGogPCBjb3VudDsgKytqKQotICAgICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7
CiAKLSAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVn
VDApOwotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDApOwotCi0gICAgZW1pdEVudGVyT3B0aW1p
emF0aW9uQ2hlY2soKTsKLSNlbHNlCiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSA9PSAwKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFyZ3VtZW50
R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0gYXJndW1lbnRH
UFI0OwotCi0gICAgdW5zaWduZWQgbG9jYWxzVG9Jbml0ID0gY291bnQgLSBDb2RlQmxvY2s6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICBzaXpl
X3QgY291bnQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCk7CisgICAgdWludDMyX3Qg
bG9jYWxzVG9Jbml0ID0gY291bnQgLSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKICAgICBSRUxFQVNFX0FTU0VSVChsb2NhbHNUb0lu
aXQgPCBjb3VudCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIobG9jYWxzVG9Jbml0ICogc2l6ZW9m
KFJlZ2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUik7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNh
bkJlT3B0aW1pemVkR1BSID0gcmVnVDA7CisgICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0lu
aXRHUFIgPSByZWdUMTsKKwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNhbkJlT3B0aW1pemVkKCkp
LCBjYW5CZU9wdGltaXplZEdQUik7CisgICAgbW92ZShUcnVzdGVkSW1tMzIobG9jYWxzVG9Jbml0
ICogc2l6ZW9mKFJlZ2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisK
Ky8vICAgIHNpemVfdCBmaXJzdCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworLy8gICAgaWYgKGZpcnN0IDwgY291bnQpCisvLyAg
ICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7CisvLyAgICBm
b3IgKHNpemVfdCBqID0gZmlyc3Q7IGogPCBjb3VudDsgKytqKQorLy8gICAgICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKKy8v
CisvLyAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVn
VDApOworLy8gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7CisvLworLy8gICAgZW1pdEVudGVy
T3B0aW1pemF0aW9uQ2hlY2soKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRs
ZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUo
WDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCiAgICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zm
c2V0IDAuCiAgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
aXRlcmF0b3JHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBhcmd1
bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3Vt
ZW50R1BSNDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0gcmVnVDA7
IC8vIEluY29taW5nCiAKLSAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENvZGVCbG9jazo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwotICAgIGludCBzdGFy
dE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9jYWwpLm9mZnNldCgpOwot
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChzdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3Rlcikp
LCBpdGVyYXRvckdQUik7Ci0gICAgaml0LnN1YjY0KGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRH
UFIsIGVuZEdQUik7Ci0KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAgICBhdXRvIGluaXRMb29wID0gaml0
LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1
YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAgICAgICAgaml0LnN0b3JlNjQodW5k
ZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGl0ZXJhdG9y
R1BSLCBUaW1lc09uZSkpOwotICAgICAgICBqaXQuc3ViNjQoVHJ1c3RlZEltbTMyKHNpemVvZihS
ZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGppdC5qdW1wKGluaXRMb29wKTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSByZWdUMTsgLy8gSW5jb21p
bmcKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IHJlZ1Q0OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9IHJlZ1Q1OworICAgICAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdW5kZWZpbmVkSlNSID0ganNSZWdUMzI7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGxvY2Fsc1RvSW5pdEdQUiwgY2FuQmVPcHRpbWl6ZWRHUFIsIGl0ZXJhdG9yR1BS
LCB1bmRlZmluZWRKU1IpKTsKKworICAgICAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENvZGVCbG9j
azo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAg
ICAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2Fs
KS5vZmZzZXQoKTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IDApOworICAgICAgICBq
aXQuc3ViUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBUcnVzdGVkSW1tMzIoLXN0YXJ0
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgaml0LnN1
YlB0cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgICAgICBqaXQu
bW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAgICAg
IGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGpp
dC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAgICAg
ICB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3MoaXRl
cmF0b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihS
ZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7
CisgICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsKICAgICB9Ci0gICAgaW5p
dERvbmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2sp
LgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1
bWVudEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KKyAgICBqaXQucHVzaChjYW5CZU9wdGltaXplZEdQ
Uik7IC8vIHNhdmUgKGNhbGwgYXJndW1lbnRzIGJlbG93IGFyZSBhbGwgaW4gcmVnaXN0ZXJzLCBz
byBvayB0byBzdGFjayB0aGlzKQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVy
Q2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LnBvcChjYW5CZU9wdGlt
aXplZEdQUik7IC8vIHJlc3RvcmUKIAotICAgIGppdC5tb3ZlKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIHJlc3RvcmUuCi0gICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KTsKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKQEAgLTEzNDgsMTEgKzEzMDgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBq
aXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9w
UGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgorICAgIGpp
dC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwpAQCAtMTM2Myw3ICsxMzE5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogI2VuZGlmCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKIH0KLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNjA3LDU3ICsxNTYyLDQz
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGFyZ3VtZW50R1BSMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYW5kbGVUcmFwcywg
YXJndW1lbnRHUFIwKTsKLSNlbHNlCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gbm9uQXJnR1BSMDsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9jaGVja190cmFwc19oYW5k
bGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsgLy8gSW5jb21pbmcKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBv
ZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwotICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIAorICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKworICAgIC8vIENhbGwgc2xvdyBv
cGVyYXRpb24KICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxl
VHJhcHMpPihnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVt
aXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAg
IGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5w
b3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAg
aml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFp
bCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sg
PSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hC
dWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uSGFuZGxlVHJhcHMpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBz
X2hhbmRsZXIiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCBjYWM0MGNlZDgyYmQ5NzcyOTY1ZGVlYWExMDkzY2M0NWYyOWQyOTE5Li5h
YzliMzYxYTE0Mzc2ZjM2MzNhMDkyYzI3YTljZGM5ZDI3YTFjYWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNTUsOCArNTUsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
UjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHByb3BlcnR5SlNSKTsKQEAgLTEwMSw1MSArMTAxLDIzIEBAIHZvaWQgSklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3Rv
cjxTbG93Q2FzZUVuCiAgICAgaWYgKCFoYXNBbnlTbG93Q2FzZXMoaXRlcikpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFs
T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmczSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYXJnNEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDQ+KCk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLm92ZXJsYXBzKGFyZzRKU1IpKTsKLSAgICBtb3ZlVmFsdWVSZWdzKEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLCBhcmc0SlNSKTsKLSAgICBtb3ZlVmFsdWVSZWdz
KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IsIGFyZzNKU1IpOwotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBhcmczSlNSLCBhcmc0SlNSKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFI0OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MzsgLy8gYXJnMSBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2Zp
bGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3Rh
dGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotICAgIHN0YXRpY19hc3Nl
cnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVn
VDApOwotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IucGF5bG9hZEdQUigpID09IHJlZ1QxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFs
aXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRhdGE6Om9m
ZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAg
LTE1NSw4ICsxMjcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIp
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNjQs
MzUgKzEzNSwzNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFI0OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9i
amVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3Vl
KCk7CisKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBh
cmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRv
IHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJn
dW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBP
cGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtF
cGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuawor
ICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjA0LDcgKzE3Nyw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHByb3BlcnR5SlNSKTsKQEAgLTIzMCw1NSArMjAzLDMwIEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFz
QW55U2xvd0Nhc2VzKGl0ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
SklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsr
XTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldFByaXZhdGVOYW1lPigpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVj
dGlvbik7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRHZXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
cHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRl
X25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZt
KQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBt
YWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWls
YWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzNCwzNSBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAv
LyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3Jl
MzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3Vt
ZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNl
R1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHBy
b3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwg
cHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3Rh
dGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFy
Z3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHVi
SW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAg
aml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFp
bCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sg
PSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTMyMyw3ICsyNzIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
dXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcg
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0zNTQsNDYgKzMwMywyMiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFj
Y2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJh
dGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4o
Ci0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25T
ZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxk
ZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+
Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZgorICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBD
YWxsKCkpOwogfQpAQCAtNDA2LDcgKzMzMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAg
IHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNl
bGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5ICszNTMsMjQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0g
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNl
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nl
c3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRB
Y2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBh
bHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2
YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1Iu
cGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQ
UjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5j
dGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46
OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZh
dGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQpAQCAtNDg2LDE2ICszODYsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJv
ZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1Ip
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7CisgICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJy
YXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2VKU1IsIGJhc2UpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChi
eXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCksIHByb2ZpbGVHUFIpOwotICAgIG1hdGVyaWFs
aXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFy
cmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKKworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVX
aXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCksIC8qIHNjcmF0Y2hHUFI6ICov
IHN0dWJJbmZvR1BSKTsKIAogICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAg
bnVsbHB0ciwgbnVsbHB0ciwgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQ
dXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNTI5
LDc2ICs0MzAsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0X29wX3B1dF9ieV92YWw8
T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBib29sIGlzRGlyZWN0ID0gY3VycmVudEluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OwotICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlOwotICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eTsKLSAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0
KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRlY29kZSkgewotICAgICAgICBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwotICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUg
PSBieXRlY29kZS5tX2VjbWFNb2RlOwotICAgIH07Ci0KLSAgICBpZiAoaXNEaXJlY3QpCi0gICAg
ICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigp
KTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5
VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCA0PigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDU+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAg
ICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dEJ5VmFsRGlyZWN0PigpLCBPcFB1dEJ5VmFsRGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0
T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZWxzZQotICAgICAgICBtYXRlcmlh
bGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFs
PigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7
Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBhcmUgY29uZmlndXJlZCBpbiB0aGUgZmFz
dCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsK
LSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgLy8gY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdv
cmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2Vz
IGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxl
IGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTYwNiwzOSArNDU5LDM4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5n
IFNsb3dPcGVyYXRvaW4gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXpl
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDU7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFs
dWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBy
ZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpwcm9maWxlR1BSOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSByZWdUNTsKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHVzZWQoYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlR1BSLCBwcm9maWxlR1BSKTsKLSAgICAgICAgQVNTRVJUKCF1c2Vk
LmNvbnRhaW5zKHJlZ1Q0KSk7Ci0gICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNSkp
OwotICAgIH0KKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwog
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBUT0RPOiB3aGF0IGlz
IHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4o
c3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlK
U1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQot
ICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAg
ICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRp
b25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGlu
ayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CkBAIC02NTAsNyArNTAyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBA
IC02NzksNTYgKzUzMSwyOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmll
cihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0
aW9uKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1
dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2
YXRlTmFtZT4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlW
YWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwot
ICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25z
dGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NjAsNDEgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0
aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hh
dCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0K
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRy
dXN0ZWRJbW1QdHIobnVsbHB0cikpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0aGlzIHJl
Z2lzdGVyIGlzIG5lY2Vzc2FyeSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwKKyAg
ICAvLyB0byBub3QgY2xvYmJlciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwgYW5kIGlz
IG90aGVyd2lzZSBoYXJtbGVzcy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xv
d09wZXJhdGlvbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFy
Z0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxv
Z3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAg
SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtODQyLDkgKzY3Myw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRj
aEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpyZXN1
bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6
c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1
LDYyICs3MDYsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRz
dCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQogICAgIEpJVERlbEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgrK107CiAKICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7CisgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OwogCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52
YWx1ZSgpKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFN
b2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5r
ZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9
PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICBzdGF0aWNfYXNzZXJ0
KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3Vs
dEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3Jr
IHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBm
cm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC05MzgsMzMgKzc0NCwzOCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9w
ZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpl
Y21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8g
VE9ETzogd2hhdCBpcyB0aGUgcG9pbnQgb2Ygc3RvcmluZyB0aGlzPwogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
YXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQorICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1
bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9i
amVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVk
ZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQu
Y2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1
cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJn
dW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBP
cGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5l
bWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBj
aGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBh
cmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTk3NSw5ICs3ODYsOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVz
aW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3Rl
cnM6OkZhc3RQYXRoOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxS
ZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZUpTUiwgYmFzZSk7CkBAIC0xMDEwLDYzICs4MjEsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKwogICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1Ip
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJn
dW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BS
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVH
UFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fz
c2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwg
cmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQg
bWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFp
bGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODU5LDM4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjA7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAg
ICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2ludCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFy
Z3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGds
b2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIGVjbWFNb2RlR1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQo
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEs
ICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAg
ICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVh
bihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAg
IGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2Vw
dGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNl
cHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
ZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTExLDcgKzkwMSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTExMzgsNDcgKzkyOCwyNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
OworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5k
ZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CkBAIC0xMTkzLDcgKzk2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTksNDcgKzk4OCwyNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKLSAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlk
SW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
CiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwpAQCAtMTI3NCwxMiArMTAyMiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZh
c3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJl
ZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJh
c2VWUmVnKTsKLSAgICAKKwogICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBsb2FkOEZyb21NZXRh
ZGF0YShieXRlY29kZSwgT3BHZXRCeUlkOjpNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0YWRhdGEo
KSArIEdldEJ5SWRNb2RlTWV0YWRhdGE6Om9mZnNldE9mTW9kZSgpLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2gzMihOb3RFcXVhbCwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpLCBz
Y3JhdGNoR1BSKTsKQEAgLTEzMTIsNTEgKzEwNjAsNjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQot
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgr
K107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBh
cmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKK3sKKyAgICAvLyBUaGUgdGh1
bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTElu
dCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJv
dXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25n
aW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKKyAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIFRP
RE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3JpbmcgdGhpcz8KKyAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIp
OworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkg
PT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlh
IFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBl
eGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAo
KTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmso
ZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2dldF9ieV9pZF9DYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY4LDcgKzExMzQsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OnRoaXNKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRo
aXNKU1IpOwpAQCAtMTM5NSw5NiArMTE2MSwzMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQotewotICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBt
YWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWls
YWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5s
aW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5
IG5vdCBtYXRjaAotICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxw
ZXJzIGppdDsKLQotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0KLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0K
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRz
V2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZFdpdGhUaGlzPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1tt
X2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0
aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5l
R2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fz
c2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8v
IFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGgg
dGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0
aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNDkyLDM1ICsxMTk1LDM3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhl
bHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2Jq
ZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBUT0RPOiB3aGF0IGlzIHRoZSBwb2lu
dCBvZiBzdG9yaW5nIHRoaXM/CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBy
ZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0Owot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50
czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCB0
aGlzSlNSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24g
dmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQot
ICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAg
ICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRp
b25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7CisgICAgcGF0
Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1MzYsOCArMTI0MSw4IEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpG
YXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZS
ZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2YWx1
ZUpTUik7CkBAIC0xNTYxLDcgKzEyNjYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7IC8v
IFdlIG1pZ2h0IE9TUiBleGl0IGhlcmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkgcmVz
ZXQgU1AKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7Ci0g
ICAgCisKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJh
cnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFs
V3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQpA
QCAtMTU3MCw1NiArMTI3NSwzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwgY29s
ZFBhdGhCZWdpbih0aGlzKTsKLSAgICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3Vu
bGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09
IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBK
SVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOwor
CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0
aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOworCisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0
ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVl
R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0
ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxp
bmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmln
aHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCkBAIC0xNjI3LDM1ICsxMzA3LDM3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAg
aWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBvaW50IG9mIHN0b3Jp
bmcgdGhpcz8KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFs
dWVHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3Rh
dGljX2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQ
UiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3Bl
cmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwg
cHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3Rh
dGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFy
Z3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHVi
SW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAg
aml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFp
bCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sg
PSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNl
cHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2luX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNjkxLDQ5
ICsxMzczLDI4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsK
LSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAg
ICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91
bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBK
SVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOworCisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFz
ZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRz
KCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdp
bGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQg
aW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50
IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFs
dWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0xNzc3LDUzICsxNDM4LDI3IEBA
IHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKLQotICAgIEpJVElu
QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107Ci0KLSAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUs
IE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIp
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsK
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5
SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigp
OworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5k
ZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJn
dW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIg
PT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRlcklu
dG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVBy
b2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93
X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBw
b2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZm
ZXJlbnQgbmFtZS4KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXpl
KT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTg1OCw0OSAr
MTQ5MywyNiBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwg
VmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpcwogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93
KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5
cGUgdHlwZSkKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQog
ewotICAgIFVOVVNFRF9QQVJBTShiYXNlKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvcGVydHkpOwog
ICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiAKLSAgICBKSVRJbkJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2
YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGlu
ZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9w
ZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3Vt
ZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFu
ZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwg
ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJy
YW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46
OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2Vy
dChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7
CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAt
MTkxMiwxMiArMTUyNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhhc1ByaXZhdGUo
Ynl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNj
ZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFz
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1l
PigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1f
cHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAgICBlbWl0SGFzUHJpdmF0
ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMTkyNiwxMiArMTUzNiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQ
cml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQs
IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2
YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0
ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKyAgICBlbWl0SGFz
UHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQpAQCAtMjU5MCwxMyArMjE5OCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAg
aWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFu
eSBsaW5rZWQgQ29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVC
bG9ja3MgYXJlIGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgot
ICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRl
X2Vycm9yKTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwog
ICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIw
LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOwpAQCAtMjYwNiwxMSArMjIxMCw5IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29w
ZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlz
IGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVj
YXVzZQpAQCAtMjYxOSw0MyArMjIyMSwzNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lm
IENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BV
KEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0g
YXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVu
dEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFy
Z3VtZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKIAorICAgIGppdC5l
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gVE9ETzogd2hhdCBpcyB0aGUgcG9pbnQg
b2Ygc3RvcmluZyB0aGlzPworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKworICAgIC8v
IENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7
CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
b3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNr
KHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRo
dW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBo
YW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhj
ZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBD
b2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQg
SklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewpAQCAtMjc0Myw3ICsyMzM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMu
bGluayh0aGlzKTsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5s
aW5rKHRoaXMpOwpAQCAtMjgwNiw3ICsyMzk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVy
YXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBv
cGVyYXRpb25DYXNlcy5saW5rKHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1l
cmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0
aGlzKTsKQEAgLTI5MDYsNyArMjQ5OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJh
dG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5
cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBT
bG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVu
Y3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
QEAgLTI5MzYsNyArMjUyOSw3IEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3Bl
cnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAKICAgICBzbG93
Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFsQ2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2FzZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5NDQsMzEgKzI1MzcsMzEgQEAgdm9pZCBK
SVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3Jf
aW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19w
YXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Q
cm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiop
CiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjU3MCwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5f
YnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19w
YXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2
YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1
MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZN
JiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5
ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4
MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRo
dW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RL
ZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9u
S2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9
CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwg
Y29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhh
c2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAx
NmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwg
VGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIo
Vk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSog
aG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVj
dXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBj
b25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRj
OWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uNWNlMmFmZjA0MTFlZDJlYTdiOGMxZGE0NWJhNGMzNjEw
NTljYjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENh
bGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApA
QCAtMzYsMTUgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKICAgICBWTSYg
dm0gPSBtX2ppdC0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1faml0LT5t
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5kZXgpOwogCi0gICAgVU5VU0VEX1ZBUklB
QkxFKG1fcGMpOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJ
bmZvOjphcmd1bWVudEdQUjE7CiAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5l
YXJDYWxsKHZtLmppdFN0dWJzLT5jdGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0
aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwpAQCAtNTYsNDQgKzUzLDMxIEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpn
ZW5lcmF0ZVRodW5rKFZNJiB2bSwgU2xvCiAKICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGpp
dC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAorICAgIC8vIFRPRE86IHdoYXQgaXMgdGhlIHBv
aW50IG9mIHN0b3JpbmcgdGhpcz8KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKIAorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLQotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0K
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1lbnRHUFIxID09
IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKICAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLQorICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHVi
KHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAg
IC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCmluZGV4IDg5OWEy
OTAwZmVkZTM3ZGQwZWE1ZTZmMmI5MDY3ZDY1YjAyZTczNjAuLjM0MGM5ZWVjYTZlODI2NTJhOTM2
YWUwOTY0YjA0NDNmNjM0MTJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0
aENhbGwuaApAQCAtMzUsNTAgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKSVRT
bG93UGF0aENhbGwgewogcHVibGljOgotICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24pCisg
ICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVu
Y3Rpb24pCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fc2xvd1BhdGhGdW5jdGlv
bihzbG93UGF0aEZ1bmN0aW9uKQotICAgICAgICAsIG1fcGMocGMpCiAgICAgewogICAgICAgICBh
c3NlcnRJc0NGdW5jdGlvblB0cihzbG93UGF0aEZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICB2b2lkIGNhbGwoKTsKICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVRodW5rKFZNJiwgU2xvd1Bh
dGhGdW5jdGlvbik7CiAKLSNlbHNlIC8vIG5vdCBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQot
ICAgIEpJVDo6Q2FsbCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIG1faml0LT51cGRhdGVUb3BDYWxs
RnJhbWUoKTsKLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+
YWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTE2KSwgTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1f
aml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIxKTsKLSAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50
R1BSMik7Ci0jZWxzZQotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZElt
bVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjEpOwotI2VuZGlmCi0gICAgICAgIEpJVDo6Q2Fs
bCBjYWxsID0gbV9qaXQtPmFwcGVuZENhbGwobV9zbG93UGF0aEZ1bmN0aW9uKTsKLQotI2lmIENQ
VShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMCk7
IC8vIHZQQwotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDEpOyAvLyBjYWxsRnJhbWUgcmVn
aXN0ZXIKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QwID09IEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QxID09IEdQUkluZm86
OnJldHVyblZhbHVlR1BSMik7Ci0jZW5kaWYKLQotICAgICAgICBtX2ppdC0+ZXhjZXB0aW9uQ2hl
Y2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotCiBwcml2YXRlOgogICAgIEpJVCogbV9qaXQ7CiAgICAgU2xvd1BhdGhG
dW5jdGlvbiBtX3Nsb3dQYXRoRnVuY3Rpb247Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fcGM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDhlYjU3YzA5N2IzMGJiNjljOWEyZWFhZGFjODM5ZjNi
ZWRlMmM2OTcuLjAzYzQ5ZDY2NzRiZWMwMmI5NDkwMDc1Mzc3ZGI0NmViNjg4N2ZhMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTQ5LDkg
KzQ5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKLQogICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC01OSw4ICs1Nyw2IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKQEAgLTc3LDggKzczLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5l
cmEKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0K
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNl
cnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKQEAgLTEwMSw4ICs5NSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9wVGh1
bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7
CkBAIC0xMTMsOCArMTA1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICAvLyBFeGNlcHRpb24g
ZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNl
cnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGpp
dC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlmIENQVShB
Uk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBl
cnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Cisj
ZWxpZiBDUFUoTUlQUykKKyAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNl
bHNlCisjICAgICAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYK
ICAgICB9CiAKQEAgLTEyMyw4ICsxMTksMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKICNpZiBDUFUoWDg2XzY0KQogICAg
ICAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wb3BQYWlyKENDYWxs
SGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVy
KTsKKyNlbGlmIENQVShNSVBTKQorICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7
CisjZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgogI2Vu
ZGlmCiAgICAgfQogICAgIGppdC5yZXQoKTsKQEAgLTE0Myw4ICsxNDMsNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJDaGVja0V4Y2VwdGlvbiIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0KIHRlbXBsYXRlPHR5cGVuYW1lIFRhZ1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRl
clZhbGlkYXRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBl
IHRhZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmlu
ZGV4IGE5ZmVlZWE5MjRhZTAwNzhkODQ1MWUxNzJjNGM0OTQ1ZGYxZDVlZTEuLjEwNTQ5MTA0ZWY2
MjBlNzgyOWYwYjRhYmNhYmFlZGM0OTczNWEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtMzgsMTMgKzM4LDggQEAgZW51bSBjbGFzcyBDYWxs
TW9kZTsKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xh
c3MgVk07CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJh
Y2tHZW5lcmF0b3IoVk0mKTsKLQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSYp
OwpAQCAtODIsOSArNzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHRydW5jVGh1bmtHZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYpOwogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDQy
Y2FhNTc1ZWM4ZmUyZjAxODgyNzc5YTRiNDMzMWJkYWNiMjdiZmYuLmNkZjhjNzczNWFhNmZlZGY0
ZTM3NzRkYTA2NmZkNzQyYjJmZjNhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODM5
LDE0ICs4MzksNiBAQAogI2RlZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEK
ICNlbmRpZgogCi0jaWYgQ1BVKEFSTTY0KSB8fCAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1Mp
KQotLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIHRodW5rcyBjYW4gdXNlIHVwIHRvIDYg
YXJndW1lbnQgcmVnaXN0ZXJzLCBhbmQKLSAgIG1ha2UgdXNlIG9mIEFSTTY0IGxpa2UgZmVhdHVy
ZXMuIEZvciBub3csIHdlJ2xsIG9ubHkgc3VwcG9ydCB0aGVtIG9uIHBsYXRmb3JtcwotICAgdGhh
dCBoYXZlIDYgb3IgbW9yZSBhcmd1bWVudCByZWdpc3RlcnMgdG8gdXNlLgotKi8KLSNkZWZpbmUg
RU5BQkxFX0VYVFJBX0NUSV9USFVOS1MgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVf
QklORElOR19JTlRFR1JJVFkpICYmICFPUyhXSU5ET1dTKQogI2RlZmluZSBFTkFCTEVfQklORElO
R19JTlRFR1JJVFkgMQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447123</attachid>
            <date>2021-12-14 04:52:12 -0800</date>
            <delta_ts>2022-01-04 06:59:35 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233822-20211214125211.patch</filename>
            <type>text/plain</type>
            <size>187758</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZWRjMmM5MDlhNjFjNDlkMjk4MmJkM2JkOTUyOTNlM2NmNDI5Y2ZjLi42NmMzMzVmMjQzNGE4MWEz
N2ZhNjA2NmNkOTY1NWVjMmYyYzkyODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjEtMTItMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMS0xMi0wMiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbSlNDXSBHZW5lcmF0ZWQgY29kZSBzaXplIHJlZHVjdGlvbnMgZm9y
IGJhc2VsaW5lIEpJVCAoYWxsIGFyY2hpdGVjdHVyZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwZDAxNWI3Y2YzNTAyZTRi
ZGVlMWYyMWYwNmRmNTc1NjdiNWRiODIuLjMzMDY0M2I5YmM4YjMwOGUyZjk1ZmJjNGY4OWY2YjA2
NTZmNmEzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMDMgIEdlemEgTG9yZSAgPGds
b3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRv
IGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEtMTEtMjkgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0xCU0VdIEFkZCBy
dW50aW1lIGZsYWcgZm9yIExheWVyLWJhc2VkIFNWRyBlbmdpbmUgKExCU0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggNjgxMDVi
ZDFiNDdjNWZhMDZmZDM1YjE5NTMxYjAyNWRmNWIyMjI3Ni4uOTZlMDQzMjIzZDNjZjdiMWE5NWZi
YmRiZDgwMDgzOTQyNWFmZDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1
YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIHN1YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2
b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBzdWIzMihpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJl
Z2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IHN1YjMyKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAg
ICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5k
ZXggMjlkZmZjOGIzNTY2MGZlZGIxMjcyYTMzODJhNTIxZjVhYjIxMTFiNS4uOTY4YWEwODJhYjRi
ZDEyYzIzMWM4ZDYzZTIyNTVlMWU4MDAxODNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7
CiAKIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRl
bXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdp
c3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRp
YyBpbmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lz
dGVyczo6aXA7CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNz
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIg
QVJNUmVnaXN0ZXJzOjpGUERvdWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdp
c3RlcnM6OmQ3OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBE
b3VibGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBp
bmxpbmUgQVJNUmVnaXN0ZXJzOjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1Np
bmdsZSgpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9
CiAKICAgICAvLyBJbiB0aGUgVGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBv
cGVyYXRpbmcgb25seSBvbiByZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lT
VEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1G
UFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihE
VU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZB
TFVFCi0gICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVt
cFJlZ2lzdGVyOyB9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3Jh
dGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNy
b0Fzc2VtYmxlckFSTXY3KCkKICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCmluZGV4IDA0NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIu
LmIyZTkxMWFhMTM2NjNhMjUwOTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
QEAgLTgwNCw3ICs4MDQsMTMgQEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdWJxX2lyKGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBk
ZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5k
ZXggNGI5YTQ5NTlmZDhmZjM1MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFm
OWU3MjVkMjUyNGY0ZWZlNjhkNjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywx
MiBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFu
ZGxlcigpCiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNl
cHRpb25IYW5kbGVyLCBvcmlnaW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9
KTsKICAgICB9IGVsc2UgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwog
ICAgICAgICBWTSogdm0gPSAmbV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxp
bmtCdWZmZXIubGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2
bS0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgICAgICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbihtX3ZtKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlv
bkhhbmRsZXJDYWxsID0gaml0LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+
YWRkTGlua1Rhc2soCi0gICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
LSAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNh
bGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9u
SGFuZGxlcikpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9u
SGFuZGxlcihtX3ZtKTsKLSNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQy
YmQ0OTViNjZlY2E0NTA4ZDczYjhkMzhjYWNmZjE1Yy4uNTI4ZDQ3MzhkYTY3YWUwMWY2YzQyMDk4
YmRkNTMxYTM0YmNlMmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENv
ZGVCbG9jayosIFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6Okdl
dEJ5SWQgJiYgdW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewog
ICAgICAgICAvLyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRD
bG9iYmVySlNSIiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVn
aXN0ZXJzLnNldChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJl
ckpTUik7CiAgICAgfQogCiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjgsMjQgKzUy
OCwyNCBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3Ry
dWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICBoYXNDb25zdGFudElkZW50
aWZpZXIgPSBmYWxzZTsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0
ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQ
UiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAg
ICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50
YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVu
dGlmaWVyID0gdHJ1ZTsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZh
bGlkR1BSUmVnOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYu
cHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50
YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dEJ5VmFsOgpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAg
ICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0
dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYu
cHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50
YWdHUFIoKTsKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAg
ICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlR1BSID0gQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
di50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKQEAgLTYxOSw3ICs2MTksNyBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJl
U3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1
ZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9h
ZEdQUigpOwogICAgICAgICByZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAg
ICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVz
dWx0SlNSLnRhZ0dQUigpOwpAQCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBV
bmxpCiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VH
UFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02NDQsNyAr
NjQ0LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0
cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdz
LnByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5
bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAgICAg
ICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKICAgICAgICAgICAgIG1f
YXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxv
Y2sqLCBVbmxpCiAgICAgICAgIHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKICAgICAgICAgcmVncy5icmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQ
UlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpiYXNlSlNSLnRhZ0dQUigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAppbmRleCBhZTM4ZjZmN2QyNWU1MDhjOTBiMjU4YTkwZjM3MzNkMjUyMGY4MDIz
Li5hNDc0NWIwNWQxZDRmNDRmNDcxZDRjZmFkNjAwZWU0MWExODQ5MzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21w
aWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFj
ay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxi
YWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRp
b25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJn
dW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwot
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkg
KiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgp
KSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29w
eUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZy
YW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBh
c3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigm
dm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKCkpOwotCi0gICAgICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9u
SGFuZGxlcik7Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2Rl
LCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIg
KzIzOSwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAg
ICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9u
Q2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNr
cywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNo
ZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxp
bmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBvc3JFeGl0VGh1bmsgPSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcik7CiAgICAgYXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVu
a1B0clRhZz4ob3NyRXhpdFRodW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5l
cmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBp
bGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8v
IENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0
Nyw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxh
dGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsK
ICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2lu
KCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JF
eGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVj
ZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4
IDM2MTc0Nzc4MWZjZDZlNzkxNWU3YTI1OTY4NDY1ZDA3YjY5MWIyOWUuLmE1ODc5MTFmODY2MGYx
M2Q0NjA0MDNlODhjY2IzOTY1NWY5YTE3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKQEAgLTMxMyw3ICszMTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
bGluayhMaW5rQnVmZmVyJik7CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NS
KGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxl
RXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQg
ZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAppbmRleCA4ZTNiYzUzZDU3MjNmOGJhMDFiNTY2NTZjNTg0ZmZjZWRjYjY2NGY1
Li44NDI0ODAyZDk1ZjgxMGE5ZmEzZWEwNDM2NjQ2YWY3YWNiZTJkNTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQg
Y29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQp
CiAKICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0
aW9uSGFuZGxlciA9IGppdC5sYWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
ICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1Q
dHIgPSAmdm07CiAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5
RnJhbWUpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5r
VGFzaygKLSAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5r
QnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJh
NWI1MzVkMGQ5Li4yOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNl
cHRpb25IYW5kbGVyID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxz
ZQotICAgICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNU
b0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
LSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxl
ckZyb21DYWxsZXJGcmFtZSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAg
ICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlv
bi5saW5rKCZqaXQpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAg
ICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEw
MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVj
aywgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3Io
KSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVj
aykpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZl
ci0+bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNh
bGxlckZyYW1lKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFy
aXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5
Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayht
YWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2
OGFkOWNmMmViMWM1ZDNjZjA0MDk4Mjg5MzVlLi45ZDZmMjk5NzFjMjc0ZThkZWVjNjQ5YzI3OTA4
NTU5ZGYyZWY5NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKKyNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2lu
Y2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0
MCBAQCB2b2lkIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgTm9QdHJUYWcsIGRlc2NyaXB0aW9uKTsKIH0KIAordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRD
VElUaHVua1Byb2xvZ3VlKCkKK3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1
cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7
CisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVz
aFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxz
ZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAv
LyBNYWtlIGVub3VnaCBzcGFjZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBj
YWxsCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQorCit2b2lk
IENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rRXBpbG9ndWUoKQoreworICAgIC8vIFJlc2V0IHN0
YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgYW5k
IHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0ZXJzOjpl
YnApOworI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAg
cG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNl
bHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA5Y2I4MmM3ZTExYThlODA3ZWNkOGQ2
YzFkZGQ2MzExMTBhMzYxY2UxLi40MjRlOTY2MWQyNjg1MWUzNjkzMjBlMjk4YWFiMTVjM2Q4ZDE1
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTg1Myw2
ICs4NTMsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8
dm9pZChDQ2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsKIAorICAgIHZvaWQgZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKyAgICB2b2lkIGVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKIHByaXZh
dGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bT4KICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3
NjU3ZDA2Mzk5YTBiLi4yMGM2ZGI1YTJhYzQ3OTBiMGRjODM0MTI3NTYwOWU2ZDI5NmRmNWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6
OnJlc2V0U1AoKQogI2RlZmluZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8j
I25hbWU6IHsgXAogICAgICAgICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJ
bmRleCkgeyBcCi0gICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5F
WFRfT1BDT0RFX0lOX01BSU4ob3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9p
ZCBKSVQ6OnJlc2V0U1AoKQogCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUp
IFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3Vy
cmVudEluc3RydWN0aW9uLCBpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0
U2xvd0Nhc2VDYWxsKGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBc
CiAgICAgfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
LCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKQEAgLTY1OCw5ICs2NTgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfU0xPV19PUChnZXRfcHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNl
bmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVs
dDoKQEAgLTg1Nyw5ICs4NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0Rmlu
YWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVj
ayA9IGVudHJ5TGFiZWw7IC8vIE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NF
UlQobV9qbXBUYWJsZS5pc0VtcHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0
aW9uSGFuZGxlcnMoKTsKLSAgICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAg
bV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRl
cjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC05MTEsMTIgKzkwNiwxMCBAQCB2b2lkIEpJVDo6
bGluaygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
ICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVy
LmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwog
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkK
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlv
bldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7Ci0jZW5kaWYKIAogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAg
ICAgICAgaWYgKHJlY29yZC50YXJnZXQpCkBAIC0xMDM3LDM1ICsxMDMwLDYgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25FZmZvcnQKICAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2Nr
KTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tz
V2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVl
U2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwot
Ci0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJh
bWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNh
bGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNv
cmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAg
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhp
cyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChG
YXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1w
VG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLX0KLQogdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3Jl
Q29tcGlsZSgpCiB7CiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1
cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRp
bWl6YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCAyOTdmM2NhNTgyNWYwNDM3ZGEyZmYxZDNhZDFkMTkzY2M2MzZmYjRhLi45N2Y5MWI4MDg2MzQ4
NDc5NDY2ZDUyYmNiOWM0Y2FlZTA2ZDFjYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTI3Niw4ICsyNzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9u
Q2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0o
KSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhh
bmRsZXJzKCk7Ci0KICAgICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAg
ICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAg
dm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRo
RnVuY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJ
bXBsKGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rp
b25UeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChj
b25zdCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biopOwogCkBAIC02MTQsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2Fs
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBT
bG93UGF0aEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2
b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2
b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBi
YXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAg
ICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZh
dGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAg
ICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgs
MzkgKzY1NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZN
Jik7CiAKICAgICBwcml2YXRlOgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAg
ICAvLyBUaHVuayBnZW5lcmF0b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0
b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9w
dXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxf
YnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsK
KyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdl
bmVyYXRvcihWTSYpOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNr
X3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgdGh1bmtJc1VzZWRGb3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlw
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9y
ZSBlZmZpY2llbnQgdG8gZW1pdCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAg
IC8vIFJlc29sdmVkQ2xvc3VyZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNl
IHRoZXNlIHR5cGVzIHdpdGggb3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4g
IShyZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9z
dXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFs
c2V5R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2
ZV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVy
YXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5
cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9y
KFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYp
OwogCiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAKaW5kZXggZjg2NzU4MzJhODdjYmVkYWFmMTZiY2E4NzE1ZjhiMzVjZDVhZjkz
My4uODQwZmY3NmU1ZDk2NWNmYjk1YTYwN2EyYmQ2NmI2NmUxYmE1YmY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
c2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8g
Q1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rp
b24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
QEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2Vu
LmVuZEp1bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1w
TGlzdCgpLmVtcHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAKaW5kZXggMjQ0YjNmZWI2OWI0YTBmNDlmMGJjNDNkMWU0YWI0NDlhMzJlNmI5Ny4uZWJmYTQx
MDgzMTQwZTBiY2ZlMmVjYzBjMDgwNzRjMzkzMGRlY2Y5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAg
ICB9KSgpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVj
dGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBK
dW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BS
MiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5l
cmljKSkpOwogCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRo
OjpzdHViSW5mb0dQUjsKIAogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVl
SlNSLCBzdHViSW5mb0dQUikpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVKU1IgPT0g
YmFzZUpTUik7IC8vIE90aGVyd2lzZSB3aWxsIG5lZWQgbW92ZShyZXR1cm5WYWx1ZUpTUiwgYmFz
ZUpTUikKQEAgLTUyNiwxNCArNTI2LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9u
dENsb2JiZXJKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250
Q2xvYmJlckpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRo
OjpzdHViSW5mb0dQUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBuZXh0SlNSID0gYmFz
ZUpTUjsgLy8gVXNlZCBhcyB0ZW1wb3JhcnkgcmVnaXN0ZXIKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgbmV4dEpTUik7CiAgICAgSnVtcCBnZW5lcmljQ2FzZSA9
IGJyYW5jaElmTm90RW1wdHkobmV4dEpTUik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93QwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1w
KCkpOwogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsK
IAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9i
YmVySlNSOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNm
MjA3NGI0YmUuLmY5M2EzNjhmZjZkOGUyODk0YmY2MTE1ZWM5MzMzNTM5NzM5Mjk2MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5l
cmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1Yklu
Zm8sIHN0dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGlu
ZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZwogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
V2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENv
bnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5l
QWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7
CkBAIC0yMTcsOCArMjE3LDggQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6c2NyYXRjaEdQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNj
cmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0
aDo6c2NyYXRjaDJHUFI7CiAKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlSlNSLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRj
aEdQUik7CiAgICAgYXV0byBkb0lubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBl
cnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUw
Njg5YjcyMTlmY2ZiNjk5ZTVmODUyNDk0ZmI3NmI1ZDBlNDIyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ5LDQ2
ICs0OSwxMjIgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBK
SVRUeXBlIDogdWludDhfdDsKIAogbmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnMg
ewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVl
SlNSIH07CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKICNp
ZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0aCBv
bmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpT
UiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJl
Z2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0ZXhwciBHUFJSZWcg
ZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
K2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2Nv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIg
R1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0
ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3Ig
Y2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092
ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9
CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMgewotY29uc3RleHByIEpT
VmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisvLyBSZWdp
c3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKICNpZiBVU0UoSlNWQUxVRTY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMK
K25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsg
SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86
OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcg
fTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAjZW5k
aWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBT
bG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QwIH07Citjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Citj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9
OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25z
dGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3Rh
dGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJl
ZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJz
Ojpub092ZXJsYXAoYmFzZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVy
dHlHUFIsIGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJl
Z2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpT
VkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
IHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdp
c3RlcnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1Q2IH07CiAjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJv
ZmlsZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1i
bHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0
R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkg
dGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpT
UiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
LCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogI2lmIFVT
RShKU1ZBTFVFNjQpCkBAIC0xMDEsNyArMTc3LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKIHN0YXRpY19hc3NlcnQocHJvcGVy
dHlKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogc3RhdGlj
X2Fzc2VydChyZXN1bHRKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
KTsKLXN0YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6c3R1YkluZm9HUFIpOworc3RhdGljX2Fzc2VydChzdHViSW5mb0dQUiA9PSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFIpOwogCiBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMSA9IEdQUkluZm86OnJlZ1QzOwogc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDIgPSBHUFJJbmZvOjpyZWdUNDsKQEAgLTE1MCw4ICsyMjYsMTIgQEAgc3Rh
dGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9w
ZXJ0eUpTUik7CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnMgeworLy8g
UmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKworLy8g
RmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShK
U1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEg
fTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CkBAIC0x
NjEsNzUgKzI0MSwxNzAgQEAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OwogY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYs
IEdQUkluZm86OnJlZ1Q3IH07CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJz
Ojpub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRDbG9iYmVy
SlNSKSk7CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiksICJyZXF1aXJlZCBmb3Ig
RGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNs
b3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5m
b0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Citz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRv
IHNsb3cgb3BlcmF0aW9uIik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cg
cGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7
IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFs
dWVSZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZhc3Qg
cGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7
IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVy
czo6bm9PdmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwg
InJlcXVpcmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJz
CituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
eyBHUFJJbmZvOjpyZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7
IEdQUkluZm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChi
YXNlSlNSLCB0aGlzSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQ
UiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1l
c3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewogY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1Yklu
Zm9HUFIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c2NyYXRjaEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07Citjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRo
OjpzY3JhdGNoR1BSIH07CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnMg
eworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNF
KEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
SlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJH
UFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJldXNp
bmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgogI2VuZGlmCitzdGF0
aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IucGF5bG9hZEdQUigpLCB2
YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKSwgInJlcXVpcmVk
IGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3Bh
Y2UgU2xvd1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1
YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIp
Oworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1
ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWly
ZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFu
ZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CiBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdU
MyB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpy
ZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07
CiBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwogI2VuZGlm
CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKK2Nv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFs
dWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBEYXRhSUMiKTsK
K30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xvd1BhdGggewor
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgR1BSSW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIC8vIFdlIGFyZSBh
IGJpdCBzaG9ydCBvZiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwgYnV0IHdlIGNhbiBqdXN0IGFi
b3V0IGdldCBhd2F5IHdpdGggdGhpcworICAgIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hS
ZWdpc3RlcigpCisjZWxzZSAvLyBPdGhlciBKU1ZBTFVFMzJfNjQKKyAgICBHUFJJbmZvOjpyZWdU
OAorI2VuZGlmCit9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGdsb2Jh
bE9iamVjdEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFs
dWVKU1IsIHByb2ZpbGVHUFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAicmVxdWly
ZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBz
aGFyZWQgc2xvdyBwYXRoIHRodW5rCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgeyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiB9OyAvLyBSZXF1aXJlZCBieSBz
aGFyZWQgc2xvdyBwYXRoIHRodW5rCisKK25hbWVzcGFjZSBGYXN0UGF0aCB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKICNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNS
IHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKICNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNl
SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2Vy
dChicmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Citz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNS
LCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKK25hbWVzcGFjZSBT
bG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSIH07IC8vIFJlcXVp
cmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFIgfTsg
Ly8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworc3RhdGljX2Fzc2VydChBc3Nl
bWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRH
UFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQog
fQogCiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAwYjNiNWZjZDkzYWIxMmVkNDQwNjJlMmViZWU2OGM4
NmY0ZGZmMmVkLi40NDliOTA4NGU2YWI2ODU3YjhhODJjOWY5OGU1ZDI3MTljZjhmMTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ1MSwyNCArNDUxLDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SmZhbHNlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3Ry
dWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZSA9IGpzUmVnVDEwOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gx
LCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRkSnVtcChicmFuY2hJZkZhbHNleSh2bSgpLCB2YWx1
ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIGpzUmVnVDMyKTsK
ICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIodmFsdWVJc0ZhbHNleUdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3Qz
MihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5l
cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFz
ZWxpbmUgSklUIGJlY2F1c2UKQEAgLTQ3NywzMSArNDY0LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2
YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0ganNSZWdUMzI7IC8vIEluY29taW5n
CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHJlZ1Q0OwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVj
dEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBp
c0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3Jh
dGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIo
MCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXku
bGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAg
IGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5
KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1Qx
LCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Cisg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygm
aml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZh
bHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFs
dWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVs
KTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOwotCi0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gx
ID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7
Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
dHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRkSnVt
cChicmFuY2hJZlRydXRoeSh2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1Qw
LCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVj
dEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9jb25kaXRpb24sIGpzUmVnVDMyKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIodmFsdWVJc1RydXRoeUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0j
ZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZt
KQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTY3OSwzMSAr
NjQ3LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1
ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlID0g
cmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSID0ganNSZWdUMzI7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwogICAgIGNvbnN0
ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2
bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVn
VDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBq
aXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVz
dGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlz
VHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3
ICs2OTYsNTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0
dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlD
YWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFt
ZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAg
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgU2xvd09wZXJh
dGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKKworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB0aHJvd25WYWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDE+KCk7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQ
UjA7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVjb2Rl
T2Zmc2V0R1BSKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFs
dWUsIHRocm93blZhbHVlSlNSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fdmFsdWUsIHRocm93blZhbHVlR1BSKTsKKwogICAgIGVtaXROYWtlZE5lYXJKdW1wKHZt
KCkuZ2V0Q1RJU3R1YihvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfdGhy
b3dfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICAK
LSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKIAorICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2Jh
bE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisgICAgCiAj
aWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgaml0LmxvYWRQdHIo
JnZtLnRvcEVudHJ5RnJhbWUsIGFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LmNvcHlDYWxsZWVTYXZl
c1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGFyZ3VtZW50R1BSMCk7CisgICAgeworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSBnbG9iYWxPYmplY3RHUFI7CisgICAg
ICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
aml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hH
UFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlR1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1
ZUpTUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRj
aEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25UaHJvdykpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC0xMjUx
LDc3ICsxMjA5LDc3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9u
KikKICAgICAvLyBFdmVuIHRob3VnaCBDVEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6
ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0
byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUg
YW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCi0gICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtl
ZENvZGVCbG9jay0+bnVtVmFycygpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpZiAoZmlyc3QgPCBjb3VudCkKLSAgICAgICAgbW92
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7Ci0gICAgZm9yIChzaXplX3Qg
aiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdUMTApOwogCi0gICAgbG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICBlbWl0V3Jp
dGVCYXJyaWVyKHJlZ1QwKTsKLQotICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7Ci0j
ZWxzZQogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgPT0gMCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIHVuc2ln
bmVkIGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc2l6ZV90IGNvdW50ID0gbV91bmxp
bmtlZENvZGVCbG9jay0+bnVtVmFycygpOworICAgIHVpbnQzMl90IGxvY2Fsc1RvSW5pdCA9IGNv
dW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobG9jYWxzVG9Jbml0IDwgY291bnQpOwotICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2Nh
bHNUb0luaXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9
IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7CisK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRH
UFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3Rl
cikpLCBsb2NhbHNUb0luaXRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisvLyAgICBzaXplX3QgZmly
c3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKTsKKy8vICAgIGlmIChmaXJzdCA8IGNvdW50KQorLy8gICAgICAgIG1vdmVUcnVzdGVk
VmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOworLy8gICAgZm9yIChzaXplX3QgaiA9IGZp
cnN0OyBqIDwgY291bnQ7ICsraikKKy8vICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7CisvLworLy8gICAgbG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKKy8vICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDApOworLy8KKy8vICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNr
KCk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQu
cHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxp
bmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwog
ICAgIC8vIG9wX2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9mZnNldCAwLgogICAgIGppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQ
UiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gYXJn
dW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gYXJndW1lbnRHUFIyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgY29u
c3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1QwOyAvLyBJbmNvbWluZwogCi0g
ICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZzZXQoKTsKLSAgICBqaXQubW92ZShUcnVz
dGVkSW1tNjQoc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwot
ICAgIGppdC5zdWI2NChpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOwotCi0g
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IHVuZGVmaW5lZEdQUik7Ci0gICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOwotICAgIEp1
bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwg
ZW5kR1BSKTsKICAgICB7Ci0gICAgICAgIGppdC5zdG9yZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUlu
ZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpdGVyYXRvckdQUiwgVGltZXNPbmUpKTsK
LSAgICAgICAgaml0LnN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0
b3JHUFIpOwotICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBlbmRHUFIgPSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5l
ZEpTUiA9IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNU
b0luaXRHUFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7
CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVD
YWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zm
c2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAg
ICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihS
ZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5zdWJQdHIoaXRlcmF0b3JHUFIs
IGxvY2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKKyAgICAgICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwgdW5kZWZpbmVkSlNSKTsKKworICAgICAgICBhdXRvIGluaXRMb29wID0g
aml0LmxhYmVsKCk7CisgICAgICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1Ro
YW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKKyAgICAgICAgeworICAgICAgICAgICAg
aml0LnN0b3JlVmFsdWUodW5kZWZpbmVkSlNSLCBBZGRyZXNzKGl0ZXJhdG9yR1BSKSk7CisgICAg
ICAgICAgICBqaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0
b3JHUFIpOworICAgICAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgICAgICB9CisgICAg
ICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAgICAgfQotICAgIGluaXREb25lLmxpbmsoJmppdCk7
CiAKICAgICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChjYW5CZU9wdGltaXplZEdQUiwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQ
UjIpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGFyZ3VtZW50R1BSMSk7CiAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0g
aml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKIAotICAg
IGppdC5tb3ZlKGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7
IC8vIHNhdmUuCisgICAgaml0LnB1c2hUb1NhdmUoY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyBzYXZl
IChjYWxsIGFyZ3VtZW50cyBiZWxvdyBhcmUgYWxsIGluIHJlZ2lzdGVycywgc28gb2sgdG8gc3Rh
Y2sgdGhpcykKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVC
YXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQu
Y2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIGppdC5wb3BUb1Jlc3RvcmUoY2FuQmVPcHRpbWl6
ZWRHUFIpOyAvLyByZXN0b3JlCiAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAgIGppdC5tb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7
CiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAjaWYgRU5BQkxF
KERGR19KSVQpCkBAIC0xMzQ4LDExICsxMzA2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAg
IH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0
LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBh
aXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKQEAgLTEzNjMsNyArMTMxNyw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkK
ICNlbmRpZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTYwNyw1NyArMTU2MCw0MCBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9iamVjdChh
cmd1bWVudEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIGFy
Z3VtZW50R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IG5vbkFyZ0dQUjA7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7CiAKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0
dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxl
ckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShY
ODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0
KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1l
bnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRH
UFIwOwotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgY29kZUJsb2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICAKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsg
Ly8gSW5jb21pbmcKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8g
Q2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIEND
YWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhj
ZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBq
aXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRp
b24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0
aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7
Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVz
QW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25l
d19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggY2Fj
NDBjZWQ4MmJkOTc3Mjk2NWRlZWFhMTA5M2NjNDVmMjlkMjkxOS4uMzRmZDZjOGRmNTY0Y2RhNWVi
MjY2ZDRlODI3OTc1YTgyNmY5MWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0
eUpTUik7CkBAIC0xMDEsNTEgKzEwMSwyMyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNs
b3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAg
IGlmICghaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzRK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgc3Rh
dGljX2Fzc2VydCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVybGFwcyhh
cmc0SlNSKSk7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUiwgYXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFk
YXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUo
KSwgcHJvZmlsZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0
QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBh
bHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRH
UFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVy
dHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIo
KSA9PSByZWdUMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmls
ZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkK
IHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkg
d29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFr
ZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFi
bGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJv
ZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3Bl
cmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewpAQCAtMjA0LDcgKzE3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3Bl
cnR5SlNSKTsKQEAgLTIzMCw1NSArMjAxLDMwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nh
c2VzKGl0ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLSAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFBy
aXZhdGVOYW1lPigpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1Ip
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3Bl
cnR5SlNSKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlH
UFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJl
c3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9t
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzMiwzNCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZv
R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNs
b3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVn
VDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02
NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0K
ICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGds
b2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0K
LSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5
R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNo
IHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMyw3ICsyNjksNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdp
c3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6
OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0z
NTQsNDYgKzMwMCwyMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5k
PigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJh
bmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJl
YWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5
bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEp
OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlv
blRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1
bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA2LDcgKzMyOCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAt
NDI4LDQ5ICszNTAsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRl
QnJhbmQ+KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVC
cmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZh
dGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4o
Ci0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25D
aGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBl
cz46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDg2LDE2ICszODMs
MTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CiAgICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHByb3BlcnR5SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCB2YWx1ZUpTUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwotICAgIGVtaXRB
cnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCks
IHByb2ZpbGVHUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29k
ZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKKwor
ICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXls
b2FkR1BSKCksIC8qIHNjcmF0Y2hHUFI6ICovIHN0dWJJbmZvR1BSKTsKIAogICAgIEpJVFB1dEJ5
VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNTI5LDc2ICs0MjcsMjggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBi
b29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9i
eV92YWxfZGlyZWN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwotICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBbJl0oYXV0
byBieXRlY29kZSkgewotICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgICAgICBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwotICAgIH07
Ci0KLSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dEJ5VmFsRGlyZWN0PigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWQoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDU+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpLCBPcFB1dEJ5
VmFsRGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
Ci0gICAgZWxzZQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21f
cHV0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhl
eSBhcmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAg
IC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVl
R1BSID0gcmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBi
eSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBK
SVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBn
bG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
QEAgLTYwNiwzOSArNDU2LDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRvaW4gPSBkZWNsdHlwZShvcGVy
YXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gcmVnVDU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKLSAgICB7Ci0gICAgICAg
IFJlZ2lzdGVyU2V0IHVzZWQoYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBwcm9maWxl
R1BSKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q0KSk7Ci0gICAgICAgIEFT
U0VSVCghdXNlZC5jb250YWlucyhyZWdUNSkpOwotICAgIH0KKyAgICB1c2luZyBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2Jh
bE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3Vl
KCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNv
ZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9i
amVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZh
bFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGds
b2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQ
UiwgcHJvZmlsZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBq
aXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAg
aml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0
aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3By
ZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NTAsNyArNDk3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC02NzksNTYgKzUyNiwyOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNl
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLQotICAgIEpJVFB1dEJ5VmFs
R2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKLQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVG
aWVsZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3Bl
cnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAg
ICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKLSNl
bHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwogCi0gICAgLy8gY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBy
ZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQog
Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkg
dGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklU
IGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xv
YmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBA
IC03MzYsMzQgKzU1NSwzOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1Bh
dGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVu
a1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3Jl
MzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSByZWdUNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRC
eVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpKTsKKyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBuZWNlc3Nh
cnkgZm9yIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90IGNsb2Ji
ZXIgZ2xvYmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2UgaGFybWxl
c3MuCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQUik7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJ
bmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2
YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0g
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAg
IGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAg
ICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8g
VGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1
ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0Miw5ICs2NjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAg
ICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTg3NSw2MiArNjk5LDM3IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lRGVs
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5
SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURl
bEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50
R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlk
UmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9h
ZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Ym94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsg
Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAv
IEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQg
dGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3MzcsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8K
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRp
b24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1l
bnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0K
LSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJy
YW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQ
UiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKQEAgLTk3NSw5ICs3NzcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
OjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFz
ZSk7CkBAIC0xMDEwLDYzICs4MTIsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9k
ZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
Ojpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxS
ZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKwogICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3Bl
cmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVn
VDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1
bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0SlNS
KTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODUwLDM2IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmVjbWFN
b2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0g
YXJndW1lbnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVHUFIp
OwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwg
Ik5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAg
IGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGppdC5ib3hCb29sZWFu
KHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAg
aml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0
aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9k
ZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTExMTEsNyArODkwLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTEzOCw0NyArOTE3LDI2IEBAIHZvaWQg
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShKSVQ6OlRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0K
ICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0g
cmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKQEAgLTExOTMsNyArOTUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFz
ZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTIxOSw0NyArOTc3LDI2IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5
dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJ
bmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CkBAIC0xMjc0LDEyICsxMDExLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVn
LCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFz
ZVZSZWcpOwotICAgIAorCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJvbU1ldGFk
YXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0YSgp
ICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSksIHNj
cmF0Y2hHUFIpOwpAQCAtMTMxMiw1MSArMTA0OSw2NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0g
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50
KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gYXJndW1lbnRHUFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdp
bmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworCisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9w
ZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVj
dEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNl
dHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlv
biB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFn
KTsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7
Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKQEAgLTEzNjgsNyArMTEyMSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6dGhpc0pTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVlJl
ZywgdGhpc0pTUik7CkBAIC0xMzk1LDk2ICsxMTQ4LDMzIEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYgdm0pCi17Ci0gICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQotICAgIC8v
IGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcg
YXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICAvLyBERkcvRlRMIG1h
eSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGlj
aCBtYXkgbm90IG1hdGNoCi0gICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICBDQ2Fs
bEhlbHBlcnMgaml0OwotCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fz
c2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQotICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKLQotICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIp
OwotfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwotICAgIAotICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhp
c0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCi0gICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3Vu
bGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9
IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09
IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
OworICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhU
aGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRo
Ojpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gQmFz
ZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
LCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAg
ICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsg
d2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFz
c3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZy
b20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE0OTIsMzUgKzExODIsMzUgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjM7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9i
YWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRp
b24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IHJlZ1QxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2Vy
dChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNs
b3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM2LDggKzEyMjYsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZh
bHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
cmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBzbyB3ZSBuZWVkIHRvIGNvbnNl
cnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5SWRzLmFw
cGVuZChnZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0
aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEyNjAsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQot
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0gICAgSklUUHV0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpT
Uik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1Ip
OwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0g
ICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLAot
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5
SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0
aGlzKTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVz
ZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSks
IHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTI5MiwzNSBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAg
aml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9u
CiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0g
cmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3Nl
cnQodmFsdWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCB2YWx1ZUpTUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNs
b3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CkBAIC0xNjkxLDQ5ICsxMzU2LDI4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEluQnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBK
SVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOwotCi0g
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbklu
QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
OwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1tt
X2luQnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVC
bG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgLy8gc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVl
ZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8g
U28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0
byBnaXZlIGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fz
c2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNS
KTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBA
IC0xNzc3LDUzICsxNDIxLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5C
eVZhbD4oKTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9p
bkJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQ
cm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQogICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
aW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQ
Uik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGlu
ZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAg
IG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRh
ZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgLy8gc2xvd19v
cF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdl
IG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KICAg
ICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0aHVuayBq
dXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1
cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBD
YWxsKCkpOwpAQCAtMTg1OCw0OSArMTQ3NiwyNiBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUo
VmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpcwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNs
b3coQWNjZXNzVHlwZSB0eXBlKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlKTsKLSAgICBVTlVT
RURfUEFSQU0ocHJvcGVydHkpOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVC
cmFuZCk7CiAKLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0g
ICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwot
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEluQnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gQmFzZWxpbmVJ
bkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fz
c2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
b3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
UiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTkxMiwxMiArMTUwNywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0
ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29k
ZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1l
KTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTkyNiwxMiArMTUxOSwxMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jh
c2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93
KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJy
YW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMjU5MCwxMyArMjE4MSw5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFy
KSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQgQ29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwg
dGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJlIGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8g
YWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3Jl
YWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJv
cGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0g
ZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBsb2FkR2xvYmFs
T2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0
VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKICAgICAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMjYwNiwxMSArMjE5Myw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRo
dW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJ
bnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjIwNCwzMiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwot
I2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5z
dHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BS
UmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2gg
cmVnaXN0ZXIKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQ
b2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNl
dEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1p
dE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAg
aml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBv
cFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBq
aXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWls
IGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1
ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVu
a1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1
ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19z
Y29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjc0Myw3ICsy
MzE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1
bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsKLSAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpAQCAtMjgwNiw3ICsyMzgwLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNlcy5saW5rKHRoaXMpOwogCi0g
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5MDYsNyArMjQ4MCw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwg
dHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
Y29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2Fz
ZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRl
Y29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjUxMCw3IEBAIHZvaWQgSklU
OjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFs
Q2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2Fz
ZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAg
LTI5NDQsMzEgKzI1MTgsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVy
dHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZh
bD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvcklu
QnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJ
bXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0
b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51
bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjU1
MSwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4
YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYg
dm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6
OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0
aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9y
PihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIo
Vk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVF
eGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
V2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJl
dHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2Jm
NTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVi
bGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJu
YWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRp
ZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwg
VGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBU
aHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ns
b3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5j
cHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uYmZmNjI0
MTQwNzQ1NjE2ZGY3NmNlNTMzMTY2NjJiMjA1YTY5ZTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsMTUgKzM2LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUU2xvd1Bh
dGhDYWxsOjpjYWxsKCkKIHsKICAgICBWTSYgdm0gPSBtX2ppdC0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2Rl
SW5kZXgpOwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CiAgICAgbV9qaXQt
Pm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJl
Zyk7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJzLT5jdGlTbG93UGF0
aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwpAQCAtNTYsNDQgKzUzLDI5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpnZW5lcmF0ZVRodW5rKFZNJiB2bSwgU2xvCiAKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNo
UGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6Omxp
bmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dFJlZywgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKLQogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCi0g
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQogICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0
T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAg
IHN0YXRpY19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRSZWcpOwog
ICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotCisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVn
aXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKENDYWxsSGVs
cGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsK
LSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
IAotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZl
c0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2Vw
dGlvbiBjaGVjayB0aHVuaworICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1
ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5j
dGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZm
ZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1Bh
dGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5kZXggODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkw
NjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4MjY1MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUs
MTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6
Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNs
b3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKKyAgICBKSVRTbG93UGF0aENhbGwoSklU
KiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKICAgICAgICAgOiBtX2pp
dChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0aEZ1bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0g
ICAgICAgICwgbV9wYyhwYykKICAgICB7CiAgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNs
b3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
ICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2Ug
Ly8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQot
ICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0ZVRvcENhbGxGcmFtZSgpOwotI2lmIENQVShYODZf
NjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwotICAgICAgICBtX2ppdC0+bW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJh
bWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6
OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAg
IG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsK
LSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3Vt
ZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAgSklUOjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5k
Q2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwotCi0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9X
UykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0
LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxGcmFtZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNf
YXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBz
dGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNl
bmRpZgotCi0gICAgICAgIG1faml0LT5leGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4g
Y2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZh
dGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBTbG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5j
dGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5k
ZXggOGViNTdjMDk3YjMwYmI2OWM5YTJlYWFkYWM4MzlmM2JlZGUyYzY5Ny4uMDNjNDlkNjY3NGJl
YzAyYjk0OTAwNzUzNzdkYjQ2ZWI2ODg3ZmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0p
CiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5LDggKzU3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4
Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAt
NzcsOCArNzMsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYQogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbldpdGhD
YWxsRnJhbWVSb2xsYmFjayIpOwogfQogCi0jZW5kaWYKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtMTAxLDggKzk1
LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNr
UHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFu
ZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKQEAgLTExMyw4ICsxMDUsMTIgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBmdXp6aW5nIGNhbiBjYWxsIGEgcnVu
dGltZSBmdW5jdGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHJldHVybiBhZGRyZXNz
IGhlcmUuCiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1C
MikKICAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgICAg
ICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxI
ZWxwZXJzOjpyZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5v
dCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKICNlbmRpZgogICAgIH0KIApAQCAtMTIzLDggKzEx
OSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkgewogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJN
X1RIVU1CMikKICAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisg
ICAgICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIEND
YWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgICAgIGVycm9y
ICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYKICAgICB9CiAgICAgaml0LnJl
dCgpOwpAQCAtMTQzLDggKzE0Myw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9
CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5h
bWUgVGFnVHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggYTlmZWVlYTkyNGFlMDA3OGQ4
NDUxZTE3MmM0YzQ5NDVkZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3ODI5ZjBiNGFiY2FiYWVkYzQ5
NzM1YTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
CkBAIC0zOCwxMyArMzgsOCBAQCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFn
PiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CkBAIC04Miw5ICs3Nyw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihW
TSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rp
b25DYWxsR2VuZXJhdG9yKFZNJik7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IoVk0mKTsKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNDJjYWE1NzVlYzhmZTJmMDE4ODI3Nzlh
NGI0MzMxYmRhY2IyN2JmZi4uY2RmOGM3NzM1YWE2ZmVkZjRlMzc3NGRhMDY2ZmQ3NDJiMmZmM2Ew
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQgKzgzOSw2IEBACiAjZGVmaW5l
IEVOQUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCiAKLSNpZiBDUFUoQVJN
NjQpIHx8IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0vKiBUaGUgaW1wbGVtZW50YXRp
b24gb2YgdGhlc2UgdGh1bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1bWVudCByZWdpc3RlcnMsIGFu
ZAotICAgbWFrZSB1c2Ugb2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4gRm9yIG5vdywgd2UnbGwgb25s
eSBzdXBwb3J0IHRoZW0gb24gcGxhdGZvcm1zCi0gICB0aGF0IGhhdmUgNiBvciBtb3JlIGFyZ3Vt
ZW50IHJlZ2lzdGVycyB0byB1c2UuCi0qLwotI2RlZmluZSBFTkFCTEVfRVhUUkFfQ1RJX1RIVU5L
UyAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSkgJiYg
IU9TKFdJTkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSAxCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448291</attachid>
            <date>2022-01-04 06:59:42 -0800</date>
            <delta_ts>2022-01-04 09:23:28 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233822-20220104145941.patch</filename>
            <type>text/plain</type>
            <size>188208</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4
OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1
YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRl
c3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihs
ZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIo
VHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0
KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2
OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uMTM2NmRkNTEyYmIxNjIzNDM4YzdmOWZlYWQ5ZWMy
ZjYyYzQ3MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERv
dWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OworICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJz
OjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9CiAKICAgICAvLyBJbiB0aGUg
VGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiBy
ZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXpl
KCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFs
aXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxV
RSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0
NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ly
KGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1
MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhk
NjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmln
aW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2Ugewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
anVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAm
bV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1w
VG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAg
ICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0
LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAg
ICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNl
bmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZlY2E0NTA4ZDcz
YjhkMzhjYWNmZjE1Yy4uNTI4ZDQ3MzhkYTY3YWUwMWY2YzQyMDk4YmRkNTMxYTM0YmNlMmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAg
ICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRT
dHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3IgaXRl
cmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdpc3Rl
ciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjgsMjQgKzUyOCwyNCBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVz
dWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJ
bnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgpAQCAtNTU0LDcg
KzU1NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVn
cy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKQEAgLTYwNyw3
ICs2MDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwogICAgICAgICBy
ZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwpA
QCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIHJlZ3Mu
dGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENv
ZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwogICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAgICAgICBpZiAoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAg
IHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5i
cmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBl
YjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2
ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBj
b21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYg
KCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0K
LSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0o
KS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQot
ICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQs
IHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAg
ICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAg
ICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGlu
IENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsg
PSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
YXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRo
dW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJ
dGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6
OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVy
cygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkg
dHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhH
ZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAg
IC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ5OTdiZDRiYjkwZTU5Mzcy
MjkwYzBlYWIyODY4YjZjMTgxMjlhN2EuLmE3MjhlZmQ4NzEyZWM1ZTA5YzZkNzU2MWY0Mjk1Zjg4
NzNkZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTMxMyw3ICszMTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7
CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMo
KTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1
ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5
Yjk4ZDU0NzYzMTgzODZhZmIyZmVjZjhlZTFkMjYwMmFhZmFkZWU3Li40OGExODBiNzQwYWFjZTNm
YTAzMTkzNzFlNWUwYmM0ZmM5YzgyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRo
ZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5s
YWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVscGVyczo6
SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0
LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0
ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1
ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUz
YmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2
bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0
eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0
byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAoQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2Vw
dGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0
cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNl
cHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5k
aWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9u
UHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0
MDk4Mjg5MzVlLi45ZDZmMjk5NzFjMjc0ZThkZWVjNjQ5YzI3OTA4NTU5ZGYyZWY5NzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNr
ZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MCBAQCB2b2lkIENDYWxsSGVs
cGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRy
VGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2Ny
aXB0aW9uKTsKIH0KIAordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKCkK
K3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQ
VShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7CisjZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3Qg
aW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFj
ZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1p
dENUSVRodW5rRXBpbG9ndWUoKQoreworICAgIC8vIFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOworI2VsaWYgQ1BVKEFS
TTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcG9wUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJyb3IgIk5v
dCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCBhZmM1ZGNjODk5ZTc1NjMzOWE4MTE2MzRlMjNjMjE3YmRhMWNjZjY0
Li4yZWUwOGFjOTZhYTgyNzNlOTg5NzczYWI2YTFjNmQwYmM3Y2QyNTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTg1Myw2ICs4NTMsOSBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMm
KT4sIGNvbnN0IGNoYXIqKTsKIAorICAgIHZvaWQgZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKyAg
ICB2b2lkIGVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKIHByaXZhdGU6CiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KICAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojph
cml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCAwMzBmM2YzNmY2ZWVmZDg3OTBkYTg5NDU3OGM5NGFhYTIwYzU5OTdmLi4zZTA0
N2EzZTcwYmZkNzIxZWE3NWZhODNjNjUyNTBjYjE3OWE4YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogI2RlZmlu
ZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAgICAg
ICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBcCi0gICAgICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RFX0lOX01BSU4o
b3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQog
CiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9wXyMj
bmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBp
dGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGl0ZXIs
IHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQogCi12b2lkIEpJ
VDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9u
IHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTY1OCw5
ICs2NTgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRf
cHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgREVG
SU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9T
TE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg1Nyw5ICs4NTQs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5TGFiZWw7IC8v
IE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBUYWJsZS5pc0Vt
cHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLSAg
ICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNl
dEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBl
bmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmln
aW4oKSk7CkBAIC05MTEsMTIgKzkwNiwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgIH0K
ICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0
aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25D
aGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRp
b25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5kaWYKIAogICAg
IGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYgKHJlY29yZC50
YXJnZXQpCkBAIC0xMDM3LDM1ICsxMDMwLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2
YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25FZmZvcnQKICAg
ICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxi
YWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBh
cmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7
Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25Q
dHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgp
KSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29w
eUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZy
YW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBh
c3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigm
dm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwo
T3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25M
b29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLX0KLQog
dm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAgICAg
Ly8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUgaW5m
b3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBvcF9w
cm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmZjM4ODc0MzNjM2Q1ZDFj
Y2YzNjhjNmYzZWU5ZTFhOGE4ODQ3Njk4Li43N2FlYzRjYzVhMTUwYjA2MmQ1MWI5OTRhNTZmOTk3
OTY5NDIwODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsyNzYsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFt
ZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0KICAgICAg
ICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lkIGVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRGYXN0UGF0aFJl
c3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotICAg
ICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0
aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKKyAgICAgICAg
dm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNvZGVUeXBlJiwg
U2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBAIC02MTQsNyAr
NjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJn
dW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0
X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRl
KFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0
ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFzUHJp
dmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwg
QWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUp
OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXROZXdG
dW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1NiwyOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAgICBwcml2YXRl
OgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVuayBnZW5lcmF0
b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwot
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOwotCi0g
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2No
ZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihW
TSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5l
cmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1bmtJc1VzZWRG
b3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZW1p
dCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29sdmVkQ2xvc3Vy
ZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5cGVzIHdpdGgg
b3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZlVHlwZSA9PSBH
bG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8IHJlc29sdmVU
eXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZh
bHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dl
dF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihW
TSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVU
aHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlH
ZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAgICAgIEp1bXAg
Z2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXgg
Njk5ZWFmY2I3MjllY2E0MTQwNzVlYzEwY2NjOTI2MjIwYmQ0NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1
YTVkYmRiMGVmMDA5MDUyMDExNTQ5ODEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9k
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
IAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfcG93KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHNsb3dfcGF0aF9wb3cpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3
OCw3ICs5NzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1
bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgp
LmVtcHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5k
ZXggZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uOTQ5YzRlYjE1Mjgz
MzFiNGQyNzYwY2I5NjU4YTE5NTUyMDE2Mzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgp
OwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwg
dHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZh
c3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkp
OwogCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHVi
SW5mb0dQUjsKIAogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBz
dHViSW5mb0dQUikpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVKU1IgPT0gYmFzZUpT
Uik7IC8vIE90aGVyd2lzZSB3aWxsIG5lZWQgbW92ZShyZXR1cm5WYWx1ZUpTUiwgYmFzZUpTUikK
QEAgLTUyMCwxNCArNTIwLDE0IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2Ji
ZXJKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJl
ckpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHVi
SW5mb0dQUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBuZXh0SlNSID0gYmFzZUpTUjsg
Ly8gVXNlZCBhcyB0ZW1wb3JhcnkgcmVnaXN0ZXIKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fbmV4dCwgbmV4dEpTUik7CiAgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5j
aElmTm90RW1wdHkobmV4dEpTUik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJh
dGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93QwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwog
CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsKIAogICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNS
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0
YmUuLmY5M2EzNjhmZjZkOGUyODk0YmY2MTE1ZWM5MzMzNTM5NzM5Mjk2MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpG
YXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0
dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJ
Q0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZwogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0
aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENvbnN0YW50
KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5lQWNjZXNz
KGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7CkBAIC0y
MTcsOCArMjE3LDggQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5l
RGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
c2NyYXRjaEdQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2gy
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0
Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2Ny
YXRjaDJHUFI7CiAKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlSlNS
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7
CiAgICAgYXV0byBkb0lubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVx
dWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUwNjg5Yjcy
MTlmY2ZiNjk5ZTVmODUyNDk0ZmI3NmI1ZDBlNDIyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ5LDQ2ICs0OSwx
MjIgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBKSVRUeXBl
IDogdWludDhfdDsKIAogbmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnMgewotY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07
CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKICNpZiBVU0Uo
SlNWQUxVRTY0KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MSB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEpTUkluZm86OmpzUmVnVDMyIH07Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0aCBvbmx5IHJl
Z2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCiBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywg
R1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6
bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiks
ICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVy
cworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0ZXhwciBHUFJSZWcgZWNtYU1v
ZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVn
IGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0
byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGVjbWFN
b2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9CiB9CiAK
IG5hbWVzcGFjZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisvLyBSZWdpc3RlcnMg
dXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKICNpZiBVU0UoSlNWQUxVRTY0KQogY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVz
cGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1Qy
IH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiAjZW5kaWYKK3N0
YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9H
UFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBh
dGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QwIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIg
R1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fz
c2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQ
Uiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3Ig
Y2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092
ZXJsYXAoYmFzZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIs
IGVjbWFNb2RlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9
CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVy
cyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogY29uc3RleHByIEpTVmFsdWVSZWdz
IHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CiAjaWYgVVNFKEpTVkFMVUU2
NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNS
SW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMK
K25hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMs
IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2
IH07CiAjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVpcmVkIGZv
ciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2Ug
U2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpy
ZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5m
bzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQ
UiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsi
KTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgcHJv
cGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAicmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogI2lmIFVTRShKU1ZB
TFVFNjQpCkBAIC0xMDEsNyArMTc3LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1Ig
PT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogc3RhdGljX2Fzc2Vy
dChyZXN1bHRKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSKTsKLXN0
YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFIpOworc3RhdGljX2Fzc2VydChzdHViSW5mb0dQUiA9PSBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFIpOwogCiBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMSA9IEdQUkluZm86OnJlZ1QzOwogc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDIgPSBHUFJJbmZvOjpyZWdUNDsKQEAgLTE1MCw4ICsyMjYsMTIgQEAgc3RhdGljX2Fz
c2VydChwcm9wZXJ0eUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Uik7CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnMgeworLy8gUmVnaXN0
ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKworLy8gRmFzdCBw
YXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CkBAIC0xNjEsNzUg
KzI0MSwxNzAgQEAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qy
IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUklu
Zm86OnJlZ1Q3IH07CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092
ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRDbG9iYmVySlNSKSk7
CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiksICJyZXF1aXJlZCBmb3IgRGF0YUlD
Iik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRo
IHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
K2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdU
NCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwg
cHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cg
b3BlcmF0aW9uIik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMK
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpT
UiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUklu
Zm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdz
IHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKy8vIEZhc3QgcGF0aCBv
bmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQog
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUklu
Zm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9P
dmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3Nl
bWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBieXRlY29kZU9mZnNldEdQ
Uiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0
aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCB0aGlzSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJy
ZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2Ug
QmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsKIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFIg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c2NyYXRjaEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07Citjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3Jh
dGNoR1BSIH07CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnMgeworLy8g
UmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFM
VUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QxMCB9OworY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5m
bzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25h
bWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBH
UFJJbmZvOjpyZWdUNCB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owog
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJldXNpbmcgcmVn
VDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgogI2VuZGlmCitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7CitzdGF0aWNfYXNzZXJ0
KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IucGF5bG9hZEdQUigpLCB2YWx1ZUpT
Uiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKSwgInJlcXVpcmVkIGZvciBE
YXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xv
d1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBH
UFJJbmZvOjpyZWdUNCB9OworI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6
bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9H
UFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3Rh
dGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9y
IGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93
IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJ
bmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CiBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owog
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9
OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CiBjb25z
dGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwogI2VuZGlmCisKKy8v
IEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIEZhc3RQYXRoIHsKK2NvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1Is
IHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBEYXRhSUMiKTsKK30KKwor
Ly8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgR1BS
SW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIC8vIFdlIGFyZSBhIGJpdCBz
aG9ydCBvZiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwgYnV0IHdlIGNhbiBqdXN0IGFib3V0IGdl
dCBhd2F5IHdpdGggdGhpcworICAgIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rl
cigpCisjZWxzZSAvLyBPdGhlciBKU1ZBTFVFMzJfNjQKKyAgICBHUFJJbmZvOjpyZWdUOAorI2Vu
ZGlmCit9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGdsb2JhbE9iamVj
dEdQUiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07
CitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZv
R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChB
c3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1Is
IHByb2ZpbGVHUFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAicmVxdWlyZWQgZm9y
IGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzIHsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQg
c2xvdyBwYXRoIHRodW5rCitjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgeyBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQg
c2xvdyBwYXRoIHRodW5rCisKK25hbWVzcGFjZSBGYXN0UGF0aCB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKICNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BS
SW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKICNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFu
ZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNSLCBzdHVi
SW5mb0dQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKK25hbWVzcGFjZSBTbG93UGF0
aCB7Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSIH07IC8vIFJlcXVpcmVkIGJ5
IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFIgfTsgLy8gUmVx
dWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQogfQogCiBj
bGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAppbmRleCBiOWFlZmNhZTZmY2U0MGI2N2JiNDc1ODZjMzdhZjgwY2FhYmYx
Yjg3Li5hOTk3ZmI0OTllYzAxNjk1ZWNlMDhhZThhMjQxZGU2NTlhODU3NjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ1MSwyNCArNDUxLDExIEBAIHZv
aWQgSklUOjplbWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmZhbHNl
PigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9u
LCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZSA9IGpzUmVnVDEwOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2NvbmRpdGlvbiwgdmFsdWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
cmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3Jh
dGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgYWRkSnVtcChicmFuY2hJZkZhbHNleSh2bSgpLCB2YWx1ZSwgc2Ny
YXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIGpzUmVnVDMyKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIodmFsdWVJc0ZhbHNleUdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25a
ZXJvLCByZWdUMCksIHRhcmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVl
SXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQg
YnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUg
SklUIGJlY2F1c2UKQEAgLTQ3NywzMSArNDY0LDI1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9
PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEg
PSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0ganNSZWdUMzI7IC8vIEluY29taW5nCisgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHJlZ1Q0OwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0ZhbHNl
eSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJl
Z1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXkubGluaygm
aml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUu
bGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZtLCB2
YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygmaml0KTsK
ICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNm
YWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0Zh
bHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewpAQCAtNjUzLDI0ICs2MzQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1
bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOwotCi0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVn
VDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7Ci0gICAg
Y29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsK
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRkSnVtcChicmFu
Y2hJZlRydXRoeSh2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUiks
IHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9j
b25kaXRpb24sIGpzUmVnVDMyKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0
dWIodmFsdWVJc1RydXRoeUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAg
ICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0jZW5kaWYK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3Jr
IHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTY3OSwzMSArNjQ3LDI1
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzVHJ1
dGh5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlID0gcmVnVDA7
Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gyID0gcmVnVDI7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0g
anNSZWdUMzI7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9
IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwogICAgIGNvbnN0ZXhwciBi
b29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNW
YWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBq
aXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVt
cCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1t
MzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5
ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gy
R1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7
CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs2OTYs
NTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFs
dWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVT
YXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0g
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hl
Y2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJv
d25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKKworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0
aHJvd25WYWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7
CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7Cisg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0
R1BSKSk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHRo
cm93blZhbHVlSlNSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dmFsdWUsIHRocm93blZhbHVlR1BSKTsKKwogICAgIGVtaXROYWtlZE5lYXJKdW1wKHZtKCkuZ2V0
Q1RJU3R1YihvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkpOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfdGhyb3dfaGFu
ZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICAKLSAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvblRocm93KTsKIAorICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9iamVj
dEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisgICAgCiAjaWYgTlVN
QkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgaml0LmxvYWRQdHIoJnZtLnRv
cEVudHJ5RnJhbWUsIGFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGFyZ3VtZW50R1BSMCk7CisgICAgeworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSBnbG9iYWxPYmplY3RHUFI7CisgICAgICAgIGpp
dC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOwor
ICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
VGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlR1BSKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFu
ZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25U
aHJvdykpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC0xMjUxLDc3ICsx
MjA5LDc3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKICAg
ICAvLyBFdmVuIHRob3VnaCBDVEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIg
Y29uc3RhbnQKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9p
ZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGlu
Y3JlYXNpbmcgR0MgcHJlc3N1cmUuCi0gICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVC
bG9jay0+bnVtVmFycygpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBzaXpl
X3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKTsKLSAgICBpZiAoZmlyc3QgPCBjb3VudCkKLSAgICAgICAgbW92ZVRydXN0
ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7Ci0gICAgZm9yIChzaXplX3QgaiA9IGZp
cnN0OyBqIDwgY291bnQ7ICsraikKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdUMTApOwogCi0gICAgbG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICBlbWl0V3JpdGVCYXJy
aWVyKHJlZ1QwKTsKLQotICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7Ci0jZWxzZQog
ICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgPT0gMCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIHVuc2lnbmVkIGxv
Y2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNw
YWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENv
ZGVCbG9jay0+bnVtVmFycygpOworICAgIHVpbnQzMl90IGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0g
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobG9jYWxzVG9Jbml0IDwgY291bnQpOwotICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0lu
aXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1Qw
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7CisKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBs
b2NhbHNUb0luaXRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihv
cF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisvLyAgICBzaXplX3QgZmlyc3QgPSBD
b2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMo
KTsKKy8vICAgIGlmIChmaXJzdCA8IGNvdW50KQorLy8gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwganNSZWdUMTApOworLy8gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBq
IDwgY291bnQ7ICsraikKKy8vICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7CisvLworLy8gICAgbG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKKy8vICAgIGVtaXRXcml0ZUJh
cnJpZXIocmVnVDApOworLy8KKy8vICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7CiB9
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwogICAgIC8v
IG9wX2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9mZnNldCAwLgogICAgIGppdC5zdG9yZTMy
KFRydXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFy
Z3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgY29uc3RleHBy
IEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IHJlZ1QwOyAvLyBJbmNvbWluZwogCi0gICAgc2l6
ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZzZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1t
NjQoc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGpp
dC5zdWI2NChpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOwotCi0gICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHVuZGVm
aW5lZEdQUik7Ci0gICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOwotICAgIEp1bXAgaW5p
dERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BS
KTsKICAgICB7Ci0gICAgICAgIGppdC5zdG9yZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUluZGV4KEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpdGVyYXRvckdQUiwgVGltZXNPbmUpKTsKLSAgICAg
ICAgaml0LnN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIp
OwotICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
bG9jYWxzVG9Jbml0R1BSID0gcmVnVDE7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRH
UFIgPSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9
IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRH
UFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAg
ICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFT
U0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3Rl
cikpLCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5zdWJQdHIoaXRlcmF0b3JHUFIsIGxvY2Fs
c1RvSW5pdEdQUiwgZW5kR1BSKTsKKyAgICAgICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRl
ZmluZWQoKSwgdW5kZWZpbmVkSlNSKTsKKworICAgICAgICBhdXRvIGluaXRMb29wID0gaml0Lmxh
YmVsKCk7CisgICAgICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVx
dWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKKyAgICAgICAgeworICAgICAgICAgICAgaml0LnN0
b3JlVmFsdWUodW5kZWZpbmVkSlNSLCBBZGRyZXNzKGl0ZXJhdG9yR1BSKSk7CisgICAgICAgICAg
ICBqaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIp
OworICAgICAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgICAgICB9CisgICAgICAgIGlu
aXREb25lLmxpbmsoJmppdCk7CiAgICAgfQotICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAg
ICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChjYW5CZU9wdGltaXplZEdQUiwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpKTsK
ICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFy
Z3VtZW50R1BSMSk7CiAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJh
cnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKIAotICAgIGppdC5t
b3ZlKGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7IC8vIHNh
dmUuCisgICAgaml0LnB1c2hUb1NhdmUoY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyBzYXZlIChjYWxs
IGFyZ3VtZW50cyBiZWxvdyBhcmUgYWxsIGluIHJlZ2lzdGVycywgc28gb2sgdG8gc3RhY2sgdGhp
cykKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVy
U2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOworICAgIGppdC5wb3BUb1Jlc3RvcmUoY2FuQmVPcHRpbWl6ZWRHUFIp
OyAvLyByZXN0b3JlCiAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
Y2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAjaWYgRU5BQkxFKERGR19K
SVQpCkBAIC0xMzQ4LDExICsxMzA2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKQEAgLTEzNjMsNyArMTMxNyw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRp
ZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTU3NCw1NyArMTUyNyw0MCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVu
dEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIGFyZ3VtZW50
R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IG5v
bkFyZ0dQUjA7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7CiAKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVy
YXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQp
Ci0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIz
OwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwot
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgY29k
ZUJsb2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICAKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsgLy8gSW5j
b21pbmcKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6
Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVs
cGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9u
Q2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7Ci0gICAg
YXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFu
ZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNo
ZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdl
eHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDQxZTc1Zjc1
NmIwZmM4NDUxMzVhNjQwNjIxMGZjNmZlOGM0MDc2MS4uOTU0MTMxODBjYzc3YWJmNTU1ZDk2OTky
OTRjNWRkMWQwNjc3MGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNj
cmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7
CkBAIC0xMDEsNTEgKzEwMSwyMyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNl
KGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGlmICgh
aGFzQW55U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlW
YWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzRKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgc3RhdGljX2Fz
c2VydCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVybGFwcyhhcmc0SlNS
KSk7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUiwgYXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJv
ZmlsZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwg
YXJnM0pTUiwgYXJnNEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJ
bmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBhbHJlYWR5
IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJn
dW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIg
PT0gYXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKSA9PSBy
ZWdUMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEo
Ynl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBw
cm9maWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvZmlsZUdQ
UjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BS
ID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHBy
b2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8
U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9u
IHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UK
LSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtMjA0LDcgKzE3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKQEAgLTIzMCw1NSArMjAxLDMwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0
ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVO
YW1lPigpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1Ip
OwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0g
ICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNS
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRH
UFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsg
Ly8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
UiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRo
ZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhl
IExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9u
cyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzMiwzNCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3Bl
cmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNs
b3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMyw3ICsyNjksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6
OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5k
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0zNTQsNDYg
KzMwMCwyMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9QQVJBTShj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwot
Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFu
ZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVy
YXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0
b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVz
ZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJh
bmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQ
UigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0
czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5
cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA2LDcgKzMyOCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFu
ZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5
ICszNTAsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+
KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
cmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5l
UHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0
ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFy
Z3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFu
ZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChi
cmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZh
bHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDg2LDE2ICszODMsMTcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7
CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CiAgICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHByb3BlcnR5SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1
ZUpTUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6
TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwotICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCksIHByb2Zp
bGVHUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6
Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKKworICAgIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BS
KCksIC8qIHNjcmF0Y2hHUFI6ICovIHN0dWJJbmZvR1BSKTsKIAogICAgIEpJVFB1dEJ5VmFsR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgSklUVHlwZTo6QmFzZWxpbmVK
SVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLApAQCAtNTI5LDc2ICs0MjcsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBib29sIGlz
RGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9ieV92YWxf
ZGlyZWN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwotICAgIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBieXRl
Y29kZSkgewotICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgICAgICBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1
ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwotICAgIH07Ci0KLSAg
ICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dEJ5VmFsRGlyZWN0PigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dEJ5VmFsPigpKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Bl
cnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDU+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEo
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpLCBPcFB1dEJ5VmFsRGly
ZWN0OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAg
ZWxzZQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZB
cnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwot
ICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAg
ICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlW
YWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBhcmUg
Y29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8vIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0g
cmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwo
KSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlz
IGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVj
YXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxP
YmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTYw
NiwzOSArNDU2LDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRvaW4gPSBkZWNsdHlwZShvcGVyYXRpb25Q
dXRCeVZhbFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcmVnVDU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKLSAgICB7Ci0gICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWQoYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBwcm9maWxlR1BSKTsK
LSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q0KSk7Ci0gICAgICAgIEFTU0VSVCgh
dXNlZC5jb250YWlucyhyZWdUNSkpOwotICAgIH0KKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
LQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVH
UFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJ
bmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJv
ZmlsZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNo
ZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVD
YWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NTAsNyArNDk3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7
CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC02NzksNTYgKzUyNiwyOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBV
TlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0K
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKLQotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9w
dGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFz
ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBw
cm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVl
LCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwg
dmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKLSNlbHNlCiAg
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwogCi0gICAgLy8gY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC03MzYs
MzQgKzU1NSwzOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0
QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
dmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2Zp
bGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omds
b2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xv
Z3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
NDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsK
KyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBuZWNlc3NhcnkgZm9y
IHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90IGNsb2JiZXIgZ2xv
YmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2UgaGFybWxlc3MuCisg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQUik7CisgICAgaml0
LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJbmZvR1BS
LAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpT
Uiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0
LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBj
YWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTg0Miw5ICs2NjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKICAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTg3NSw2MiArNjk5LDM3IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BE
ZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5
SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVs
ZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJl
Z2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5
SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0g
ICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSwg
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVu
dEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsK
LQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigp
ID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9v
bGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtOTM4LDMzICs3MzcsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQu
ZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAg
ICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3Vt
ZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIz
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFN
b2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0
byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0
dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTk3NSw5ICs3NzcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzY3Jh
dGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpy
ZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBA
IC0xMDEwLDYzICs4MTIsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZh
bHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9w
ZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4o
KTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9u
PFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1Iu
cGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0SlNSKTsKLSAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBU
aGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRo
ZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlv
bnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODUwLDM2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBl
cnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5
VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cg
b3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1l
bnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1l
bnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2Jq
ZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVHUFIpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRl
ZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5j
YWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGppdC5ib3hCb29sZWFuKHJldHVy
blZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1
bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNo
ZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNo
ZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlf
dmFsX3ByZXBhcmVDYWxsIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTExMTEsNyArODkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTEzOCw0NyArOTE3LDI2IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHJ5R2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAg
SklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsK
KworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShKSVQ6OlRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJu
VmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKQEAgLTExOTMsNyArOTUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VW
UmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwg
YmFzZVZSZWcpOwpAQCAtMTIxOSw0NyArOTc3LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Cisg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CkBAIC0xMjc0LDEyICsxMDExLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3Jh
dGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNl
SlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcp
OwotICAgIAorCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJvbU1ldGFkYXRhKGJ5
dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0YSgpICsgR2V0
QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBK
dW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSksIHNjcmF0Y2hH
UFIpOwpAQCAtMTMxMiw1MSArMTA0OSw2NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAg
ICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3Vu
bGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVuayBnZW5l
cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFz
ZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUg
cmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8g
b3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworCisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQ
UjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJn
dW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAg
IHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9
PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEg
U3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKwor
ICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4
Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgp
OworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhl
eGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7Cit9CisK
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKQEAgLTEzNjgsNyArMTEyMSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6dGhpc0pTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
VlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVlJlZywgdGhp
c0pTUik7CkBAIC0xMzk1LDk2ICsxMTQ4LDMzIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0p
Ci17Ci0gICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5
IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQotICAgIC8vIGl0IG1h
a2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxh
YmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICAvLyBERkcvRlRMIG1heSBpbmxp
bmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkg
bm90IG1hdGNoCi0gICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICBDQ2FsbEhlbHBl
cnMgaml0OwotCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFy
Z3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQotICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKLQotICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwotfQot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNX
aXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwotICAgIAotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNKU1IpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCi0gICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2Vk
Q29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkV2l0aFRoaXM+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAg
IEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhUaGlzW21f
Z2V0QnlJZFdpdGhUaGlzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9w
ZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2Vy
dChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9w
ZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3Rh
dGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8g
VGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0
aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRp
b25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE0OTIsMzUgKzExODIsMzUgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmpl
Y3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQu
ZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAg
ICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNl
R1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHRo
aXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3Bl
cmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM2LDggKzEyMjYsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlVlJl
ZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmVzZXRT
UCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBzbyB3ZSBuZWVkIHRvIGNvbnNlcnZhdGl2
ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChn
ZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3
cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25k
aXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29k
ZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkzOTUKQEAgLTE1NzAsNTYgKzEyNjAsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlu
a2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsK
KworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2
YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3Bl
cnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsg
Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAv
IEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQg
dGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTI5MiwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1
ZUpTUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3Bl
cmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hC
dWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CkBAIC0xNjkxLDQ5ICsxMzU2LDI4IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEluQnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRJbkJ5
SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOwotCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RH
UFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAg
ICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vs
c2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJ
ZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKwor
ICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRo
ZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZl
IGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0xNzc3
LDUzICsxNDIxLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4o
KTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFs
SW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxl
KCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJv
cGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBw
cm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0K
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3Nl
cnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6
b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQu
CisKKyAgICAvLyBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBT
bywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRv
IGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwpAQCAtMTg1OCw0OSArMTQ3NiwyNiBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVh
bFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpcwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1p
dEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHksIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coQWNj
ZXNzVHlwZSB0eXBlKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlKTsKLSAgICBVTlVTRURfUEFS
QU0ocHJvcGVydHkpOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBBY2Nlc3NUeXBl
OjpIYXNQcml2YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7
CiAKLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbElu
ZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UK
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMy
KGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRl
TmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0
aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwpAQCAtMTkxMiwxMiArMTUwNywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
cHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEhhc1ByaXZhdGVOYW1lPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jh
c2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtMTkyNiwxMiArMTUxOSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVj
b2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5k
KTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQpAQCAtMjU5MCwxMyArMjE4MSw5IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yCiAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAg
ICAgICAgIC8vIElmIGFueSBsaW5rZWQgQ29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBh
bGwgbGlua2VkIENvZGVCbG9ja3MgYXJlIGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBz
ZWUgTW9kdWxlVmFyLgotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5
X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlf
d3JpdGVfZXJyb3IpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0
KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29w
ZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKICAgICAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMjYwNiwxMSArMjE5Myw5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdl
bmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBC
YXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjIwNCwzMiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0
b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAg
aml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Y29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5zdHJ1Y3Rp
b25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNv
ZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0
ZXIKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFn
KTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBh
dGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBv
cChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0
KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwg
dG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5q
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5s
aW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRU
b1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNr
UHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIp
OwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjc0Myw3ICsyMzE3LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7
CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9wcm9wZXJ0
eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpAQCAtMjgwNiw3ICsyMzgwLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNlcy5saW5rKHRoaXMpOwogCi0gICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5MDYsNyArMjQ4MCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwgdHlwZW5h
bWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19w
cm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3Qg
Qnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKK3Zv
aWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRlY29kZSYg
Ynl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjUxMCw3IEBAIHZvaWQgSklUOjplbWl0
X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFsQ2FzZSk7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2FzZSk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5NDQs
MzEgKzI1MTgsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5z
dHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwg
c2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFz
X3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+
KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1
cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNP
d25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7Cisg
ICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFz
X293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklU
OjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVy
YXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0
KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjU1MSwxNSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjgu
LmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRo
dW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNs
b3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0
aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93
UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZt
LAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0
cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRh
YmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxO
YXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBX
ZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1
MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5j
dGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3Rp
U2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAg
ICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2Vk
TmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dl
bmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRo
Q2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5k
ZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uYmZmNjI0MTQwNzQ1
NjE2ZGY3NmNlNTMzMTY2NjJiMjA1YTY5ZTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsMTUgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUU2xvd1BhdGhDYWxs
OjpjYWxsKCkKIHsKICAgICBWTSYgdm0gPSBtX2ppdC0+dm0oKTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5kZXgp
OwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CiAgICAgbV9qaXQtPm1vdmUo
SklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7CiAg
ICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJzLT5jdGlTbG93UGF0aEZ1bmN0
aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwpAQCAtNTYsNDQgKzUzLDI5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUU2xvd1BhdGhDYWxsOjpnZW5lcmF0ZVRodW5rKFZNJiB2bSwgU2xvCiAKICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAorICAgIC8v
IENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKLQogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotCi0gICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0
cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIHN0YXRp
Y19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRSZWcpOwogICAgIGpp
dC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwog
ICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotCisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRp
b25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJz
OjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRp
ZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotICAg
IGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBj
aGVjayB0aHVuaworICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5q
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5s
aW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikp
OwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGlu
ayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxs
Iik7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2xvd1BhdGhDYWxsLmgKaW5kZXggODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjVi
MDJlNzM2MC4uMzQwYzllZWNhNmU4MjY1MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAg
SklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRo
RnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQs
IFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQp
CiAgICAgICAgICwgbV9zbG93UGF0aEZ1bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAg
ICwgbV9wYyhwYykKICAgICB7CiAgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRo
RnVuY3Rpb24pOwogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZv
aWQgY2FsbCgpOwogICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGdlbmVyYXRlVGh1bmsoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsK
LSAgICAgICAgbV9qaXQtPnVwZGF0ZVRvcENhbGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYm
IE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMigtMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAg
ICAgICBtX2ppdC0+bW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJ
VDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdp
c3RlciwgSklUOjphcmd1bWVudEdQUjEpOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0
ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0
LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAg
ICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BS
MSk7Ci0jZW5kaWYKLSAgICAgICAgSklUOjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbCht
X3Nsb3dQYXRoRnVuY3Rpb24pOwotCi0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAg
ICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3Ao
SklUOjpyZWdUMSk7IC8vIGNhbGxGcmFtZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0
KEpJVDo6cmVnVDAgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNf
YXNzZXJ0KEpJVDo6cmVnVDEgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgot
Ci0gICAgICAgIG1faml0LT5leGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsK
LSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAg
ICAgSklUKiBtX2ppdDsKICAgICBTbG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsK
LSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1
NzFhNmNiNTdlODI0ZGNjOWUxY2EyMzVlNGRiZGVhMzA5MzNiMC4uMDc2MDc2MTAzZTAzNGFkYjdh
ZjEyZjU4ZWY3ZmY0MDg4OGRhYzA2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0K
ICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKQEAgLTU5LDggKzU3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlv
biIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsOCAr
NzMsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYQogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFjayIpOwogfQogCi0jZW5kaWYKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtMTAxLDggKzk1LDYgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2Vy
dmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhj
ZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYg
dm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKQEAgLTExMyw4ICsxMDUsMTIgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYgdm0pCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBmdXp6aW5nIGNhbiBjYWxsIGEgcnVudGltZSBm
dW5jdGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHJldHVybiBhZGRyZXNzIGhlcmUu
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKICAg
ICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIEND
YWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgICAgICBqaXQu
cHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJz
OjpyZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBs
ZW1lbnRlZCBvbiBwbGF0Zm9ybSIKICNlbmRpZgogICAgIH0KIApAQCAtMTIzLDggKzExOSwxMiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6
eigpKSkgewogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1C
MikKICAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgICAg
IGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVs
cGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgICAgIGVycm9yICJOb3Qg
aW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYKICAgICB9CiAgICAgaml0LnJldCgpOwpA
QCAtMTQzLDggKzE0Myw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGFn
VHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggYTlmZWVlYTkyNGFlMDA3OGQ4NDUxZTE3
MmM0YzQ5NDVkZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3ODI5ZjBiNGFiY2FiYWVkYzQ5NzM1YTJk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0z
OCwxMyArMzgsOCBAQCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CkBAIC04Miw5ICs3Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihWTSYpOwog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJik7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNjY0YjBlMjlmNmJhM2NlNDgyNmU1MTA5ZDczZjg2
Y2M5YmM2YWRmZC4uNWVjNzQwOWJjOWFlODZjMzQyOGU2MmVjMjBhNDUwYWYyZTc4YjRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQgKzgzOSw2IEBACiAjZGVmaW5lIEVOQUJM
RV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpIHx8
IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2Yg
dGhlc2UgdGh1bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1bWVudCByZWdpc3RlcnMsIGFuZAotICAg
bWFrZSB1c2Ugb2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4gRm9yIG5vdywgd2UnbGwgb25seSBzdXBw
b3J0IHRoZW0gb24gcGxhdGZvcm1zCi0gICB0aGF0IGhhdmUgNiBvciBtb3JlIGFyZ3VtZW50IHJl
Z2lzdGVycyB0byB1c2UuCi0qLwotI2RlZmluZSBFTkFCTEVfRVhUUkFfQ1RJX1RIVU5LUyAxCi0j
ZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSkgJiYgIU9TKFdJ
TkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSAxCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448301</attachid>
            <date>2022-01-04 09:23:36 -0800</date>
            <delta_ts>2022-01-04 10:14:59 -0800</delta_ts>
            <desc>Windows fix 1</desc>
            <filename>bug-233822-20220104172334.patch</filename>
            <type>text/plain</type>
            <size>189600</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4
OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1
YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRl
c3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihs
ZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIo
VHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0
KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2
OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uMTM2NmRkNTEyYmIxNjIzNDM4YzdmOWZlYWQ5ZWMy
ZjYyYzQ3MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERv
dWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OworICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJz
OjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9CiAKICAgICAvLyBJbiB0aGUg
VGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiBy
ZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXpl
KCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFs
aXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxV
RSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0
NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ly
KGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1
MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhk
NjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmln
aW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2Ugewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
anVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAm
bV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1w
VG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAg
ICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0
LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAg
ICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNl
bmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZlY2E0NTA4ZDcz
YjhkMzhjYWNmZjE1Yy4uNTI4ZDQ3MzhkYTY3YWUwMWY2YzQyMDk4YmRkNTMxYTM0YmNlMmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAg
ICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRT
dHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3IgaXRl
cmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdpc3Rl
ciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjgsMjQgKzUyOCwyNCBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVz
dWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJ
bnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgpAQCAtNTU0LDcg
KzU1NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVn
cy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKQEAgLTYwNyw3
ICs2MDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwogICAgICAgICBy
ZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwpA
QCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIHJlZ3Mu
dGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENv
ZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwogICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAgICAgICBpZiAoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAg
IHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5i
cmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBl
YjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2
ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBj
b21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYg
KCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0K
LSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0o
KS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQot
ICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQs
IHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAg
ICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAg
ICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGlu
IENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsg
PSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
YXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRo
dW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJ
dGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6
OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVy
cygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkg
dHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhH
ZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAg
IC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ5OTdiZDRiYjkwZTU5Mzcy
MjkwYzBlYWIyODY4YjZjMTgxMjlhN2EuLmE3MjhlZmQ4NzEyZWM1ZTA5YzZkNzU2MWY0Mjk1Zjg4
NzNkZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTMxMyw3ICszMTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7
CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMo
KTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1
ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5
Yjk4ZDU0NzYzMTgzODZhZmIyZmVjZjhlZTFkMjYwMmFhZmFkZWU3Li40OGExODBiNzQwYWFjZTNm
YTAzMTkzNzFlNWUwYmM0ZmM5YzgyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRo
ZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5s
YWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVscGVyczo6
SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0
LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0
ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1
ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUz
YmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2
bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0
eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0
byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAoQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2Vw
dGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0
cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNl
cHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5k
aWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9u
UHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0
MDk4Mjg5MzVlLi5kOGNkZmZhNTE2NDI1ODBmOGQ1ZGQ2N2Y4MTg5N2UyNTZjMmQwYjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNr
ZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MCBAQCB2b2lkIENDYWxsSGVs
cGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRy
VGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2Ny
aXB0aW9uKTsKIH0KIAordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKCkK
K3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQ
VShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7CisjZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3Qg
aW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFj
ZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgc3ViUHRyKFRydXN0
ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKK30KKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkKK3sK
KyAgICAvLyBSZXNldCBzdGFjaworICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgLy8gUmVzdG9yZSBm
cmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcG9w
KFg4NlJlZ2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIp
CisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlm
IENQVShNSVBTKQorICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZv
cm0iCisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRj
Yzg5OWU3NTYzMzlhODExNjM0ZTIzYzIxN2JkYTFjY2Y2NC4uMmVlMDhhYzk2YWE4MjczZTk4OTc3
M2FiNmExYzZkMGJjN2NkMjU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCkBAIC04NTMsNiArODUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1p
dEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVy
ZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKKyAg
ICB2b2lkIGVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBBcmdOdW0+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90
PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+
IHNpemVPZkFyZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDMwZjNmMzZmNmVl
ZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uM2UwNDdhM2U3MGJmZDcyMWVhNzVmYTgzYzY1
MjUwY2IxNzlhOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkg
XAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+
PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsgXAotICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBc
CisgICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF8jI25hbWUpOyBcCiAgICAgICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAg
IH0gXAogICAgICAgICBORVhUX09QQ09ERV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwx
NSArMTkwLDE1IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0
U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7
IFwKKyAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAog
ICAgICAgICBicmVhazsgXAogICAgIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRT
bG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1Bh
dGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1
Yik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC02NTgsOSArNjU4LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Ao
c3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJl
c29sdmVfc2NvcGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hl
Y2tfdGR6KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkp
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC04NTcsOSArODU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAg
ICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVsOyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZp
eHVwLgogCiAgICAgQVNTRVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2
YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3Nl
bWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAg
ICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTExLDEyICs5MDYs
MTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJl
bCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJv
bGxiYWNrLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
bmVhckp1bXBzKSB7CiAgICAgICAgIGlmIChyZWNvcmQudGFyZ2V0KQpAQCAtMTAzNywzNSArMTAz
MCw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWlu
VGhyZWFkKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFt
X2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFw
cGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQot
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlv
bkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUg
Vk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9m
YXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
KTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQ
cmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKQogewogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdl
IGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWlu
ZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9ucyBmb3Igb3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMzYzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5
OC4uNzdhZWM0Y2M1YTE1MGIwNjJkNTFiOTk0YTU2Zjk5Nzk2OTQyMDgwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4
Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENo
ZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
SnVtcCk7CiAgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcg
KzU1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0
eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUm
LCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lk
IGVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dD
YXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlv
bik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNj
ZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2
b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNl
bGluZUdlbmVyYXRvcihWTSYpOwogCiAgICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgLy8gVGh1bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsKLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRodW5rSXNVc2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBi
ZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1
bmsuCi0gICAgICAgICAgICAvLyBSZXNvbHZlZENsb3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNh
dXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAg
ICAgICAgICAgcmV0dXJuICEocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBl
ID09IFJlc29sdmVkQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZN
Jik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihW
TSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUg
PFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVt
cGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxz
ZXlHZW5lcmF0b3IoVk0mKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDY5OWVhZmNiNzI5ZWNhNDE0MDc1ZWMx
MGNjYzkyNjIyMGJkNDU0NzUuLjQ0NDJhODg5YjU0MjhkNWE1ZGJkYjBlZjAwOTA1MjAxMTU0OTgx
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAt
NDUxLDE5ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQs
IGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9k
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
b3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Bvdyk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfcG93KTsKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5KCkpOwogICAg
ICAgICBBU1NFUlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9kaXYpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9kaXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2NjNDc4ZmY0N2ZhZGE3MWVj
OWRjMThmYWQxZDM0NTU0NTY5YjUuLjk0OWM0ZWIxNTI4MzMxYjRkMjc2MGNiOTY1OGExOTU1MjAx
NjM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwog
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgc3R1YkluZm9HUFIpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlSlNSID09IGJhc2VKU1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBu
ZWVkIG1vdmUocmV0dXJuVmFsdWVKU1IsIGJhc2VKU1IpCkBAIC01MjAsMTQgKzUyMCwxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJl
Z2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRK
U1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRy
eUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVt
cFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
aXRlckNhbGxSZXN1bHRKU1IgPSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBjNjdi
Y2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlLi5mOTNhMzY4ZmY2ZDhlMjg5NGJm
NjExNWVjOTMzMzUzOTczOTI5NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZv
aWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJ
VCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAK
ICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJh
dGVHZXRCeUlkSW5saW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hH
UFIsIHJlc3VsdEpTUik7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5z
aWcKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNS
OwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIp
OwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE3LDggKzIxNyw4IEBAIHZvaWQgSklU
UHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0
LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2gyR1BSOwogCiAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGF1dG8gZG9JbmxpbmVBY2Nl
c3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJ
bmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA2MjkyOWMwYzI0ODRmYjlj
YTBlYzY2MWJiN2MwYTdkZTY0OWZjOThjLi41MDY4OWI3MjE5ZmNmYjY5OWU1Zjg1MjQ5NGZiNzZi
NWQwZTQyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC00OSw0NiArNDksMTIyIEBAIGVudW0gY2xhc3MgQWNjZXNz
VHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFj
ZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24g
Ym90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9
OworY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0
UGF0aCB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIp
OworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86
OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwg
ZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3Ig
Y2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBT
bG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKwor
Ly8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5m
bzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Citz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJl
ZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5k
IFNsb3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5k
aWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggewor
I2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNs
b3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2Nv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
I2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
LCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cg
b3BlcmF0aW9uIik7Cit9CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTAxLDcgKzE3Nyw3
IEBAIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7
CiBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUik7CiBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSKTsKIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKK3N0YXRpY19hc3Nl
cnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSKTsKIAogc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZv
OjpyZWdUMzsKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVn
VDQ7CkBAIC0xNTAsOCArMjI2LDEyIEBAIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogfQogCiBuYW1lc3BhY2UgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocwogY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86
OnJldHVyblZhbHVlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OwpAQCAtMTYxLDc1ICsyNDEsMTcwIEBAIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250
Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2VuZGlmCi1z
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9u
dENsb2JiZXJKU1IpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGgg
b25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
KyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBu
YW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJz
IHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5mbzo6anNS
ZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFj
ZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owog
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRpZgor
c3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisK
Ky8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQo
QXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xv
dyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJz
IHsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUiB9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OwogfQogCiBuYW1lc3Bh
Y2UgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGgg
RmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYK
KworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsg
YmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXpl
IG9uIEFSTV9USFVNQjIKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5v
T3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVx
dWlyZWQgZm9yIERhdGFJQyIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zl
cmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cg
cGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
Citjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1
ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJl
Z2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDUgfTsKICNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQ
UiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lz
dGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKKyAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb2YgcmVnaXN0ZXJzIG9uIEFS
TV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMKKyAgICBN
YWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNW
QUxVRTMyXzY0CisgICAgR1BSSW5mbzo6cmVnVDgKKyNlbmRpZgorfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2Zp
bGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgY2Fs
bCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Citj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworCituYW1l
c3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJh
bmRKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpy
ZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQoYnJhbmRKU1IgPT0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAicmVxdWlyZWQgZm9y
IERhdGFJQyIpOworfQorCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5r
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBh
dGggdGh1bmsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpT
UiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KIH0KIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlh
ZWZjYWU2ZmNlNDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uYTk5N2ZiNDk5ZWMwMTY5NWVj
ZTA4YWU4YTI0MWRlNjU5YTg1NzY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC00NTEsMjQgKzQ1MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikp
OwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1
bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmpl
Y3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwot
I2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEg
KzQ2NCwyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFs
dWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9
IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigp
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7
CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAgICBjb25z
dGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXko
dm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0g
aml0Lmp1bXAoKTsKLQotICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBp
c0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwg
cmVnVDApOworICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCArNjM0LDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
dHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFsdWUs
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCkBAIC02NzksMzEgKzY0NywyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSByZWdUNDsKICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0Lmxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNU
cnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzVHJ1dGh5Lmxp
bmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBk
b25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2
bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlzVHJ1dGh5LmxpbmsoJmpp
dCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1
ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNUcnV0aHkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAKQEAgLTczNCw1NyArNjk2LDUzIEBAIHZvaWQgSklUOjplbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjpl
bWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93LCBnbG9i
YWxPYmplY3RHUFIsIHZhbHVlSlNSKTsKLSAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkp
OwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQ
UjE7Ci0KICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJv
dyk7CisKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKHRocm93blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUikpOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7
CisKICAgICBlbWl0TmFrZWROZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxl
ckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFs
dWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgCi0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CiAK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRocm93
blZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsKKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlSlNSLCBi
eXRlY29kZU9mZnNldEdQUikpOworICAgIAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVH
SVNURVJTID4gMAotICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQ
UjApOwotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihhcmd1bWVudEdQUjApOworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSID0gZ2xvYmFsT2JqZWN0R1BSOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlG
cmFtZSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BSKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOworICAgIC8vIENh
bGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BS
LCB0aHJvd25WYWx1ZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhy
b3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MSw3NyArMTIwOSw3NyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRv
ZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0
ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25n
aW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgot
ICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYg
KGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
anNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0g
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiks
IGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0
RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BS
ID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIg
PSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAg
ICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0lu
aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1QxOworCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoY2FuQmVP
cHRpbWl6ZWQoKSksIGNhbkJlT3B0aW1pemVkR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihs
b2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworLy8gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisvLyAgICBpZiAoZmlyc3QgPCBj
b3VudCkKKy8vICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEw
KTsKKy8vICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCisvLyAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNS
ZWdUMTApOworLy8KKy8vICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7CisvLyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKKy8vCisvLyAg
ICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3Bf
ZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQ
YWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKICAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQg
Ynl0ZWNvZGVPZmZzZXQgMC4KICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5l
ZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVk
R1BSID0gYXJndW1lbnRHUFI0OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRH
UFIgPSByZWdUMDsgLy8gSW5jb21pbmcKIAotICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0g
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCku
b2Zmc2V0KCk7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zmc2V0ICogc2l6ZW9m
KFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICBqaXQuc3ViNjQoaXRlcmF0b3JHUFIsIGxv
Y2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKLQotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB1bmRlZmluZWRHUFIpOwotICAgIGF1dG8gaW5p
dExvb3AgPSBqaXQubGFiZWwoKTsKLSAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExl
c3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CiAgICAgewotICAgICAgICBqaXQu
c3RvcmU2NCh1bmRlZmluZWRHUFIsIEJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgaXRlcmF0b3JHUFIsIFRpbWVzT25lKSk7Ci0gICAgICAgIGppdC5zdWI2NChUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICAgICAgaml0Lmp1bXAoaW5p
dExvb3ApOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1Qx
OyAvLyBJbmNvbWluZworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gcmVn
VDQ7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gcmVnVDU7CisgICAgICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB1bmRlZmluZWRKU1IgPSBqc1JlZ1QzMjsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobG9jYWxzVG9Jbml0R1BSLCBjYW5CZU9wdGltaXplZEdQUiwg
aXRlcmF0b3JHUFIsIHVuZGVmaW5lZEpTUikpOworCisgICAgICAgIHNpemVfdCBzdGFydExvY2Fs
ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCk7CisgICAgICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KHN0YXJ0TG9jYWwpLm9mZnNldCgpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gMCk7
CisgICAgICAgIGppdC5zdWJQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJ
bW0zMigtc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAg
ICAgICBqaXQuc3ViUHRyKGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Cisg
ICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHVuZGVmaW5lZEpTUik7
CisKKyAgICAgICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOworICAgICAgICBKdW1wIGlu
aXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQ
Uik7CisgICAgICAgIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHVuZGVmaW5lZEpTUiwg
QWRkcmVzcyhpdGVyYXRvckdQUikpOworICAgICAgICAgICAgaml0LnN1YlB0cihUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgfQorICAgICAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogICAg
IH0KLSAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllciht
X2NvZGVCbG9jaykuCisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FuQmVPcHRpbWl6ZWRH
UFIsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBhcmd1bWVudEdQUjEpOwogICAgIEp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMik7CiAKLSAgICBqaXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBzYXZlLgorICAgIGppdC5wdXNoVG9TYXZl
KGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gc2F2ZSAoY2FsbCBhcmd1bWVudHMgYmVsb3cgYXJlIGFs
bCBpbiByZWdpc3RlcnMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVu
dEdQUjEpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQucG9wVG9SZXN0b3JlKGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gcmVzdG9yZQogCi0gICAgaml0
Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8g
cmVzdG9yZS4KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVk
ZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTM0OCwxMSArMTMwNiw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9o
YW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5r
UmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0xMzYzLDcgKzEz
MTcsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50
ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFu
ZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKQEAgLTE1NzQsNTcgKzE1MjcsNDAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNr
X3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGUKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQUjApOwotI2Vsc2UKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsK
LSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7Ci0gICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgCisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7IC8vIEluY29taW5nCisKKyAgICBqaXQuZW1pdENU
SVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShY
ODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0j
ZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisK
KyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
aGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBmYzZm
ZThjNDA3NjEuLjk1NDEzMTgwY2M3N2FiZjU1NWQ5Njk5Mjk0YzVkZDFkMDY3NzBkNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC01
NSw4ICs1NSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDEsMjMgQEAg
dm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRl
Y29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107
Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJlZ3Mo
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAgIG1v
dmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pTUik7
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0
YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxPcGVy
YXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwotI2Vs
c2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9maWxl
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0gICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQpAQCAtMTU1LDggKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZh
bD4oKSwgaXRlcik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRl
ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGlu
ZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdo
dCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KQEAgLTE2NCwzNSArMTM1LDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigp
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9i
YWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBD
b2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0g
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJO
ZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBq
aXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNl
cHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92
YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBD
b2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTIwNCw3ICsxNzUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMSwzMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3Vs
dEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNs
b3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJ
bmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRo
aXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBi
ZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2Jh
bE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAt
Mjg2LDM0ICsyMzIsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
YXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQ
UiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9w
ZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
PFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHBy
b3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGpp
dC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CkBAIC0zMjMsNyArMjY5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVz
aW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtMzU0LDQ2ICszMDAsMjIgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFYKIHsKICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIAot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3Nl
cnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6
dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KQEAgLTQwNiw3ICszMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1
c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBC
YXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsKQEAgLTQyOCw0OSArMzUwLDI0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOwotICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZSk7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1f
cHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwot
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBj
YWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNj
ZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJy
YW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxy
ZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0
ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIx
KTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rp
b25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpB
cmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KQEAgLTQ4NiwxNiArMzgzLDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2Zp
bGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOworICAgIG1hdGVyaWFsaXpl
UG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5
UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0
ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxlR1BSKTsKLSAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCAvKiBzY3JhdGNoR1BSOiAqLyBz
dHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTUyOSw3
NiArNDI3LDI4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9w
UHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgp
OwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAgaWYgKGlzRGlyZWN0KQotICAgICAg
ICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSk7Ci0gICAg
ZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4oKSk7
Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZh
bEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGlmIChpc0RpcmVjdCkKLSAgICAg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVsc2UKLSAgICAgICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4o
KSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwot
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3Qg
cGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSByZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0g
ICAgLy8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8vIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvZmlsZUdQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
cmVnVDU7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3Jr
IHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBm
cm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC02MDYsMzkgKzQ1NiwzNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBT
bG93T3BlcmF0b2luID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q1OwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVn
VDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6cHJvZmlsZUdQUjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDU7Ci0gICAgewotICAgICAgICBSZWdpc3RlclNldCB1c2VkKGJhc2VHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJvZmlsZUdQUik7Ci0gICAgICAgIEFTU0VSVCghdXNlZC5j
b250YWlucyhyZWdUNCkpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDUpKTsK
LSAgICB9CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAor
ICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJh
dGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRv
aW4+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwor
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtNjUwLDcgKzQ5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1Ip
OwpAQCAtNjc5LDU2ICs1MjYsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJh
cnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0
cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNb
bV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwg
VHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0
QnlWYWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTUsMzkgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxk
T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0KICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHVi
SW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgLy8gTG9hZGluZyBudWxscHRy
IHRvIHRoaXMgcmVnaXN0ZXIgaXMgbmVjZXNzYXJ5IGZvciBzZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbAorICAgIC8vIHRvIG5vdCBjbG9iYmVyIGdsb2JhbE9iamVjdEdQUiBvbiBBUk1fVEhV
TUIyLCBhbmQgaXMgb3RoZXJ3aXNlIGhhcm1sZXNzLgorICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIHByb2ZpbGVHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbDxTbG93T3BlcmF0aW9uPihzdHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5jYWxsKEFk
ZHJlc3Mobm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC04NDIsOSAr
NjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFz
ZSk7CkBAIC04NzUsNjIgKzY5OSwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCiAgICAg
SklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsK
IAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mj4oKTsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNt
YU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9k
ZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVy
blZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0
YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRH
UFIoKSwgcmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0
SlNSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8v
IGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcg
YXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTkzOCwzMyArNzM3LDM2
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVy
YXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BS
LCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0g
YXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0
dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAg
aml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGpp
dC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0
aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2Rl
bF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzUsOSAr
Nzc3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyArODEyLDM3IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgVk0mIHZtID0g
dGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsK
IAorICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVH
UFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
KTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIg
PSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHBy
b3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAg
LTEwNzQsMzMgKzg1MCwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5sb2Fk
UHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9w
ZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVK
U1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwor
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBA
IC0xMTExLDcgKzg5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpT
Uik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsK
QEAgLTExMzgsNDcgKzkxNywyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJn
dW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+
Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0xMTkzLDcgKzk1MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTksNDcg
Kzk3NywyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZERpcmVjdD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwot
Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3Vt
ZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQ
Uik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTI3NCwxMiArMTAx
MSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKLSAgICAKKwogICAgIGlmICgqaWRl
bnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmco
KSkgewogICAgICAgICBsb2FkOEZyb21NZXRhZGF0YShieXRlY29kZSwgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0YWRhdGEoKSArIEdldEJ5SWRNb2RlTWV0YWRhdGE6Om9mZnNl
dE9mTW9kZSgpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUg
PSBicmFuY2gzMihOb3RFcXVhbCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdl
dEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpLCBzY3JhdGNoR1BSKTsKQEAgLTEzMTIsNTEgKzEwNDks
NjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwor
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgr
K107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLQogICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50
KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKK3sKKyAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisgICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9GVEwg
bWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdo
aWNoIG1heSBub3QgbWF0Y2gKKyAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CisgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBp
bG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAg
ICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKKworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0
aFRoaXM+KCk7CkBAIC0xMzY4LDcgKzExMjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7CiAgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAtMTM5NSw5NiArMTE0
OCwzMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQotewotICAgIC8vIFRoZSB0aHVuayBn
ZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8g
QmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0
aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcg
dG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAotICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0KLSAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAg
ICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRo
aXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRo
aXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RH
UFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhp
c1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFy
ZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
Ojp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50
R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkg
dGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklU
IGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xv
YmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBA
IC0xNDkyLDM1ICsxMTgyLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdp
dGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHRoaXNHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlz
R1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsIHByb3BlcnR5
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3Nl
cnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQ
UjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsK
KyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQo
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtMTUzNiw4ICsxMjI2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNo
R1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVZSZWcsIHZhbHVlSlNSKTsKQEAgLTE1NjEs
NyArMTI1MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHJlc2V0U1AoKTsgLy8gV2UgbWlnaHQgT1NSIGV4
aXQgaGVyZSwgc28gd2UgbmVlZCB0byBjb25zZXJ2YXRpdmVseSByZXNldCBTUAogICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAgICAKKwogICAgIC8vIElD
IGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2Ug
aXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4g
QmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CkBAIC0xNTcwLDU2ICsxMjYw
LDMxIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKLSAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMp
OwotICAgIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRC
eUlkSW5kZXgrK107Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+
KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjM7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1
ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQog
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2MjcsMzUg
KzEyOTIsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwor
CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3Nl
cnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQ
UjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsK
KyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQo
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1
dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY5MSw0OSArMTM1Niwy
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2lu
QnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEluQnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4
YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0
aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTc3Nyw1MyArMTQyMSwyNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0KLSAgICBKSVRJbkJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRp
bWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlW
YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0g
ICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJv
cGVydHlKU1IpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBK
SVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwor
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93
UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BS
MCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3Vt
ZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCks
IHByb2ZpbGVHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwg
ZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4g
Y3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5h
bWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1
ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE4NTgsNDkgKzE0NzYsMjYg
QEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxS
ZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUp
Cit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NF
UlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlw
ZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5T3JCcmFuZEdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
cGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eU9yQnJhbmRHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSksIGRlY2x0eXBl
KG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE5MTIsMTIg
KzE1MDcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2Rl
Lm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5
MjYsMTIgKzE1MTksMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShi
eXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5k
PigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1f
YnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgZW1pdEhhc1ByaXZhdGVT
bG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTI1OTAsMTMgKzIxODEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGlmIChwcm9m
aWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgewogICAgICAgICAvLyBJZiBhbnkgbGlua2Vk
IENvZGVCbG9jayBzYXcgYSBNb2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtlZCBDb2RlQmxvY2tzIGFy
ZSBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGFsc28gc2VlIE1vZHVsZVZhci4KLSAgICAgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7
CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX3Ro
cm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKICAgICAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UgewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3VtZW50R1BSMCwgY3VycmVu
dEluc3RydWN0aW9uKTsKLSNlbHNlCiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKQEAgLTI2MDYsMTEgKzIxOTMsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rvcgog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0
R1BSKTsKIAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
CiAgICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0
b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlv
biBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAg
LTI2MTksNDMgKzIyMDQsMzIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2
XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50
R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7IC8v
IEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQ
UjM7IC8vIE9ubHkgdXNlZCBhcyBzY3JhdGNoIHJlZ2lzdGVyCiAKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
Y29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwog
ICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKLQogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9w
ZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2
bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFu
ZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKQEAgLTI3NDMsNyArMjMxNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2VuZXJpY0Nhc2VzLmxp
bmsodGhpcyk7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2Vu
dW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lQ2FzZXMubGlu
ayh0aGlzKTsKQEAgLTI4MDYsNyArMjM4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgb3Bl
cmF0aW9uQ2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX25leHQpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmsodGhp
cyk7CkBAIC0yOTA2LDcgKzI0ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRv
cl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBl
Pgotdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xv
d1BhdGhGdW5jdGlvblR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0
aW9uVHlwZSBnZW5lcmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBA
IC0yOTM2LDcgKzI1MTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nh
c2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNTE4LDMxIEBAIHZvaWQgSklU
OjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2lu
X2J5X3ZhbCk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9pbl9ieV92YWwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBl
bWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJv
cGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQog
ewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKQEAgLTI5NzcsMTUgKzI1NTEsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUUKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5
X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
ZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3By
b3BlcnR5KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5
MDFkZjU2YWZiMTNiNDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3
MDM2NmIzNTBlMjM5N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwCkBAIC0xNzEsOCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVRUaHVua3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwog
fQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYg
dm0sIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9
IGJpdHdpc2VfY2FzdDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEs
OCArMTc5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5
U2VhcmNoZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktl
eSYga2V5KSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQog
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNv
bnN0IEhvc3RGdW5jdGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNo
OjplcXVhbChhLCBiKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXgg
ODQ3Y2UyNTAyZTQwMThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZl
MGRiNTdmY2Q4YTBjYTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRo
dW5rcy5oCkBAIC02Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SklUVGh1bmtQdHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRo
dW5rR2VuZXJhdG9yKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZN
JiwgU2xvd1BhdGhGdW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhv
c3RGdW5jdGlvblN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlm
OTdjYjA3NDdhMGE0ZTEzZDcyOGIuLmYzYmUzZTM0ZDNjNzc1ZWUyYjVjZWFhNTg3Y2M4ZmU1NzI3
MzFkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAg
LTM2LDE3ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CiAgICAgVk0mIHZt
ID0gbV9qaXQtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2ppdC0+bV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2ppdC0+bV9ieXRlY29kZUluZGV4KTsKIAotICAgIFVOVVNFRF9WQVJJQUJM
RShtX3BjKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxOwotICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRSZWcpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjM7CisgICAgc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBieXRlY29kZU9mZnNldEdQ
UikpOworICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIG1faml0LT5lbWl0TmFrZWROZWFyQ2FsbCh2bS5qaXRT
dHVicy0+Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIodm0sIG1fc2xvd1BhdGhGdW5jdGlvbikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIH0KIApAQCAtNTQsNDYgKzUyLDQ2IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpnZW5lcmF0ZVRo
dW5rKFZNJiB2bSwgU2xvCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBKSVQ6OmFyZ3VtZW50R1BSMTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKLQotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKIAotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQ
b2ludGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklU
Ojphcmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworI2lmIENQVShYODZf
NjQpICYmIE9TKFdJTkRPV1MpCisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1l
bnRHUFIwKTsKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBDb2RlQmxvY2s6OmZmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisjZWxzZQogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisjZW5kaWYKIAogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNo
ZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVi
cCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2lmIENQVShY
ODZfNjQpICYmIE9TKFdJTkRPV1MpCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7IC8vIHZQQworICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsgLy8gY2Fs
bEZyYW1lIHJlZ2lzdGVyCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAKLSAgICBhdXRvIGhhbmRs
ZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8g
VGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIENDYWxsSGVscGVyczo6SnVt
cCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5kZXggODk5YTI5MDBm
ZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4MjY1MmE5MzZhZTA5
NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpJVFNsb3dQ
YXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBjb25zdCBJ
bnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKKyAgICBK
SVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlv
bikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0aEZ1bmN0aW9uKHNs
b3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7CiAgICAgICAgIGFzc2Vy
dElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0mLCBTbG93UGF0aEZ1
bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCi0gICAg
SklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0ZVRvcENhbGxGcmFt
ZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5hZGRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQt
Pm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIy
KTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJ
VDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRy
KG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAgSklUOjpDYWxsIGNh
bGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwotCi0jaWYgQ1BVKFg4
Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QwKTsgLy8g
dlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxGcmFtZSByZWdpc3Rl
cgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0gR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5leGNlcHRpb25DaGVjaygp
OwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBTbG93UGF0aEZ1bmN0
aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9wYzsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1NzFhNmNiNTdlODI0ZGNjOWUxY2EyMzVlNGRiZGVhMzA5
MzNiMC4uMDc2MDc2MTAzZTAzNGFkYjdhZjEyZjU4ZWY3ZmY0MDg4OGRhYzA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNDksOSArNDks
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5j
YWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2
bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5LDggKzU3LDYgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0
b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhj
ZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwpAQCAtNzcsOCArNzMsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYQog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhh
bmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjayIpOwogfQogCi0jZW5kaWYKLQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVz
QW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMg
aml0OwpAQCAtMTAxLDggKzk1LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0
YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKQEAg
LTExMyw4ICsxMDUsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgICAgIC8vIEV4Y2VwdGlvbiBmdXp6
aW5nIGNhbiBjYWxsIGEgcnVudGltZSBmdW5jdGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUg
dGhlIHJldHVybiBhZGRyZXNzIGhlcmUuCiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaml0LnB1
c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BVKEFSTTY0
KSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKKyNlbGlm
IENQVShNSVBTKQorICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50
ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpyZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UK
KyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKICNlbmRpZgogICAg
IH0KIApAQCAtMTIzLDggKzExOSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSkgewogI2lmIENQVShYODZfNjQpCiAgICAgICAg
IGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQorI2VsaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwor
I2VsaWYgQ1BVKE1JUFMpCisgICAgICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNl
bHNlCisjICAgICAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYK
ICAgICB9CiAgICAgaml0LnJldCgpOwpAQCAtMTQzLDggKzE0Myw2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNo
ZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQogdGVtcGxhdGU8dHlwZW5hbWUgVGFnVHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFs
aWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFn
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXgg
YTlmZWVlYTkyNGFlMDA3OGQ4NDUxZTE3MmM0YzQ5NDVkZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3
ODI5ZjBiNGFiY2FiYWVkYzQ5NzM1YTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0zOCwxMyArMzgsOCBAQCBlbnVtIGNsYXNzIENhbGxNb2Rl
OwogdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiBjbGFzcyBW
TTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dl
bmVyYXRvcihWTSYpOwotCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxl
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CkBA
IC04Miw5ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1
bmNUaHVua0dlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJik7CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNjY0YjBl
MjlmNmJhM2NlNDgyNmU1MTA5ZDczZjg2Y2M5YmM2YWRmZC4uNWVjNzQwOWJjOWFlODZjMzQyOGU2
MmVjMjBhNDUwYWYyZTc4YjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQg
KzgzOSw2IEBACiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2Vu
ZGlmCiAKLSNpZiBDUFUoQVJNNjQpIHx8IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0v
KiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgdGh1bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1
bWVudCByZWdpc3RlcnMsIGFuZAotICAgbWFrZSB1c2Ugb2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4g
Rm9yIG5vdywgd2UnbGwgb25seSBzdXBwb3J0IHRoZW0gb24gcGxhdGZvcm1zCi0gICB0aGF0IGhh
dmUgNiBvciBtb3JlIGFyZ3VtZW50IHJlZ2lzdGVycyB0byB1c2UuCi0qLwotI2RlZmluZSBFTkFC
TEVfRVhUUkFfQ1RJX1RIVU5LUyAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9CSU5E
SU5HX0lOVEVHUklUWSkgJiYgIU9TKFdJTkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lO
VEVHUklUWSAxCiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="474151"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448303</attachid>
            <date>2022-01-04 09:39:47 -0800</date>
            <delta_ts>2022-01-04 11:28:41 -0800</delta_ts>
            <desc>Windows fix 2</desc>
            <filename>bug-233822-20220104173945.patch</filename>
            <type>text/plain</type>
            <size>189601</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4
OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1
YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRl
c3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihs
ZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIo
VHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0
KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2
OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uMTM2NmRkNTEyYmIxNjIzNDM4YzdmOWZlYWQ5ZWMy
ZjYyYzQ3MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERv
dWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OworICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJz
OjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9CiAKICAgICAvLyBJbiB0aGUg
VGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiBy
ZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXpl
KCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFs
aXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxV
RSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0
NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ly
KGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1
MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhk
NjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmln
aW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2Ugewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
anVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAm
bV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1w
VG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAg
ICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0
LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAg
ICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNl
bmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZlY2E0NTA4ZDcz
YjhkMzhjYWNmZjE1Yy4uNTI4ZDQ3MzhkYTY3YWUwMWY2YzQyMDk4YmRkNTMxYTM0YmNlMmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAg
ICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRT
dHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3IgaXRl
cmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdpc3Rl
ciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjgsMjQgKzUyOCwyNCBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVz
dWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJ
bnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgpAQCAtNTU0LDcg
KzU1NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVn
cy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKQEAgLTYwNyw3
ICs2MDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwogICAgICAgICBy
ZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwpA
QCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIHJlZ3Mu
dGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENv
ZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwogICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAgICAgICBpZiAoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAg
IHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5i
cmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBl
YjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2
ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBj
b21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYg
KCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0K
LSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0o
KS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQot
ICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQs
IHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAg
ICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAg
ICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGlu
IENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsg
PSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
YXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRo
dW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJ
dGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6
OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVy
cygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkg
dHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhH
ZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAg
IC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ5OTdiZDRiYjkwZTU5Mzcy
MjkwYzBlYWIyODY4YjZjMTgxMjlhN2EuLmE3MjhlZmQ4NzEyZWM1ZTA5YzZkNzU2MWY0Mjk1Zjg4
NzNkZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTMxMyw3ICszMTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7
CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMo
KTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1
ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5
Yjk4ZDU0NzYzMTgzODZhZmIyZmVjZjhlZTFkMjYwMmFhZmFkZWU3Li40OGExODBiNzQwYWFjZTNm
YTAzMTkzNzFlNWUwYmM0ZmM5YzgyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRo
ZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5s
YWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVscGVyczo6
SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0
LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0
ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1
ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUz
YmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2
bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0
eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0
byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAoQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2Vw
dGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0
cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNl
cHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5k
aWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9u
UHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0
MDk4Mjg5MzVlLi5kOGNkZmZhNTE2NDI1ODBmOGQ1ZGQ2N2Y4MTg5N2UyNTZjMmQwYjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNr
ZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MCBAQCB2b2lkIENDYWxsSGVs
cGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRy
VGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2Ny
aXB0aW9uKTsKIH0KIAordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKCkK
K3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQ
VShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7CisjZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3Qg
aW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFj
ZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgc3ViUHRyKFRydXN0
ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKK30KKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkKK3sK
KyAgICAvLyBSZXNldCBzdGFjaworICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgLy8gUmVzdG9yZSBm
cmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcG9w
KFg4NlJlZ2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIp
CisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlm
IENQVShNSVBTKQorICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZv
cm0iCisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRj
Yzg5OWU3NTYzMzlhODExNjM0ZTIzYzIxN2JkYTFjY2Y2NC4uMmVlMDhhYzk2YWE4MjczZTk4OTc3
M2FiNmExYzZkMGJjN2NkMjU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCkBAIC04NTMsNiArODUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1p
dEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVy
ZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKKyAg
ICB2b2lkIGVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBBcmdOdW0+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90
PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+
IHNpemVPZkFyZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDMwZjNmMzZmNmVl
ZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uM2UwNDdhM2U3MGJmZDcyMWVhNzVmYTgzYzY1
MjUwY2IxNzlhOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkg
XAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+
PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsgXAotICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBc
CisgICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF8jI25hbWUpOyBcCiAgICAgICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAg
IH0gXAogICAgICAgICBORVhUX09QQ09ERV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwx
NSArMTkwLDE1IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0
U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7
IFwKKyAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAog
ICAgICAgICBicmVhazsgXAogICAgIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRT
bG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1Bh
dGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1
Yik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC02NTgsOSArNjU4LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Ao
c3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJl
c29sdmVfc2NvcGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hl
Y2tfdGR6KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkp
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC04NTcsOSArODU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAg
ICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVsOyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZp
eHVwLgogCiAgICAgQVNTRVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2
YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3Nl
bWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAg
ICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTExLDEyICs5MDYs
MTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJl
bCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJv
bGxiYWNrLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
bmVhckp1bXBzKSB7CiAgICAgICAgIGlmIChyZWNvcmQudGFyZ2V0KQpAQCAtMTAzNywzNSArMTAz
MCw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWlu
VGhyZWFkKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFt
X2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFw
cGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQot
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlv
bkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUg
Vk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9m
YXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
KTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQ
cmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKQogewogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdl
IGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWlu
ZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9ucyBmb3Igb3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMzYzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5
OC4uNzdhZWM0Y2M1YTE1MGIwNjJkNTFiOTk0YTU2Zjk5Nzk2OTQyMDgwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4
Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENo
ZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
SnVtcCk7CiAgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcg
KzU1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0
eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUm
LCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lk
IGVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dD
YXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlv
bik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNj
ZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2
b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNl
bGluZUdlbmVyYXRvcihWTSYpOwogCiAgICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgLy8gVGh1bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsKLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRodW5rSXNVc2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBi
ZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1
bmsuCi0gICAgICAgICAgICAvLyBSZXNvbHZlZENsb3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNh
dXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAg
ICAgICAgICAgcmV0dXJuICEocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBl
ID09IFJlc29sdmVkQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZN
Jik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihW
TSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUg
PFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVt
cGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxz
ZXlHZW5lcmF0b3IoVk0mKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDY5OWVhZmNiNzI5ZWNhNDE0MDc1ZWMx
MGNjYzkyNjIyMGJkNDU0NzUuLjQ0NDJhODg5YjU0MjhkNWE1ZGJkYjBlZjAwOTA1MjAxMTU0OTgx
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAt
NDUxLDE5ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQs
IGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9k
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
b3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Bvdyk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfcG93KTsKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5KCkpOwogICAg
ICAgICBBU1NFUlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9kaXYpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9kaXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2NjNDc4ZmY0N2ZhZGE3MWVj
OWRjMThmYWQxZDM0NTU0NTY5YjUuLjk0OWM0ZWIxNTI4MzMxYjRkMjc2MGNiOTY1OGExOTU1MjAx
NjM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwog
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgc3R1YkluZm9HUFIpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlSlNSID09IGJhc2VKU1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBu
ZWVkIG1vdmUocmV0dXJuVmFsdWVKU1IsIGJhc2VKU1IpCkBAIC01MjAsMTQgKzUyMCwxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJl
Z2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRK
U1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRy
eUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVt
cFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
aXRlckNhbGxSZXN1bHRKU1IgPSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBjNjdi
Y2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlLi5mOTNhMzY4ZmY2ZDhlMjg5NGJm
NjExNWVjOTMzMzUzOTczOTI5NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZv
aWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJ
VCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAK
ICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJh
dGVHZXRCeUlkSW5saW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hH
UFIsIHJlc3VsdEpTUik7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5z
aWcKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNS
OwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIp
OwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE3LDggKzIxNyw4IEBAIHZvaWQgSklU
UHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0
LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2gyR1BSOwogCiAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGF1dG8gZG9JbmxpbmVBY2Nl
c3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJ
bmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA2MjkyOWMwYzI0ODRmYjlj
YTBlYzY2MWJiN2MwYTdkZTY0OWZjOThjLi41MDY4OWI3MjE5ZmNmYjY5OWU1Zjg1MjQ5NGZiNzZi
NWQwZTQyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC00OSw0NiArNDksMTIyIEBAIGVudW0gY2xhc3MgQWNjZXNz
VHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFj
ZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24g
Ym90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9
OworY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0
UGF0aCB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIp
OworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86
OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwg
ZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3Ig
Y2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBT
bG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKwor
Ly8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5m
bzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Citz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJl
ZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5k
IFNsb3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5k
aWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggewor
I2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNs
b3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2Nv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
I2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
LCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cg
b3BlcmF0aW9uIik7Cit9CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTAxLDcgKzE3Nyw3
IEBAIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7
CiBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUik7CiBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSKTsKIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKK3N0YXRpY19hc3Nl
cnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSKTsKIAogc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZv
OjpyZWdUMzsKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVn
VDQ7CkBAIC0xNTAsOCArMjI2LDEyIEBAIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogfQogCiBuYW1lc3BhY2UgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocwogY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86
OnJldHVyblZhbHVlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OwpAQCAtMTYxLDc1ICsyNDEsMTcwIEBAIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250
Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2VuZGlmCi1z
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9u
dENsb2JiZXJKU1IpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGgg
b25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
KyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBu
YW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJz
IHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5mbzo6anNS
ZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFj
ZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owog
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRpZgor
c3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisK
Ky8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQo
QXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xv
dyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJz
IHsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUiB9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OwogfQogCiBuYW1lc3Bh
Y2UgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGgg
RmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYK
KworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsg
YmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXpl
IG9uIEFSTV9USFVNQjIKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5v
T3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVx
dWlyZWQgZm9yIERhdGFJQyIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zl
cmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cg
cGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
Citjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1
ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJl
Z2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDUgfTsKICNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQ
UiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lz
dGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKKyAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb2YgcmVnaXN0ZXJzIG9uIEFS
TV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMKKyAgICBN
YWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNW
QUxVRTMyXzY0CisgICAgR1BSSW5mbzo6cmVnVDgKKyNlbmRpZgorfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2Zp
bGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgY2Fs
bCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Citj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworCituYW1l
c3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJh
bmRKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpy
ZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQoYnJhbmRKU1IgPT0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAicmVxdWlyZWQgZm9y
IERhdGFJQyIpOworfQorCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5r
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBh
dGggdGh1bmsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpT
UiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KIH0KIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlh
ZWZjYWU2ZmNlNDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uYTk5N2ZiNDk5ZWMwMTY5NWVj
ZTA4YWU4YTI0MWRlNjU5YTg1NzY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC00NTEsMjQgKzQ1MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikp
OwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1
bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmpl
Y3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwot
I2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEg
KzQ2NCwyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFs
dWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9
IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigp
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7
CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAgICBjb25z
dGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXko
dm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0g
aml0Lmp1bXAoKTsKLQotICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBp
c0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwg
cmVnVDApOworICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCArNjM0LDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
dHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFsdWUs
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCkBAIC02NzksMzEgKzY0NywyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSByZWdUNDsKICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0Lmxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNU
cnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzVHJ1dGh5Lmxp
bmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBk
b25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2
bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlzVHJ1dGh5LmxpbmsoJmpp
dCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1
ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNUcnV0aHkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAKQEAgLTczNCw1NyArNjk2LDUzIEBAIHZvaWQgSklUOjplbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjpl
bWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93LCBnbG9i
YWxPYmplY3RHUFIsIHZhbHVlSlNSKTsKLSAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkp
OwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQ
UjE7Ci0KICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJv
dyk7CisKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKHRocm93blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUikpOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7
CisKICAgICBlbWl0TmFrZWROZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxl
ckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFs
dWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgCi0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CiAK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRocm93
blZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsKKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlSlNSLCBi
eXRlY29kZU9mZnNldEdQUikpOworICAgIAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVH
SVNURVJTID4gMAotICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQ
UjApOwotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihhcmd1bWVudEdQUjApOworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSID0gZ2xvYmFsT2JqZWN0R1BSOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlG
cmFtZSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BSKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOworICAgIC8vIENh
bGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BS
LCB0aHJvd25WYWx1ZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhy
b3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MSw3NyArMTIwOSw3NyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRv
ZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0
ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25n
aW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgot
ICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYg
KGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
anNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0g
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiks
IGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0
RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BS
ID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIg
PSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAg
ICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0lu
aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1QxOworCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoY2FuQmVP
cHRpbWl6ZWQoKSksIGNhbkJlT3B0aW1pemVkR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihs
b2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworLy8gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisvLyAgICBpZiAoZmlyc3QgPCBj
b3VudCkKKy8vICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEw
KTsKKy8vICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCisvLyAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNS
ZWdUMTApOworLy8KKy8vICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7CisvLyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKKy8vCisvLyAg
ICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3Bf
ZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQ
YWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKICAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQg
Ynl0ZWNvZGVPZmZzZXQgMC4KICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5l
ZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVk
R1BSID0gYXJndW1lbnRHUFI0OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRH
UFIgPSByZWdUMDsgLy8gSW5jb21pbmcKIAotICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0g
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCku
b2Zmc2V0KCk7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zmc2V0ICogc2l6ZW9m
KFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICBqaXQuc3ViNjQoaXRlcmF0b3JHUFIsIGxv
Y2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKLQotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB1bmRlZmluZWRHUFIpOwotICAgIGF1dG8gaW5p
dExvb3AgPSBqaXQubGFiZWwoKTsKLSAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExl
c3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CiAgICAgewotICAgICAgICBqaXQu
c3RvcmU2NCh1bmRlZmluZWRHUFIsIEJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgaXRlcmF0b3JHUFIsIFRpbWVzT25lKSk7Ci0gICAgICAgIGppdC5zdWI2NChUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICAgICAgaml0Lmp1bXAoaW5p
dExvb3ApOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1Qx
OyAvLyBJbmNvbWluZworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gcmVn
VDQ7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gcmVnVDU7CisgICAgICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB1bmRlZmluZWRKU1IgPSBqc1JlZ1QzMjsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobG9jYWxzVG9Jbml0R1BSLCBjYW5CZU9wdGltaXplZEdQUiwg
aXRlcmF0b3JHUFIsIHVuZGVmaW5lZEpTUikpOworCisgICAgICAgIHNpemVfdCBzdGFydExvY2Fs
ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCk7CisgICAgICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KHN0YXJ0TG9jYWwpLm9mZnNldCgpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gMCk7
CisgICAgICAgIGppdC5zdWJQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJ
bW0zMigtc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAg
ICAgICBqaXQuc3ViUHRyKGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Cisg
ICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHVuZGVmaW5lZEpTUik7
CisKKyAgICAgICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOworICAgICAgICBKdW1wIGlu
aXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQ
Uik7CisgICAgICAgIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHVuZGVmaW5lZEpTUiwg
QWRkcmVzcyhpdGVyYXRvckdQUikpOworICAgICAgICAgICAgaml0LnN1YlB0cihUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgfQorICAgICAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogICAg
IH0KLSAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllciht
X2NvZGVCbG9jaykuCisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FuQmVPcHRpbWl6ZWRH
UFIsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBhcmd1bWVudEdQUjEpOwogICAgIEp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMik7CiAKLSAgICBqaXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBzYXZlLgorICAgIGppdC5wdXNoVG9TYXZl
KGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gc2F2ZSAoY2FsbCBhcmd1bWVudHMgYmVsb3cgYXJlIGFs
bCBpbiByZWdpc3RlcnMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVu
dEdQUjEpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQucG9wVG9SZXN0b3JlKGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gcmVzdG9yZQogCi0gICAgaml0
Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8g
cmVzdG9yZS4KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVk
ZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTM0OCwxMSArMTMwNiw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9o
YW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5r
UmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAg
aml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0xMzYzLDcgKzEz
MTcsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50
ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFu
ZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKQEAgLTE1NzQsNTcgKzE1MjcsNDAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNr
X3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGUKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQUjApOwotI2Vsc2UKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsK
LSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7Ci0gICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgCisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IG5vbkFyZ0dQUjA7IC8vIEluY29taW5nCisKKyAgICBqaXQuZW1pdENU
SVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShY
ODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0j
ZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisK
KyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
aGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBmYzZm
ZThjNDA3NjEuLjk1NDEzMTgwY2M3N2FiZjU1NWQ5Njk5Mjk0YzVkZDFkMDY3NzBkNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC01
NSw4ICs1NSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDEsMjMgQEAg
dm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRl
Y29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107
Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJlZ3Mo
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAgIG1v
dmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pTUik7
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0
YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxPcGVy
YXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwotI2Vs
c2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9maWxl
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0gICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQpAQCAtMTU1LDggKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAg
Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZh
bD4oKSwgaXRlcik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRl
ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGlu
ZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdo
dCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KQEAgLTE2NCwzNSArMTM1LDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigp
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9i
YWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBD
b2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0g
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJO
ZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBq
aXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNl
cHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92
YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBD
b2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTIwNCw3ICsxNzUs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMSwzMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3Vs
dEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNs
b3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJ
bmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRo
aXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBi
ZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2Jh
bE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAt
Mjg2LDM0ICsyMzIsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
YXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQ
UiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9w
ZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
PFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHBy
b3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGpp
dC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CkBAIC0zMjMsNyArMjY5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVz
aW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtMzU0LDQ2ICszMDAsMjIgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFYKIHsKICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIAot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFNldFByaXZhdGVCcmFuZD4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFu
ZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3Nl
cnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6
dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KQEAgLTQwNiw3ICszMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1
c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBC
YXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsKQEAgLTQyOCw0OSArMzUwLDI0IEBAIHZvaWQgSklUOjpl
bWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcENoZWNrUHJpdmF0ZUJyYW5kPigpOwotICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZSk7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1f
cHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQ
cml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwot
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBj
YWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNz
R2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNj
ZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJy
YW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxy
ZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0
ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIx
KTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rp
b25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpB
cmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KQEAgLTQ4NiwxNiArMzgzLDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2Zp
bGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOworICAgIG1hdGVyaWFsaXpl
UG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5
UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0
ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxlR1BSKTsKLSAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCAvKiBzY3JhdGNoR1BSOiAqLyBz
dHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTUyOSw3
NiArNDI3LDI4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9w
UHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgp
OwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAgaWYgKGlzRGlyZWN0KQotICAgICAg
ICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSk7Ci0gICAg
ZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4oKSk7
Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZh
bEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGlmIChpc0RpcmVjdCkKLSAgICAg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVsc2UKLSAgICAgICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4o
KSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwot
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3Qg
cGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSByZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0g
ICAgLy8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8vIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvZmlsZUdQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
cmVnVDU7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3Jr
IHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBm
cm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC02MDYsMzkgKzQ1NiwzNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBT
bG93T3BlcmF0b2luID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q1OwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVn
VDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6cHJvZmlsZUdQUjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDU7Ci0gICAgewotICAgICAgICBSZWdpc3RlclNldCB1c2VkKGJhc2VHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJvZmlsZUdQUik7Ci0gICAgICAgIEFTU0VSVCghdXNlZC5j
b250YWlucyhyZWdUNCkpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDUpKTsK
LSAgICB9CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAor
ICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJh
dGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRv
aW4+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwor
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtNjUwLDcgKzQ5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1Ip
OwpAQCAtNjc5LDU2ICs1MjYsMjggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJh
cnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0
cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNb
bV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwg
VHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0
QnlWYWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTUsMzkgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxk
T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0KICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHVi
SW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgLy8gTG9hZGluZyBudWxscHRy
IHRvIHRoaXMgcmVnaXN0ZXIgaXMgbmVjZXNzYXJ5IGZvciBzZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbAorICAgIC8vIHRvIG5vdCBjbG9iYmVyIGdsb2JhbE9iamVjdEdQUiBvbiBBUk1fVEhV
TUIyLCBhbmQgaXMgb3RoZXJ3aXNlIGhhcm1sZXNzLgorICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIHByb2ZpbGVHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbDxTbG93T3BlcmF0aW9uPihzdHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5jYWxsKEFk
ZHJlc3Mobm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1l
X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC04NDIsOSAr
NjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFz
dFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFz
ZSk7CkBAIC04NzUsNjIgKzY5OSwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCiAgICAg
SklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsK
IAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mj4oKTsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6
ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNt
YU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9k
ZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVy
blZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0
YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRH
UFIoKSwgcmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0
SlNSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8v
IGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcg
YXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTkzOCwzMyArNzM3LDM2
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0
aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVy
YXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BS
LCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0g
YXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0
dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAg
aml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlm
IChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGpp
dC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0
aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2Rl
bF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzUsOSAr
Nzc3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyArODEyLDM3IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgVk0mIHZtID0g
dGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklU
RGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsK
IAorICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVH
UFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkp
KTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIg
PSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHBy
b3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAg
LTEwNzQsMzMgKzg1MCwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5sb2Fk
UHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9w
ZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVK
U1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwor
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBA
IC0xMTExLDcgKzg5MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpT
Uik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsK
QEAgLTExMzgsNDcgKzkxNywyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJn
dW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlv
blRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+
Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CkBAIC0xMTkzLDcgKzk1MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTksNDcg
Kzk3NywyNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZERpcmVjdD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwot
Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3Vt
ZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQ
Uik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
Pjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTI3NCwxMiArMTAx
MSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKLSAgICAKKwogICAgIGlmICgqaWRl
bnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmco
KSkgewogICAgICAgICBsb2FkOEZyb21NZXRhZGF0YShieXRlY29kZSwgT3BHZXRCeUlkOjpNZXRh
ZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0YWRhdGEoKSArIEdldEJ5SWRNb2RlTWV0YWRhdGE6Om9mZnNl
dE9mTW9kZSgpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUg
PSBicmFuY2gzMihOb3RFcXVhbCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdl
dEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpLCBzY3JhdGNoR1BSKTsKQEAgLTEzMTIsNTEgKzEwNDks
NjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2Nr
KG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwor
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgr
K107CisKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLQogICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50
KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKK3sKKyAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisgICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9GVEwg
bWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdo
aWNoIG1heSBub3QgbWF0Y2gKKyAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CisgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBp
bG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAg
ICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKKworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0
aFRoaXM+KCk7CkBAIC0xMzY4LDcgKzExMjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7CiAgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAtMTM5NSw5NiArMTE0
OCwzMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQotewotICAgIC8vIFRoZSB0aHVuayBn
ZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8g
QmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0
aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcg
dG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAotICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0KLSAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAg
ICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRo
aXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRo
aXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RH
UFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhp
c1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFy
ZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
Ojp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50
R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkg
dGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklU
IGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xv
YmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBA
IC0xNDkyLDM1ICsxMTgyLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdp
dGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHRoaXNHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlz
R1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsIHByb3BlcnR5
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3Nl
cnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQ
UjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsK
KyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQo
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtMTUzNiw4ICsxMjI2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNo
R1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVZSZWcsIHZhbHVlSlNSKTsKQEAgLTE1NjEs
NyArMTI1MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHJlc2V0U1AoKTsgLy8gV2UgbWlnaHQgT1NSIGV4
aXQgaGVyZSwgc28gd2UgbmVlZCB0byBjb25zZXJ2YXRpdmVseSByZXNldCBTUAogICAgIGFkZFNs
b3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAgICAKKwogICAgIC8vIElD
IGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2Ug
aXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4g
QmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CkBAIC0xNTcwLDU2ICsxMjYw
LDMxIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKLSAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMp
OwotICAgIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRC
eUlkSW5kZXgrK107Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+
KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjM7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1
ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQog
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2MjcsMzUg
KzEyOTIsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwor
CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3Nl
cnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQ
UjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsK
KyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVt
cChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQo
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1
dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY5MSw0OSArMTM1Niwy
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2lu
QnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEluQnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4
YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0
aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTc3Nyw1MyArMTQyMSwyNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0KLSAgICBKSVRJbkJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRp
bWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlW
YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0g
ICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJv
cGVydHlKU1IpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBK
SVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwor
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93
UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BS
MCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3Vt
ZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCks
IHByb2ZpbGVHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwg
ZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4g
Y3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5h
bWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1
ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE4NTgsNDkgKzE0NzYsMjYg
QEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxS
ZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUp
Cit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NF
UlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlw
ZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5T3JCcmFuZEdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
cGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eU9yQnJhbmRHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSksIGRlY2x0eXBl
KG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTE5MTIsMTIg
KzE1MDcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2Rl
Lm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5
LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5
MjYsMTIgKzE1MTksMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShi
eXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5k
PigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1f
YnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgZW1pdEhhc1ByaXZhdGVT
bG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTI1OTAsMTMgKzIxODEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGlmIChwcm9m
aWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgewogICAgICAgICAvLyBJZiBhbnkgbGlua2Vk
IENvZGVCbG9jayBzYXcgYSBNb2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtlZCBDb2RlQmxvY2tzIGFy
ZSBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGFsc28gc2VlIE1vZHVsZVZhci4KLSAgICAgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7
CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX3Ro
cm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKICAgICAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UgewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3VtZW50R1BSMCwgY3VycmVu
dEluc3RydWN0aW9uKTsKLSNlbHNlCiAgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKQEAgLTI2MDYsMTEgKzIxOTMsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0
X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rvcgog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0
R1BSKTsKIAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
CiAgICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0
b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlv
biBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAg
LTI2MTksNDMgKzIyMDQsMzIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2
XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50
R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7IC8v
IEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQ
UjM7IC8vIE9ubHkgdXNlZCBhcyBzY3JhdGNoIHJlZ2lzdGVyCiAKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
Y29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwog
ICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKLQogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9w
ZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2
bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFu
ZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKQEAgLTI3NDMsNyArMjMxNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2VuZXJpY0Nhc2VzLmxp
bmsodGhpcyk7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2Vu
dW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lQ2FzZXMubGlu
ayh0aGlzKTsKQEAgLTI4MDYsNyArMjM4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgb3Bl
cmF0aW9uQ2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX25leHQpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmsodGhp
cyk7CkBAIC0yOTA2LDcgKzI0ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRv
cl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBl
Pgotdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xv
d1BhdGhGdW5jdGlvblR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0
aW9uVHlwZSBnZW5lcmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBA
IC0yOTM2LDcgKzI1MTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nh
c2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNTE4LDMxIEBAIHZvaWQgSklU
OjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2lu
X2J5X3ZhbCk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9pbl9ieV92YWwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBl
bWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJv
cGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQog
ewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKQEAgLTI5NzcsMTUgKzI1NTEsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUUKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5
X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
ZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3By
b3BlcnR5KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5
MDFkZjU2YWZiMTNiNDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3
MDM2NmIzNTBlMjM5N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwCkBAIC0xNzEsOCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVRUaHVua3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwog
fQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYg
dm0sIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9
IGJpdHdpc2VfY2FzdDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEs
OCArMTc5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5
U2VhcmNoZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktl
eSYga2V5KSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQog
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNv
bnN0IEhvc3RGdW5jdGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNo
OjplcXVhbChhLCBiKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXgg
ODQ3Y2UyNTAyZTQwMThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZl
MGRiNTdmY2Q4YTBjYTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRo
dW5rcy5oCkBAIC02Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SklUVGh1bmtQdHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRo
dW5rR2VuZXJhdG9yKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZN
JiwgU2xvd1BhdGhGdW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhv
c3RGdW5jdGlvblN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29u
c3QgRE9NSklUOjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlm
OTdjYjA3NDdhMGE0ZTEzZDcyOGIuLjcyN2RmYjc3OWJjYjQ2YTk2N2M4NTg0MjIxNTBhZjBlODc5
ODBiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAg
LTM2LDE3ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CiAgICAgVk0mIHZt
ID0gbV9qaXQtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2ppdC0+bV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2ppdC0+bV9ieXRlY29kZUluZGV4KTsKIAotICAgIFVOVVNFRF9WQVJJQUJM
RShtX3BjKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxOwotICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRSZWcpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjM7CisgICAgc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBieXRlY29kZU9mZnNldEdQ
UikpOworICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIG1faml0LT5lbWl0TmFrZWROZWFyQ2FsbCh2bS5qaXRT
dHVicy0+Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIodm0sIG1fc2xvd1BhdGhGdW5jdGlvbikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIH0KIApAQCAtNTQsNDYgKzUyLDQ2IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpnZW5lcmF0ZVRo
dW5rKFZNJiB2bSwgU2xvCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBKSVQ6OmFyZ3VtZW50R1BSMTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKLQotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKIAotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQ
b2ludGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklU
Ojphcmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworI2lmIENQVShYODZf
NjQpICYmIE9TKFdJTkRPV1MpCisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1l
bnRHUFIwKTsKKyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOworI2Vsc2UKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRl
cigpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworI2VuZGlmCiAKICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25D
aGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKKyNpZiBDUFUo
WDg2XzY0KSAmJiBPUyhXSU5ET1dTKQorICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOyAvLyB2UEMKKyAgICBqaXQucG9wKEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7IC8vIGNh
bGxGcmFtZSByZWdpc3RlcgogI2VuZGlmCi0gICAgaml0LnJldCgpOwogCi0gICAgYXV0byBoYW5k
bGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0
aW9uR2VuZXJhdG9yKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8v
IFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCmluZGV4IDg5OWEyOTAw
ZmVkZTM3ZGQwZWE1ZTZmMmI5MDY3ZDY1YjAyZTczNjAuLjM0MGM5ZWVjYTZlODI2NTJhOTM2YWUw
OTY0YjA0NDNmNjM0MTJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENh
bGwuaApAQCAtMzUsNTAgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKSVRTbG93
UGF0aENhbGwgewogcHVibGljOgotICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24pCisgICAg
SklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rp
b24pCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fc2xvd1BhdGhGdW5jdGlvbihz
bG93UGF0aEZ1bmN0aW9uKQotICAgICAgICAsIG1fcGMocGMpCiAgICAgewogICAgICAgICBhc3Nl
cnRJc0NGdW5jdGlvblB0cihzbG93UGF0aEZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKICAgICB2b2lkIGNhbGwoKTsKICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVRodW5rKFZNJiwgU2xvd1BhdGhG
dW5jdGlvbik7CiAKLSNlbHNlIC8vIG5vdCBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQotICAg
IEpJVDo6Q2FsbCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIG1faml0LT51cGRhdGVUb3BDYWxsRnJh
bWUoKTsKLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+YWRk
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1faml0
LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIxKTsKLSAgICAg
ICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BS
Mik7Ci0jZWxzZQotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBK
SVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0
cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjEpOwotI2VuZGlmCi0gICAgICAgIEpJVDo6Q2FsbCBj
YWxsID0gbV9qaXQtPmFwcGVuZENhbGwobV9zbG93UGF0aEZ1bmN0aW9uKTsKLQotI2lmIENQVShY
ODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMCk7IC8v
IHZQQwotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDEpOyAvLyBjYWxsRnJhbWUgcmVnaXN0
ZXIKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QwID09IEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QxID09IEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMik7Ci0jZW5kaWYKLQotICAgICAgICBtX2ppdC0+ZXhjZXB0aW9uQ2hlY2so
KTsKLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiBwcml2YXRlOgogICAgIEpJVCogbV9qaXQ7CiAgICAgU2xvd1BhdGhGdW5j
dGlvbiBtX3Nsb3dQYXRoRnVuY3Rpb247Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1fcGM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCmluZGV4IGM2NTcxYTZjYjU3ZTgyNGRjYzllMWNhMjM1ZTRkYmRlYTMw
OTMzYjAuLjA3NjA3NjEwM2UwMzRhZGI3YWYxMmY1OGVmN2ZmNDA4ODhkYWMwNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTQ5LDkgKzQ5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKLQogICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQu
Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
dm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC01OSw4ICs1Nyw2IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKQEAgLTc3LDggKzczLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmEK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJo
YW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0KIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZl
c0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKQEAgLTEwMSw4ICs5NSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9wVGh1bmtT
dGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CkBA
IC0xMTMsOCArMTA1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICAvLyBFeGNlcHRpb24gZnV6
emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZl
IHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGppdC5w
dXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlmIENQVShBUk02
NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNl
CisjICAgICAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCiAjZW5kaWYKICAg
ICB9CiAKQEAgLTEyMyw4ICsxMTksMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKICNpZiBDUFUoWDg2XzY0KQogICAgICAg
ICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKKyNlbGlmIENQ
VShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIGppdC5wb3BQYWlyKENDYWxsSGVs
cGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsK
KyNlbGlmIENQVShNSVBTKQorICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Cisj
ZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgogI2VuZGlm
CiAgICAgfQogICAgIGppdC5yZXQoKTsKQEAgLTE0Myw4ICsxNDMsNiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJD
aGVja0V4Y2VwdGlvbiIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFRhZ1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZh
bGlkYXRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBlIHRh
ZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4
IGE5ZmVlZWE5MjRhZTAwNzhkODQ1MWUxNzJjNGM0OTQ1ZGYxZDVlZTEuLjEwNTQ5MTA0ZWY2MjBl
NzgyOWYwYjRhYmNhYmFlZGM0OTczNWEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuaApAQCAtMzgsMTMgKzM4LDggQEAgZW51bSBjbGFzcyBDYWxsTW9k
ZTsKIHRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xhc3Mg
Vk07CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tH
ZW5lcmF0b3IoVk0mKTsKLQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVF
eGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRs
ZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSYpOwpA
QCAtODIsOSArNzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRy
dW5jVGh1bmtHZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYpOwogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDY2NGIw
ZTI5ZjZiYTNjZTQ4MjZlNTEwOWQ3M2Y4NmNjOWJjNmFkZmQuLjVlYzc0MDliYzlhZTg2YzM0Mjhl
NjJlYzIwYTQ1MGFmMmU3OGI0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODM5LDE0
ICs4MzksNiBAQAogI2RlZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNl
bmRpZgogCi0jaWYgQ1BVKEFSTTY0KSB8fCAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKQot
LyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIHRodW5rcyBjYW4gdXNlIHVwIHRvIDYgYXJn
dW1lbnQgcmVnaXN0ZXJzLCBhbmQKLSAgIG1ha2UgdXNlIG9mIEFSTTY0IGxpa2UgZmVhdHVyZXMu
IEZvciBub3csIHdlJ2xsIG9ubHkgc3VwcG9ydCB0aGVtIG9uIHBsYXRmb3JtcwotICAgdGhhdCBo
YXZlIDYgb3IgbW9yZSBhcmd1bWVudCByZWdpc3RlcnMgdG8gdXNlLgotKi8KLSNkZWZpbmUgRU5B
QkxFX0VYVFJBX0NUSV9USFVOS1MgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfQklO
RElOR19JTlRFR1JJVFkpICYmICFPUyhXSU5ET1dTKQogI2RlZmluZSBFTkFCTEVfQklORElOR19J
TlRFR1JJVFkgMQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448312</attachid>
            <date>2022-01-04 11:28:49 -0800</date>
            <delta_ts>2022-01-05 07:09:31 -0800</delta_ts>
            <desc>Windows fix 3</desc>
            <filename>bug-233822-20220104192847.patch</filename>
            <type>text/plain</type>
            <size>190901</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4
OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1
YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRl
c3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihs
ZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIo
VHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0
KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2
OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uMTM2NmRkNTEyYmIxNjIzNDM4YzdmOWZlYWQ5ZWMy
ZjYyYzQ3MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERv
dWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OworICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJz
OjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9CiAKICAgICAvLyBJbiB0aGUg
VGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiBy
ZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXpl
KCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFs
aXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxV
RSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0
NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ly
KGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1
MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhk
NjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmln
aW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2Ugewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
anVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAm
bV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1w
VG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAg
ICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0
LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAg
ICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNl
bmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZlY2E0NTA4ZDcz
YjhkMzhjYWNmZjE1Yy4uNTI4ZDQ3MzhkYTY3YWUwMWY2YzQyMDk4YmRkNTMxYTM0YmNlMmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5p
dGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAg
ICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRT
dHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3IgaXRl
cmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdpc3Rl
ciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjgsMjQgKzUyOCwyNCBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVz
dWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJ
bnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgpAQCAtNTU0LDcg
KzU1NCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIGJhc2VHUFIgPSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVn
cy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKQEAgLTYwNyw3
ICs2MDcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgICAgICByZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOwogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2Nr
KiwgVW5saQogICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwogICAgICAgICBy
ZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwpA
QCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAgIHJlZ3Mu
dGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQ
UiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENv
ZGVCbG9jayosIFVubGkKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwogICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAgICAgICBpZiAoYWNjZXNzVHlwZSA9
PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgICAg
IHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5i
cmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBl
YjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2
ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBj
b21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYg
KCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0K
LSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0o
KS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQot
ICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQs
IHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAg
ICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAg
ICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGlu
IENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsg
PSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAg
YXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRo
dW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJ
dGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6
OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVy
cygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkg
dHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhH
ZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAg
IC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDQ5OTdiZDRiYjkwZTU5Mzcy
MjkwYzBlYWIyODY4YjZjMTgxMjlhN2EuLmE3MjhlZmQ4NzEyZWM1ZTA5YzZkNzU2MWY0Mjk1Zjg4
NzNkZDIyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgK
QEAgLTMxMyw3ICszMTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7
CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMo
KTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1
ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5
Yjk4ZDU0NzYzMTgzODZhZmIyZmVjZjhlZTFkMjYwMmFhZmFkZWU3Li40OGExODBiNzQwYWFjZTNm
YTAzMTkzNzFlNWUwYmM0ZmM5YzgyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRo
ZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5s
YWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVscGVyczo6
SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0
LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0
ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1d
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1
ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUz
YmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2
bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0
eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0
LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0
byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAoQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2Vw
dGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0
cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNl
cHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5k
aWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9u
UHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0
ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0
MDk4Mjg5MzVlLi5kOGNkZmZhNTE2NDI1ODBmOGQ1ZGQ2N2Y4MTg5N2UyNTZjMmQwYjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNr
ZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MCBAQCB2b2lkIENDYWxsSGVs
cGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRy
VGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2Ny
aXB0aW9uKTsKIH0KIAordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKCkK
K3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQ
VShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7CisjZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3Qg
aW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFj
ZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgc3ViUHRyKFRydXN0
ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKK30KKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkKK3sK
KyAgICAvLyBSZXNldCBzdGFjaworICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgLy8gUmVzdG9yZSBm
cmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcG9w
KFg4NlJlZ2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIp
CisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlm
IENQVShNSVBTKQorICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZv
cm0iCisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRj
Yzg5OWU3NTYzMzlhODExNjM0ZTIzYzIxN2JkYTFjY2Y2NC4uMmVlMDhhYzk2YWE4MjczZTk4OTc3
M2FiNmExYzZkMGJjN2NkMjU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCkBAIC04NTMsNiArODUzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1p
dEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVy
ZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKKyAg
ICB2b2lkIGVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBBcmdOdW0+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90
PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+
IHNpemVPZkFyZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDMwZjNmMzZmNmVl
ZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1OTk3Zi4uM2UwNDdhM2U3MGJmZDcyMWVhNzVmYTgzYzY1
MjUwY2IxNzlhOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkg
XAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+
PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsgXAotICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBc
CisgICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF8jI25hbWUpOyBcCiAgICAgICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAg
IH0gXAogICAgICAgICBORVhUX09QQ09ERV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwx
NSArMTkwLDE1IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0
U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7
IFwKKyAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAog
ICAgICAgICBicmVhazsgXAogICAgIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRT
bG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1Bh
dGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1
Yik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC02NTgsOSArNjU4LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Ao
c3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJl
c29sdmVfc2NvcGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hl
Y2tfdGR6KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkp
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC04NTcsOSArODU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAg
ICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVsOyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZp
eHVwLgogCiAgICAgQVNTRVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2
YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3Nl
bWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAg
ICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTExLDEyICs5MDYs
MTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJl
bCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJv
bGxiYWNrLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
bmVhckp1bXBzKSB7CiAgICAgICAgIGlmIChyZWNvcmQudGFyZ2V0KQpAQCAtMTAzNywzNSArMTAz
MCw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWlu
VGhyZWFkKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFt
X2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0g
ICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFw
cGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQot
ICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlv
bkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUg
Vk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9m
YXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
KTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQ
cmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKQogewogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdl
IGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWlu
ZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9ucyBmb3Igb3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKaW5kZXggZmYzODg3NDMzYzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5
OC4uNzdhZWM0Y2M1YTE1MGIwNjJkNTFiOTk0YTU2Zjk5Nzk2OTQyMDgwOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4
Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENo
ZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQo
SnVtcCk7CiAgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcg
KzU1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0
eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUm
LCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lk
IGVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dD
YXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlv
bik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNj
ZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2
b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVj
dGlvbiopOwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNl
bGluZUdlbmVyYXRvcihWTSYpOwogCiAgICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgLy8gVGh1bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsKLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHRodW5rSXNVc2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBi
ZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1
bmsuCi0gICAgICAgICAgICAvLyBSZXNvbHZlZENsb3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNh
dXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAg
ICAgICAgICAgcmV0dXJuICEocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBl
ID09IFJlc29sdmVkQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZN
Jik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihW
TSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUg
PFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVt
cGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxz
ZXlHZW5lcmF0b3IoVk0mKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDY5OWVhZmNiNzI5ZWNhNDE0MDc1ZWMx
MGNjYzkyNjIyMGJkNDU0NzUuLjQ0NDJhODg5YjU0MjhkNWE1ZGJkYjBlZjAwOTA1MjAxMTU0OTgx
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAt
NDUxLDE5ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQs
IGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9k
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
b3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Bvdyk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfcG93KTsKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5KCkpOwogICAg
ICAgICBBU1NFUlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9kaXYpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNs
b3dfcGF0aF9kaXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2NjNDc4ZmY0N2ZhZGE3MWVj
OWRjMThmYWQxZDM0NTU0NTY5YjUuLjk0OWM0ZWIxNTI4MzMxYjRkMjc2MGNiOTY1OGExOTU1MjAx
NjM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwog
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgc3R1YkluZm9HUFIpKTsKICAgICBzdGF0
aWNfYXNzZXJ0KHJldHVyblZhbHVlSlNSID09IGJhc2VKU1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBu
ZWVkIG1vdmUocmV0dXJuVmFsdWVKU1IsIGJhc2VKU1IpCkBAIC01MjAsMTQgKzUyMCwxNCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKICAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJl
Z2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRK
U1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRy
eUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwog
CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVt
cFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
aXRlckNhbGxSZXN1bHRKU1IgPSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBjNjdi
Y2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlLi5mOTNhMzY4ZmY2ZDhlMjg5NGJm
NjExNWVjOTMzMzUzOTczOTI5NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZv
aWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJ
VCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAK
ICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJh
dGVHZXRCeUlkSW5saW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hH
UFIsIHJlc3VsdEpTUik7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5z
aWcKIAogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNS
OwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIp
OwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE3LDggKzIxNyw4IEBAIHZvaWQgSklU
UHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0
LCB1bnNpZ25lZCBzdHViCiAKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2gyR1BSOwogCiAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGF1dG8gZG9JbmxpbmVBY2Nl
c3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJ
bmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA2MjkyOWMwYzI0ODRmYjlj
YTBlYzY2MWJiN2MwYTdkZTY0OWZjOThjLi41MDY4OWI3MjE5ZmNmYjY5OWU1Zjg1MjQ5NGZiNzZi
NWQwZTQyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCkBAIC00OSw0NiArNDksMTIyIEBAIGVudW0gY2xhc3MgQWNjZXNz
VHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKIG5hbWVzcGFj
ZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24g
Ym90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9
OworY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBGYXN0
UGF0aCB7Citjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIp
OworfQorCisvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86
OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwg
ZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNf
YXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJlZCBmb3Ig
Y2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OworLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBT
bG93IHBhdGhzCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKwor
Ly8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVs
cGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgInJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKK30KKworLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1l
c3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07Citjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5m
bzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpu
b092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiwgZWNtYU1vZGVHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Citz
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJyZXF1aXJl
ZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBuYW1lc3BhY2UgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVycyB7CisvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5k
IFNsb3cgcGF0aHMKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5k
aWYKKworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggewor
I2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwogY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CiBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwogI2VuZGlmCitzdGF0aWNfYXNz
ZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNs
b3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2Nv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Citjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
I2VuZGlmCitzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
LCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CitzdGF0aWNfYXNzZXJ0KEFzc2Vt
Ymx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cg
b3BlcmF0aW9uIik7Cit9CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTAxLDcgKzE3Nyw3
IEBAIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7
CiBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUik7CiBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSKTsKIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKK3N0YXRpY19hc3Nl
cnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSKTsKIAogc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZv
OjpyZWdUMzsKIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVn
VDQ7CkBAIC0xNTAsOCArMjI2LDEyIEBAIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwogfQogCiBuYW1lc3BhY2UgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocwogY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86
OnJldHVyblZhbHVlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CisKKy8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OwpAQCAtMTYxLDc1ICsyNDEsMTcwIEBAIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250
Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwogI2VuZGlmCi1z
dGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9u
dENsb2JiZXJKU1IpLCAicmVxdWlyZWQgZm9yIERhdGFJQyIpOworfQorCisvLyBTbG93IHBhdGgg
b25seSByZWdpc3RlcnMKK25hbWVzcGFjZSBTbG93UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Citjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK2NvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCitjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCitjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
KyNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNS
LCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQogfQogCiBu
YW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgeworLy8gUmVnaXN0ZXJz
IHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKK2NvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5mbzo6anNS
ZWdUMzIgfTsKKyNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKK25hbWVzcGFj
ZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDIgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owog
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKICNlbmRpZgor
c3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisK
Ky8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKK2NvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCitjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKK2NvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CisjZW5kaWYKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
YmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0
eUdQUiksICJyZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQo
QXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAicmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xv
dyBvcGVyYXRpb24iKTsKK30KIH0KIAogbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJz
IHsKIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUiB9OworY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OwogfQogCiBuYW1lc3Bh
Y2UgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKKy8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGgg
RmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKK2Nv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKK2NvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYK
KworLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCituYW1lc3BhY2UgRmFzdFBhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCiBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CiBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsg
YmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXpl
IG9uIEFSTV9USFVNQjIKICNlbmRpZgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5v
T3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAicmVx
dWlyZWQgZm9yIERhdGFJQyIpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zl
cmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNo
R1BSLCBzY3JhdGNoMkdQUiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cg
cGF0aCBvbmx5IHJlZ2lzdGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKK2NvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKK2NvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OworY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
Citjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRp
Zgorc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1
ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJyZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxw
ZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb3BlcnR5R1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsKKy8vIFJl
Z2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocwogI2lmIFVTRShKU1ZBTFVF
NjQpCiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CiBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwogY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CiBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwogY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDUgfTsKICNlbmRpZgorCisvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKK25hbWVzcGFjZSBGYXN0UGF0aCB7Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQ
UiksICJyZXF1aXJlZCBmb3IgRGF0YUlDIik7Cit9CisKKy8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lz
dGVycworbmFtZXNwYWNlIFNsb3dQYXRoIHsKK2NvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKKyAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb2YgcmVnaXN0ZXJzIG9uIEFS
TV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMKKyAgICBN
YWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNW
QUxVRTMyXzY0CisgICAgR1BSSW5mbzo6cmVnVDgKKyNlbmRpZgorfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKK2NvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9Oworc3RhdGljX2Fzc2VydChBc3NlbWJs
eUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2Zp
bGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBmb3IgY2Fs
bCB0byBDVEkgdGh1bmsiKTsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSKSwgInJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7Cit9CiB9CiAKIG5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Citj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworCituYW1l
c3BhY2UgRmFzdFBhdGggewogI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJh
bmRKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpy
ZWdUMiB9OwogY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
CiAjZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQoYnJhbmRKU1IgPT0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOworc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAicmVxdWlyZWQgZm9y
IERhdGFJQyIpOworfQorCituYW1lc3BhY2UgU2xvd1BhdGggeworY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiB7IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5r
Citjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBh
dGggdGh1bmsKK3N0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAoYmFzZUpT
UiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJyZXF1aXJlZCBm
b3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KIH0KIAogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlh
ZWZjYWU2ZmNlNDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uNDM5NjBmMDYxM2IzMTJhYTQ5
ZjAyODFlOTZkYTIzMDMyYzA2NDM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC00NTEsMjQgKzQ1MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikp
OwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1
bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmpl
Y3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwot
I2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEg
KzQ2NCwyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFs
dWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9
IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigp
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7
CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKICAgICBjb25z
dGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXko
dm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0g
aml0Lmp1bXAoKTsKLQotICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBp
c0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwg
cmVnVDApOworICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCArNjM0LDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BK
dHJ1ZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWUgPSBqc1JlZ1QxMDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFsdWUs
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCBqc1JlZ1QzMik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCkBAIC02NzksMzEgKzY0NywyNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IGpzUmVnVDMyOyAvLyBJbmNvbWluZwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSByZWdUNDsKICAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDM7CiAgICAgaml0Lmxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGF1dG8gaXNU
cnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIEpTVmFsdWVSZWdzKHZhbHVlKSwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQotICAgIGlzVHJ1dGh5Lmxp
bmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7Ci0KLSAgICBk
b25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2
bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOworICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlzVHJ1dGh5LmxpbmsoJmpp
dCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1
ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNUcnV0aHkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAKQEAgLTczNCw1NyArNjk2LDUzIEBAIHZvaWQgSklUOjplbWl0X29w
X2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjpl
bWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93LCBnbG9i
YWxPYmplY3RHUFIsIHZhbHVlSlNSKTsKLSAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkp
OwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQ
UjE7Ci0KICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJv
dyk7CisKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKHRocm93blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUikpOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7
CisKICAgICBlbWl0TmFrZWROZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxl
ckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFs
dWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgCi0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CiAK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRocm93
blZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJnR1BSMDsKKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlSlNSLCBi
eXRlY29kZU9mZnNldEdQUikpOworICAgIAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVH
SVNURVJTID4gMAotICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQ
UjApOwotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihhcmd1bWVudEdQUjApOworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSID0gZ2xvYmFsT2JqZWN0R1BSOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlG
cmFtZSwgc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BSKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOworICAgIC8vIENh
bGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BS
LCB0aHJvd25WYWx1ZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+
KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhy
b3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MSw3NyArMTIwOSw3NyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRv
ZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0
ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25n
aW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgot
ICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYg
KGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
anNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0g
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiks
IGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0
RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BS
ID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIg
PSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAg
ICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0lu
aXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1QxOworCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoY2FuQmVP
cHRpbWl6ZWQoKSksIGNhbkJlT3B0aW1pemVkR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihs
b2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworLy8gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisvLyAgICBpZiAoZmlyc3QgPCBj
b3VudCkKKy8vICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEw
KTsKKy8vICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCisvLyAgICAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNS
ZWdUMTApOworLy8KKy8vICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7CisvLyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKKy8vCisvLyAg
ICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3Bf
ZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQ
YWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKICAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQg
Ynl0ZWNvZGVPZmZzZXQgMC4KICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5l
ZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVk
R1BSID0gYXJndW1lbnRHUFI0OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRH
UFIgPSByZWdUMDsgLy8gSW5jb21pbmcKIAotICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJs
b2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0g
ICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCku
b2Zmc2V0KCk7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zmc2V0ICogc2l6ZW9m
KFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICBqaXQuc3ViNjQoaXRlcmF0b3JHUFIsIGxv
Y2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKLQotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB1bmRlZmluZWRHUFIpOwotICAgIGF1dG8gaW5p
dExvb3AgPSBqaXQubGFiZWwoKTsKLSAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExl
c3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CiAgICAgewotICAgICAgICBqaXQu
c3RvcmU2NCh1bmRlZmluZWRHUFIsIEJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgaXRlcmF0b3JHUFIsIFRpbWVzT25lKSk7Ci0gICAgICAgIGppdC5zdWI2NChUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICAgICAgaml0Lmp1bXAoaW5p
dExvb3ApOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IHJlZ1Qx
OyAvLyBJbmNvbWluZworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gcmVn
VDQ7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gcmVnVDU7CisgICAgICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB1bmRlZmluZWRKU1IgPSBqc1JlZ1QzMjsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobG9jYWxzVG9Jbml0R1BSLCBjYW5CZU9wdGltaXplZEdQUiwg
aXRlcmF0b3JHUFIsIHVuZGVmaW5lZEpTUikpOworCisgICAgICAgIHNpemVfdCBzdGFydExvY2Fs
ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0
ZXJzKCk7CisgICAgICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KHN0YXJ0TG9jYWwpLm9mZnNldCgpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gMCk7
CisgICAgICAgIGppdC5zdWJQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJ
bW0zMigtc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAg
ICAgICBqaXQuc3ViUHRyKGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Cisg
ICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHVuZGVmaW5lZEpTUik7
CisKKyAgICAgICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOworICAgICAgICBKdW1wIGlu
aXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQ
Uik7CisgICAgICAgIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHVuZGVmaW5lZEpTUiwg
QWRkcmVzcyhpdGVyYXRvckdQUikpOworICAgICAgICAgICAgaml0LnN1YlB0cihUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgfQorICAgICAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogICAg
IH0KLSAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllciht
X2NvZGVCbG9jaykuCisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FuQmVPcHRpbWl6ZWRH
UFIsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBhcmd1bWVudEdQUjEpOwogICAgIEp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMik7CiAKLSAgICBqaXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBzYXZlLgorICAgIGppdC5wdXNoVG9TYXZl
KGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gc2F2ZSAoY2FsbCBhcmd1bWVudHMgYmVsb3cgYXJlIGFs
bCBpbiByZWdpc3RlcnMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVu
dEdQUjEpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQucG9wVG9SZXN0b3JlKGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gcmVzdG9yZQogCi0gICAgaml0
Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8g
cmVzdG9yZS4KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVk
ZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTMzNywxMCArMTI5NSwy
NCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAKICAgICAgICAgaml0LmNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0udG9wRW50cnlGcmFtZSk7CiAKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAi
QXNzdW1lZCBieSBnZW5lcmF0ZWQgY2FsbCBzaXRlIGJlbG93Iik7CisgICAgICAgIGppdC5zdWJQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOworICAgICAgICBqaXQubW92ZShU
cnVzdGVkSW1tUHRyKCZ2bSksIEpJVDo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgaml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDApLCBKSVQ6OmFyZ3VtZW50R1BSMik7CisjZWxzZQogICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJ
bW0zMigwKSk7CisjZW5kaWYKKwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgICAgICBvcGVyYXRpb25PcHRpbWl6ZUNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaml0LnBvcChH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIHRhcmdldFBDCisgICAgICAgIGppdC5wb3AoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsgLy8gZGF0YUJ1ZmZlcgorI2VuZGlmCisKICAgICAgICAg
c2tpcE9wdGltaXplLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQ
UikpOwogICAgICAgICBqaXQuZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOwogCkBAIC0xMzQ4LDExICsxMzIwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0
LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTEzNjMsNyArMTMzMSw2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZN
JiB2bSkKICNlbmRpZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTU3NCw1NyArMTU0
MSw0MCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9i
amVjdChhcmd1bWVudEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJh
cHMsIGFyZ3VtZW50R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IG5vbkFyZ0dQUjA7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZz
ZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNf
aGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lm
IENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BV
KEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0g
YXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFIwOwotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgY29kZUJsb2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9j
a0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICAKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gbm9uQXJn
R1BSMDsgLy8gSW5jb21pbmcKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisg
ICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
KyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xv
YmFsT2JqZWN0R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIEND
YWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwot
ICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hh
YmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4
NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBl
eGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmso
b3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRy
YXBzKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJl
c2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7
CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0
X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5k
ZXggNDQxZTc1Zjc1NmIwZmM4NDUxMzVhNjQwNjIxMGZjNmZlOGM0MDc2MS4uOTU0MTMxODBjYzc3
YWJmNTU1ZDk2OTkyOTRjNWRkMWQwNjc3MGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CiAgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBw
cm9wZXJ0eUpTUik7CkBAIC0xMDEsNTEgKzEwMSwyMyBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRC
eVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VF
bgogICAgIGlmICghaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGFyZzRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0g
ICAgc3RhdGljX2Fzc2VydCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVy
bGFwcyhhcmc0SlNSKSk7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUiwgYXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50
b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVBy
b2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
cHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEg
YXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJn
dW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
cHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKSA9PSByZWdUMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5
UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nh
c2UoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lm
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYg
dm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
JiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2Fu
IG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8g
aXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBh
dmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1p
emUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSNDsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0
aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAg
Ly8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
cHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNs
b3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAg
IHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtMjA0LDcgKzE3NSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwogICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHByb3BlcnR5SlNSKTsKQEAgLTIzMCw1NSArMjAxLDMwIEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBBU1NFUlQoaGFzQW55
U2xvd0Nhc2VzKGl0ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklU
R2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsK
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldFByaXZhdGVOYW1lPigpOwotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlv
bik7CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRHZXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0
ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFy
Z3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJv
cGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzMiwzNCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIzOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0
dWJJbmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BS
MSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3Ig
YnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMyw3ICsy
NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJh
bmRSZWdpc3RlcnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdp
c3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7
CkBAIC0zNTQsNDYgKzMwMCwyMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVO
VVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2
YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0
ZUJyYW5kPigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
blNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+
KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwot
ICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAg
ICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNl
bHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRB
Y2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJh
bmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2
YXRlQnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJn
MSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRK
U1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVu
dEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxG
dW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+
OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2
YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA2LDcgKzMy
OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJy
YW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1Ip
OwpAQCAtNDI4LDQ5ICszNTAsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQ
cml2YXRlQnJhbmQ+KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1tt
X3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJp
dmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3Rh
dGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVy
YXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9u
VHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1l
bnRUeXBlcz46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDg2LDE2
ICszODMsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CiAgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCB2YWx1ZUpTUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIp
OwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwotICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2Fk
R1BSKCksIHByb2ZpbGVHUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShi
eXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BS
KTsKKworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpT
Ui5wYXlsb2FkR1BSKCksIC8qIHNjcmF0Y2hHUFI6ICovIHN0dWJJbmZvR1BSKTsKIAogICAgIEpJ
VFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNTI5LDc2ICs0MjcsMjggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVu
dEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBib29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9w
X3B1dF9ieV92YWxfZGlyZWN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwotICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNN
QU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBb
Jl0oYXV0byBieXRlY29kZSkgewotICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAg
ICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgICAgIHZhbHVlID0gYnl0
ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwot
ICAgIH07Ci0KLSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWQoY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpKTsKLQotICAgIEpJVFB1dEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDU+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpLCBP
cFB1dEJ5VmFsRGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgZWxzZQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEo
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwg
dmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZh
bHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0jZWxzZQogICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlW
YWxzW21fcHV0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Ly8gVGhleSBhcmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVk
LgotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVn
IHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0g
cmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92
YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVy
YXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNl
bGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSBy
aWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KQEAgLTYwNiwzOSArNDU2LDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAg
aWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRvaW4gPSBkZWNsdHlw
ZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKLSAgICB7Ci0g
ICAgICAgIFJlZ2lzdGVyU2V0IHVzZWQoYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBw
cm9maWxlR1BSKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q0KSk7Ci0gICAg
ICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNSkpOwotICAgIH0KKyAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnBy
b2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1By
b2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGds
b2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Q
dXRCeVZhbFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAg
ICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRf
eHh4X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NTAsNyArNDk3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1I7CiAgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC02NzksNTYgKzUyNiwyOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0
ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLQotICAgIEpJVFB1
dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0K
LSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKLQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVBy
aXZhdGVGaWVsZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9u
PigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
KTsKLSNlbHNlCiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwogCi0gICAg
Ly8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVH
UFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0
ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxp
bmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmln
aHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCkBAIC03MzYsMzQgKzU1NSwzOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlm
ICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Qz
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1
c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVn
aXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpKTsKKyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBu
ZWNlc3NhcnkgZm9yIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90
IGNsb2JiZXIgZ2xvYmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2Ug
aGFybWxlc3MuCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQ
Uik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+
KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5
SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UK
LSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0Miw5ICs2NjYsOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpy
ZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTg3NSw2MiArNjk5LDM3
IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBC
YXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxv
YWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFy
Z3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1Iu
cGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
Ci0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3MzcsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5
SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7
CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBv
cGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVu
dEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJ
ZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5W
YWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVD
YWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTk3NSw5ICs3NzcsOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAK
ICAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5
VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OkZhc3RQYXRoOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdp
c3RlcnM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpT
UiwgYmFzZSk7CkBAIC0xMDEwLDYzICs4MTIsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKwogICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBj
YWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIg
PT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNp
bmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2Vy
dChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVz
dWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkK
IHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkg
d29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFr
ZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFi
bGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODUwLDM2IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXpl
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNl
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6
OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAv
LyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIs
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2Rl
R1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZWNtYU1v
ZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fz
c2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50
R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIp
OworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIGppdC5ib3hC
b29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTExMTEsNyArODkwLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNS
OwogICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTEzOCw0NyArOTE3LDI2IEBA
IHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwot
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBi
YXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5
SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShKSVQ6OlRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIz
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOworCiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwg
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKQEAgLTExOTMsNyArOTUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiAgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTIxOSw0NyArOTc3LDI2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBi
YXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dl
dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsK
LSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkp
OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKKwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CkBAIC0xMjc0LDEyICsxMDExLDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAg
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwogICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpT
UiwgYmFzZVZSZWcpOwotICAgIAorCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJv
bU1ldGFkYXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRh
ZGF0YSgpICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIp
OwogICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
KSksIHNjcmF0Y2hHUFIpOwpAQCAtMTMxMiw1MSArMTA0OSw2NyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
OwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJ
bmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9u
PFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4o
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRo
ZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhl
IExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9u
cyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBi
ZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
OworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OlNsb3dQYXRo
Ojpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAg
Ly8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9w
ZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFp
bCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sg
PSBqaXQuanVtcCgpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hC
dWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKQEAgLTEzNjgsNyAr
MTEyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKICAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0
aGlzVlJlZywgdGhpc0pTUik7CkBAIC0xMzk1LDk2ICsxMTQ4LDMzIEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYgdm0pCi17Ci0gICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQot
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICAvLyBERkcv
RlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3Rz
LCB3aGljaCBtYXkgbm90IG1hdGNoCi0gICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAg
ICBDQ2FsbEhlbHBlcnMgaml0OwotCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3Rh
dGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQotICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKLQotICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOwotfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9
IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwotICAgIAotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdGhpc0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCi0gICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQogICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSkpOworICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlk
c1dpdGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNs
b3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0p
CiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5
IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1h
a2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxh
YmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE0OTIsMzUgKzExODIsMzUgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OlNsb3dQYXRo
OjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7
CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBv
cGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IHJlZ1QxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNo
IHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVw
YXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM2LDggKzEyMjYsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpT
UjsKICAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHZhbHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjUxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgcmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBzbyB3ZSBuZWVkIHRv
IGNvbnNlcnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5
SWRzLmFwcGVuZChnZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1
cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1F
OiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0
byByZWR1Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEyNjAsMzEgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0gICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2
YWx1ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJh
c2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNl
SlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwot
I2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1tt
X3B1dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbih0aGlzKTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5
IGluIHVzZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0
YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAg
c3RhdGljX2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTI5MiwzNSBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVQdXRC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOwor
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3Bl
cmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVl
R1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
IGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNo
IHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3Mo
YXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNjkxLDQ5ICsxMzU2LDI4IEBAIHZvaWQgSklUOjplbWl0X29w
X2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEluQnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0K
LSAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5
dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5C
eUlkc1ttX2luQnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVu
dEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgLy8gc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQg
d2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAg
ICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsg
anVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgc3Rh
dGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZh
bHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwo
KSk7CkBAIC0xNzc3LDUzICsxNDIxLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5CeVZhbD4oKTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBv
aW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQogICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdl
biA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwogICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFs
OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgLy8g
c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3
aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVl
ZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0
aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
CiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwpAQCAtMTg1OCw0OSArMTQ3NiwyNiBAQCB2b2lkIEpJVDo6ZW1pdEhhc1By
aXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxS
ZWdpcwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12
b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFs
UmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgSklUOjplbWl0SGFzUHJp
dmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlKTsKLSAg
ICBVTlVTRURfUEFSQU0ocHJvcGVydHkpOwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9
PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVCcmFuZCk7CiAKLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxz
W21faW5CeVZhbEluZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpT
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlK
U1IpOwotI2Vsc2UKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEluQnlW
YWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gQmFz
ZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3Rh
dGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJl
c3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwpAQCAtMTkxMiwxMiArMTUwNywxMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFz
ZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhi
eXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5h
bWUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTkyNiwxMiArMTUxOSwxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29k
ZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZh
dGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFz
UHJpdmF0ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZUJyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMjU5MCwxMyArMjE4MSw5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9k
dWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQgQ29kZUJsb2NrIHNhdyBhIE1vZHVs
ZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJlIGd1YXJhbnRlZWQKICAgICAgICAg
Ly8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9t
b2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9u
bHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwog
ICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBsb2Fk
R2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwotI2Vsc2UK
ICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwpAQCAtMjYwNiwxMSAr
MjE5Myw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8g
VGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0
aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjIwNCwzMiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9f
c2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2
UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0
ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4
cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNj
cmF0Y2ggcmVnaXN0ZXIKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAg
Ly8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVC
bG9ja0dQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlv
bnNSYXdQb2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29k
ZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQp
Ci0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
aml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYK
LSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihw
b3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVy
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0
aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1
dF90b19zY29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2Fy
Z3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjc0
Myw3ICsyMzE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3Io
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25lQ2FzZXMuYXBw
ZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpAQCAtMjgwNiw3ICsy
MzgwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNlcy5saW5rKHRoaXMp
OwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5MDYsNyArMjQ4MCw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRl
Y29kZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5l
cmFsQ2FzZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25z
dCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQog
ewogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjUxMCw3IEBAIHZv
aWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBn
ZW5lcmFsQ2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5l
cmFsQ2FzZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlz
KTsKQEAgLTI5NDQsMzEgKzI1MTgsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1w
bChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9y
SW5CeVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVy
YXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJv
cGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVu
dW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9w
cm9wZXJ0eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2Vu
dW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVy
dHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJv
cGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4
dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3Nywx
NSArMjU1MSwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJv
cGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9w
cm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2Vk
OTU5N2I4YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1
YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRU
aHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBz
bG93UGF0aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2Vu
ZXJhdG9yPihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlv
blN0dWIoVk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtO
YXRpdmVFeGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBi
KSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlh
Yzg2M2JmNTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0
MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcg
QEAgcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3Rp
SW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsK
LSNlbmRpZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHVi
KFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVj
dG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSos
IGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1Nsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRo
Q2FsbC5jcHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4u
OTQ4NzIwOTIxODFlZmNmZDE2OTZmYjBjN2ZlZjRmMGJkMzUwYTVmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsMTcgKzM2LDE1IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklU
U2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKICAgICBWTSYgdm0gPSBtX2ppdC0+dm0oKTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5
dGVjb2RlSW5kZXgpOwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAg
bV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldFJlZyk7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMzsKKyAgICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9P
dmVybGFwKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisgICAgbV9qaXQtPm1vdmUo
SklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAg
ICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJzLT5jdGlTbG93UGF0aEZ1bmN0
aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogfQogCkBAIC01NCw0NiArNTIsNDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmsoVk0mIHZtLCBTbG8KIHsKICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBKSVQ6OmFyZ3VtZW50R1BSMzsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0
LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRSZWcsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCi0gICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
Q29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgc3RhdGljX2Fzc2VydChKSVQ6OmFyZ3VtZW50R1BSMSA9PSBieXRl
Y29kZU9mZnNldFJlZyk7Ci0gICAgaml0LmFkZFB0cihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CisjaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKKyAg
ICAvLyBNYWtlIHNwYWNlIGZvciBhIFNsb3dQYXRoUmV0dXJuVHlwZSBvbiB0aGUgc3RhY2ssIGFu
ZCBwYXNzIGl0J3MgYWRkcmVzcyBhcyBmaXJzdCBhcmd1bWVudAorICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFNsb3dQYXRoUmV0dXJuVHlwZSkgPT0gMTYsICJBc3N1bWVkIGJ5IGdlbmVyYXRlZCBj
YWxsIHNpdGUgYmVsb3ciKTsKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGpp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVu
dEdQUjApOworICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMik7CisjZWxzZQogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisjZW5kaWYKIAogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNo
ZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVi
cCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2lmIENQVShY
ODZfNjQpICYmIE9TKFdJTkRPV1MpCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOyAvLyBjYWxs
RnJhbWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsKIAotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdl
dENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRv
cik7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwg
dG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlv
bkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAg
IHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihzbG93
UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRleCA4OTlhMjkwMGZlZGUzN2RkMGVh
NWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgyNjUyYTkzNmFlMDk2NGIwNDQzZjYz
NDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKQEAgLTM1
LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xvd1BhdGhDYWxsIHsK
IHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAgIEpJVFNsb3dQYXRo
Q2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogICAgICAg
ICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRoRnVuY3Rpb24oc2xvd1BhdGhGdW5j
dGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNDRnVuY3Rp
b25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYsIFNsb3dQYXRoRnVuY3Rpb24pOwog
Ci0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLSAgICBKSVQ6OkNhbGwg
Y2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1lKCk7Ci0jaWYg
Q1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0LT5t
b3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjIpOwotI2Vsc2UK
LSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVu
dEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJ
VDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IG1faml0
LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0KLSNpZiBDUFUoWDg2XzY0KSAmJiBP
UyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDApOyAvLyB2UEMKLSAgICAg
ICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZyYW1lIHJlZ2lzdGVyCi0gICAgICAg
IHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAg
IHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNsb3dQYXRoRnVuY3Rpb24gbV9zbG93
UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX3BjOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5ZTFjYTIzNWU0ZGJkZWEzMDkzM2IwLi4wNzYw
NzYxMDNlMDM0YWRiN2FmMTJmNThlZjdmZjQwODg4ZGFjMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00OSw5ICs0OSw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0p
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCArNTcsNiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0p
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
aGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBq
aXQ7CkBAIC03Nyw4ICs3Myw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhCiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0
aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAKLSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CkBAIC0x
MDEsOCArOTUsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZQogICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2
ZXNBbmRIYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtMTEzLDggKzEw
NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICAgICAgLy8gRXhjZXB0aW9uIGZ1enppbmcgY2FuIGNh
bGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgcmV0dXJu
IGFkZHJlc3MgaGVyZS4KICNpZiBDUFUoWDg2XzY0KQogICAgICAgICBqaXQucHVzaChYODZSZWdp
c3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShB
Uk1fVEhVTUIyKQogICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50
ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMp
CisgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgICAgICBl
cnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgogI2VuZGlmCiAgICAgfQogCkBAIC0x
MjMsOCArMTE5LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1
c2VFeGNlcHRpb25GdXp6KCkpKSB7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaml0LnBvcChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCisjZWxpZiBDUFUoQVJNNjQpIHx8
IENQVShBUk1fVEhVTUIyKQogICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUo
TUlQUykKKyAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciwgQ0NhbGxIZWxwZXJzOjpyZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAg
ICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKICNlbmRpZgogICAgIH0KICAg
ICBqaXQucmV0KCk7CkBAIC0xNDMsOCArMTQzLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRp
b24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZvaWQgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFnVHlwZSB0YWcpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCBhOWZlZWVhOTI0
YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUxLi4xMDU0OTEwNGVmNjIwZTc4MjlmMGI0YWJj
YWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVudW0gY2xhc3MgQ2FsbE1vZGU7CiB0ZW1wbGF0
ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKIGNsYXNzIFZNOwogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZN
Jik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0mKTsKQEAgLTgyLDkgKzc3
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0cnVuY1RodW5rR2Vu
ZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91
bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCA2NjRiMGUyOWY2YmEzY2U0
ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3NDA5YmM5YWU4NmMzNDI4ZTYyZWMyMGE0NTBh
ZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTgzOSwxNCArODM5LDYgQEAK
ICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05fVkFMSURBVElPTiAxCiAjZW5kaWYKIAotI2lm
IENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKSkKLS8qIFRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2FuIHVzZSB1cCB0byA2IGFyZ3VtZW50IHJlZ2lz
dGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02NCBsaWtlIGZlYXR1cmVzLiBGb3Igbm93LCB3
ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0Zm9ybXMKLSAgIHRoYXQgaGF2ZSA2IG9yIG1v
cmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4KLSovCi0jZGVmaW5lIEVOQUJMRV9FWFRSQV9D
VElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0JJTkRJTkdfSU5URUdS
SVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUgRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEK
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448385</attachid>
            <date>2022-01-05 07:09:38 -0800</date>
            <delta_ts>2022-01-05 10:20:39 -0800</delta_ts>
            <desc>cleanup 1</desc>
            <filename>bug-233822-20220105150936.patch</filename>
            <type>text/plain</type>
            <size>263489</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4
OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1
YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRl
c3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1
c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihs
ZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0
ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1
YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVy
SUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIo
VHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0
KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2
OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uMTM2NmRkNTEyYmIxNjIzNDM4YzdmOWZlYWQ5ZWMy
ZjYyYzQ3MzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIHVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNdjcgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
LSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7CisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyNjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERv
dWJsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OworICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKICAgICBpbmxpbmUgQVJNUmVnaXN0ZXJz
OjpGUFNpbmdsZVJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpIHsgcmV0dXJuIEFS
TVJlZ2lzdGVyczo6YXNTaW5nbGUoZnBUZW1wUmVnaXN0ZXIpOyB9CiAKICAgICAvLyBJbiB0aGUg
VGh1bWItMiBpbnN0cnVjdGlvbiBzZXQsIGluc3RydWN0aW9ucyBvcGVyYXRpbmcgb25seSBvbiBy
ZWdpc3RlcnMgcjAtcjcgY2FuIG9mdGVuCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXpl
KCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFs
aXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxV
RSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJl
dHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkK
ICAgICAgICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0
NWRlZmVkYjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ly
KGltbS5tX3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lz
dGVySUQgYSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCmluZGV4IDAwYTU1NDk3ZmQ2M2FkZWE5Y2Y1ZjFiZjBiYzZi
MWJjMTVhODQwZDIuLjc3ZTRhNmU5ZWYzZjhhYzcyYTVkZDBjNzgyOGEwYmRjZWMzNWQ2YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lz
dGVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVEYXRhLmgiCiAjaW5jbHVkZSAiQ2Fs
bE1vZGUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKQEAgLTQ3LDE0ICs0OCw2IEBAIGVu
dW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRnJhbWVTaHVmZmxlRGF0YTsKIHN0
cnVjdCBVbmxpbmtlZENhbGxMaW5rSW5mbzsKIAotI2lmIEVOQUJMRShKSVQpCi1uYW1lc3BhY2Ug
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QxMCB9OwotY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OwotfQotI2VuZGlmCi0KIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTQ2Miw5ICs0NTUsOSBAQCBwdWJsaWM6CiAg
ICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxs
ZWVHUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUdQUjsgfQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIHsgcmV0dXJuIEJhc2Vs
aW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSOyB9Ci0gICAgdm9pZCBzZXRDYWxsTGlu
a0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxFQVNFX0FTU0VSVChjYWxsTGlu
a0luZm9HUFIgPT0gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOyB9Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUdQUjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIGNhbGxMaW5rSW5mb0dQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsTGlua0luZm9HUFI7IH0KKyAgICB2b2lkIHNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcg
Y2FsbExpbmtJbmZvR1BSKSB7IFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mb0dQUiA9PSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsgfQogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAppbmRleCA0YjlhNDk1OWZkOGZmMzUxZDI5ZGFmY2EwOTcyNDUzYjdiYzE2NzY2Li45
NmJlMzgzN2ExYWY5ZTcyNWQyNTI0ZjRlZmU2OGQ2MWFhY2MyMTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTIz
MywyMyArMjMzLDEyIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjplbWl0RXhwbGljaXRF
eGNlcHRpb25IYW5kbGVyKCkKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRv
T1NSRXhpdEV4Y2VwdGlvbkhhbmRsZXIsIG9yaWdpbmFsSGFuZGxlci5uYXRpdmVDb2RlKTsKICAg
ICAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0
LT5qdW1wKCk7CiAgICAgICAgIFZNKiB2bSA9ICZtX3ZtOwogICAgICAgICBqaXQtPmFkZExpbmtU
YXNrKAogICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIsIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgICAgICAgICB9KTsKLSNlbHNlCi0gICAgICAgIGpp
dC0+c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxl
cik+KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV92bSkpOwotICAgICAgICBqaXQtPnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKG1fdm0pOwotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgbG9v
a3VwRXhjZXB0aW9uSGFuZGxlckNhbGwgPSBqaXQtPmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAg
ICAgICAgaml0LT5hZGRMaW5rVGFzaygKLSAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgewotICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhsb29rdXBFeGNlcHRp
b25IYW5kbGVyQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29r
dXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgaml0LT5qdW1w
VG9FeGNlcHRpb25IYW5kbGVyKG1fdm0pOwotI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRl
eCBkMjEwNDE3NDJiZDQ5NWI2NmVjYTQ1MDhkNzNiOGQzOGNhY2ZmMTVjLi5mNDFlZmU2Mjc1Mzg4
NzU0YmM2ZWFjOGFlM2M0ZjM4N2JiZjY0ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI2LDggKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCisj
aW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIgotI2luY2x1ZGUgIkpJVElubGluZUNhY2hlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJSZXBhdGNoLmgiCiAKQEAg
LTQyOSw3ICs0MjksNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVu
bGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgIHVzZWRSZWdpc3Rl
cnMgPSBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgaWYgKGFj
Y2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCAmJiB1bmxpbmtlZFN0dWJJbmZvLmJ5dGVj
b2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIC8vIEZvciBpdGVyYXRvcl9uZXh0LCB3
ZSBjYW4ndCBjbG9iYmVyIHRoZSAiZG9udENsb2JiZXJKU1IiIHJlZ2lzdGVyIGVpdGhlci4KLSAg
ICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xv
YmJlckpTUik7CisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1IpOwogICAgIH0KIAogICAgIHN3aXRj
aCAoYWNjZXNzVHlwZSkgewpAQCAtNTI2LDc4ICs1MjYsNzggQEAgdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayos
IFVubGkKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRl
bGV0ZUJ5VmFsOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
dGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNl
bGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7
CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNl
bmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAg
ICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwogICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0
dWJJbmZvR1BSOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eUlkOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJl
c3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vz
c1R5cGU6OkdldEJ5VmFsOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CiAg
ICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
IHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6
cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnBy
b3BlcnR5VGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFn
R1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFj
Y2Vzc1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZh
bHNlOwogICAgICAgICBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2U7Ci0gICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNS
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5zdGFuY2VvZjo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm90b3R5
cGVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJvdG9KU1IucGF5bG9h
ZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
c3RhbmNlb2Y6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJh
c2VUYWdHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigp
OworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6
OnZhbHVlSlNSLnRhZ0dQUigpOwogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6
OnByb3RvSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeVZhbDoKICAgICBjYXNlIEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVOYW1lOiAKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVC
cmFuZDogCiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5CeVZh
bFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZh
bDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdH
UFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAg
ICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRh
Z0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZh
bHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUi50YWdH
UFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlJ
ZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50
aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNl
bGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAg
IHZhbHVlVGFnR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIo
KTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJh
c2VKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkluQnlJZDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZDoKQEAgLTYwNSw2NSArNjA1LDY1IEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHVi
SW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkOgogICAg
ICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgICAgICByZWdzLnRoaXNHUFIg
PSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpy
ZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICAg
ICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNS
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy50aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0
aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVn
cy50aGlzR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7Ci0gICAgICAg
IHYudGhpc1RhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNS
LnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IudGFnR1BSKCk7
CisgICAgICAgIHYudGhpc1RhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0
aFRoaXM6OnRoaXNKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpQdXRCeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0
cnVlOwogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNl
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlJZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BS
ID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAg
ICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNS
LnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6
UHV0QnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRQcml2YXRlTmFtZToKICAgICAgICAg
aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5w
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2
YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJl
Z3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3BlcnR5
SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogICAgICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKLSAgICAg
ICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJv
ZmlsZUdQUjsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlB1dEJ5VmFsOjpwcm9maWxlR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQ
UigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAg
ICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnBy
b3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVy
ID0gZmFsc2U7CiAgICAgICAgIHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgcmVncy5icmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
KyAgICAgICAgcmVncy5icmFuZEdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFz
ZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5icmFuZFRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJy
YW5kUmVnaXN0ZXJzOjpicmFuZEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAg
ICAgIHYuYnJhbmRUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpi
cmFuZEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGViMjBjZTY0NWFm
MGJiNTg0NTVmNjgwM2U4ZDQ3MjRhNzRhNzFmOTQuLjQ5ZmNhYjk0MTM5MjAwNjY4MGM1YjRiZjE3
MGU5NWRhMzllZTMxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC0xMzYsNDAgKzEzNiw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVC
b2R5KCkKICAgICBBU1NFUlRfVU5VU0VEKGNvbXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3Bl
Y3VsYXRpdmUpOwogfQogCi12b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxl
cnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0
aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBj
b3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5
RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9t
Q2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
bV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGFw
cGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSk7
Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVj
a3MubGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0KLSAgICAgICAgYXBwZW5k
Q2FsbChvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKTsKLQotICAgICAgICBqdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLX0KLQogdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogewogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2Nr
IGRhdGEgc3RydWN0dXJlcy4KQEAgLTI3MywxMiArMjM5LDEwIEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsPEpTSW50ZXJuYWxQdHJUYWc+KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdl
dENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVt
cHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVuayA9IHZtKCkuZ2V0
Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKICAgICBhdXRvIHRhcmdl
dCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPihvc3JFeGl0VGh1bmsuY29kZSgp
KTsKQEAgLTM4Miw3ICszNDYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBt
X3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENv
ZGVPcmlnaW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAg
bGlua09TUkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIE9TUiBlbnRyeSB0cmFtcG9saW5l
cyBpZiBuZWNlc3NhcnkuCkBAIC00ODQsNyArNDQ3LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKCkKICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMo
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCk7CiAgICAgbGlua09TUkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRl
IE9TUiBlbnRyeSB0cmFtcG9saW5lcyBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggNDk5N2JkNGJiOTBlNTkzNzIyOTBjMGVhYjI4
NjhiNmMxODEyOWE3YS4uYTcyOGVmZDg3MTJlYzVlMDljNmQ3NTYxZjQyOTVmODg3M2RkMjI0YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzEzLDcg
KzMxMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rKExpbmtCdWZmZXImKTsKICAgICAKICAg
ICB2b2lkIGV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IoY29uc3QgT1NSRXhpdCYsIFNwZWN1bGF0aW9u
UmVjb3ZlcnkqKTsKLSAgICB2b2lkIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIHZv
aWQgbGlua09TUkV4aXRzKCk7CiAgICAgdm9pZCBkaXNhc3NlbWJsZShMaW5rQnVmZmVyJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDliOThkNTQ3NjMx
ODM4NmFmYjJmZWNmOGVlMWQyNjAyYWFmYWRlZTcuLjQ4YTE4MGI3NDBhYWNlM2ZhMDMxOTM3MWU1
ZTBiYzRmYzljODJjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cApAQCAtMTI4LDI0ICsxMjgsMTIgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBv
aW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKIAogICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlv
biBoYW5kbGVyLgogICAgICpzdGF0ZS5leGNlcHRpb25IYW5kbGVyID0gaml0LmxhYmVsKCk7Ci0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRs
ZXIgPSBqaXQuanVtcCgpOwogICAgIFZNKiB2bVB0ciA9ICZ2bTsKICAgICBqaXQuYWRkTGlua1Rh
c2soCiAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGhhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsKHZtUHRyLT5nZXRDVElT
dHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CiAgICAgICAgIH0pOwotI2Vsc2UKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBqaXQuanVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSk7Ci0gICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIp
KTsKLSAgICAgICAgfSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAg
ICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVEwsIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGE2
YWZmZTM1OWE5MTk5YTU4MDVlMzlhOGE0MDlhMmE1YjUzNWQwZDkuLjI4YmRlZTNiYTc1NTMwNjZl
NTMwMzcxMzU3NDg2MTZiZDNiOGNmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcApAQCAtNzgsMTcgKzc4LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxG
cmFtZSk7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Q2hlY2sgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAgICAgICAgICAgICBhdXRvIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpMZXNzVGhhbiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSNlbHNlCi0gICAgICAgICAgICBhdXRvIG5vRXhjZXB0
aW9uID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAg
ICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKTsKLSAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkg
ewogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQodm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQ
UkluZm86OnJlZ1QxKTsKQEAgLTExMSwxMSArMTAxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBs
aW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KGNvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIsIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNl
bHNlCi0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsKLSNlbmRpZgogICAgICAg
ICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHI8SklUVGh1
bmtQdHJUYWc+KHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CiAg
ICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIHN0YXRlLmdlbmVyYXRl
ZEZ1bmN0aW9uKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggOTgyZTQ1YWFhZTU2YjI2ZDFmODU5ZWU3MjhmNmJkNzI3ZjMyMzM0
My4uNjJiYjRhYTY5MjJkNDI3YWJkNjZiNDk5N2U5ZGZlMzVmYzMwNjBhOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xOTQ1LDQ5ICsxOTQ1LDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZU5lZWRz
TWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogCi0gICAgLy8gQ2hlY2tzIHRoYXQgdGhl
IGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVz
ZSB0aGlzIGluIHN0YXRpYwotICAgIC8vIGFzc2VydGlvbnMgdG8gZW5zdXJlIHRoYXQgcmVnaXN0
ZXIgYWxpYXNlcyBsaXZlIGF0IHRoZSBzYW1lIHBvaW50IGRvIG5vdCBtYXAgdG8gdGhlIHNhbWUK
LSAgICAvLyBhcmNoaXRlY3R1cmFsIHJlZ2lzdGVyLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXAoQXJncy4uLiBhcmdz
KSB7IHJldHVybiBub092ZXJsYXBJbXBsKDAsIGFyZ3MuLi4pOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gQmFzZSBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0K
LQotICAgIC8vIEdQUlJlZyBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgUmVn
aXN0ZXJJRCBncHIsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1hc2sg
PSBub092ZXJsYXBJbXBsUmVnTWFzayhncHIpOwotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVz
ZWQgfCBtYXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICAvLyBKU1ZhbHVlUmVncyBjYXNlCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFy
Z3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2so
anNyLnBheWxvYWRHUFIoKSk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgbWFzayB8
PSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkpOwotI2VuZGlmCi0gICAgICAgIGlm
ICh1c2VkICYgbWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0KLQotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soUmVnaXN0ZXJJRCBncHIp
Ci0gICAgewotICAgICAgICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBy
ZXR1cm4gMFVMTDsKLSAgICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdwcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdCA8IHNpemVvZih1aW50NjRfdCkgKiBD
SEFSX0JJVCk7Ci0gICAgICAgIHJldHVybiAxVUxMIDw8IGJpdDsKLSAgICB9Ci0KIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
SW1wbChHUFJSZWcgY2FsbGVlU2F2ZXNCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWExZTUzMjY0OGM0
ZDZhZTczODM2ZDAxNzMyZjI0NjdhZWUwYjc5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaApAQCAtMCwwICsxLDQzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2Ug
QmFzZWxpbmVKSVRSZWdpc3RlcnMgeworCituYW1lc3BhY2UgQ2FsbCB7CisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBjYWxsZWVHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBH
UFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK30KKworbmFtZXNwYWNl
IENoZWNrVHJhcHMgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBH
UFJJbmZvOjpub25BcmdHUFIwOworfQorCituYW1lc3BhY2UgRW50ZXIgeworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IEdQUkluZm86OnJlZ1QxOworfQorCituYW1lc3Bh
Y2UgSW5zdGFuY2VvZiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjMgfTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMSB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeworI2lmIENQVShNSVBTKQorICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMgorI2Vsc2UKKyAgICAgICAgSlNSSW5mbzo6anNSZWdUMzIKKyNl
bmRpZgorICAgIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5m
bzo6anNSZWdUNTQgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlSlNSLCBwcm90
b0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUikpOworfQorCituYW1l
c3BhY2UgSkZhbHNlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgSlRydWUgeworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisKK25hbWVzcGFj
ZSBUaHJvdyB7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyksIDA+KCk7CisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHRocm93blZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8ZGVj
bHR5cGUob3BlcmF0aW9uVGhyb3cpLCAxPigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBHUFJJbmZvOjpub25BcmdHUFIwOworICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKHRocm93blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1aXJlZCBmb3Ig
Y2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxP
YmplY3RHUFIsIHRocm93blZhbHVlSlNSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3Bl
cmF0aW9uIik7Cit9CisKK25hbWVzcGFjZSBHZXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNl
ZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisKKyAgICAvLyBG
YXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJK
U1IgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBH
UFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiksICJSZXF1
aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIs
IHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlv
biIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5SWRXaXRoVGhpcyB7CisgICAgLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpy
ZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0
IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
eyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIGJ5dGVjb2Rl
T2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IHRoaXNKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3Bh
Y2UgR2V0QnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xv
dyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpq
c1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZv
ciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmls
ZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5m
b0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorbmFt
ZXNwYWNlIEVudW1lcmF0b3JHZXRCeVZhbCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAg
IC8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxp
emluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCisgICAgc3RhdGljX2Fzc2Vy
dChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7CisgICAgc3RhdGljX2Fzc2VydChyZXN1
bHRKU1IgPT0gR2V0QnlWYWw6OnJlc3VsdEpTUik7CisgICAgc3RhdGljX2Fzc2VydChzdHViSW5m
b0dQUiA9PSBHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSKTsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgeyBHUFJJbmZvOjpyZWdUNSB9OworfQorI2VuZGlm
CisKK25hbWVzcGFjZSBQdXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZh
c3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEw
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IGJhc2VKU1Iu
dGFnR1BSKCkgfTsgLy8gUmV1c2luZyByZWdUMSBmb3IgYmV0dGVyIGNvZGUgc2l6ZSBvbiBBUk1f
VEhVTUIyCisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
dmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUi5wYXlsb2FkR1BSKCks
IHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpLCAiUmVxdWly
ZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVy
cworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdU
NCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VuZGlmCisgICAg
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2
YWx1ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFj
ZSBQdXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93
IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Bl
cnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBw
YXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJv
ZmlsZUdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKwor
ICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUoQVJNX1RI
VU1CMikKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb24gcmVnaXN0ZXJz
IG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQor
I2Vsc2UgLy8gT3RoZXIgSlNWQUxVRTMyXzY0CisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSIHsgZ2xvYmFsT2JqZWN0R1BSIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1
bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlK
U1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSKSwg
IlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1l
c3BhY2UgSW5CeUlkIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdldEJ5
SWQ6OmJhc2VKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFIgfTsKK30KKworbmFt
ZXNwYWNlIEluQnlWYWwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBK
U1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgc3RhdGljX2Fzc2Vy
dChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7Cit9CisKK25hbWVzcGFjZSBEZWxCeUlk
IHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAv
LyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworICAg
ICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9Owor
I2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAv
LyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QwIH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBl
Y21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQ
UiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsK
KyAgICB9Cit9CisKK25hbWVzcGFjZSBEZWxCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQg
b24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEpTUkluZm86OmpzUmVnVDEwIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJl
Z2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93
IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2Rl
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHV0VG9TY29wZSB7CisgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKK30KKworbmFt
ZXNwYWNlIFByaXZhdGVCcmFuZCB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHZXRCeVZhbDo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRo
dW5rCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR2V0QnlWYWw6OnByb3Bl
cnR5SlNSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKworICAgIG5h
bWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNS
LCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0K
KworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSIH07
IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFIgfTsg
Ly8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJ
bmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgQmFzZWxpbmVKSVRSZWdpc3RlcnMKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuY3BwCmluZGV4IDA0ZThhZmRlNDFjMjY4YWQ5Y2YyZWIxYzVkM2NmMDQwOTgyODkz
NWUuLmQ4Y2RmZmE1MTY0MjU4MGY4ZDVkZDY3ZjgxODk3ZTI1NmMyZDBiMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk0LDYgKzk1LDQwIEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjpl
bWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdo
ZXJlCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgZGVzY3JpcHRpb24p
OwogfQogCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUoKQoreworICAg
IC8vIFN0YXNoIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BV
KEFSTV9USFVNQjIpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdp
c3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1l
bnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorICAgIC8vIE1ha2UgZW5vdWdoIHNwYWNlIG9uIHRo
ZSBzdGFjayB0byBwYXNzIGFyZ3VtZW50cyBpbiBhIGNhbGwKKyAgICBpZiBjb25zdGV4cHIgKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMy
KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
fQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rRXBpbG9ndWUoKQoreworICAgIC8v
IFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBv
aW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVn
aXN0ZXJzOjplYnApOworI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBw
b3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1J
UFMpCisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lz
dGVyKTsKKyNlbHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNl
bmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCBhZmM1ZGNjODk5ZTc1
NjMzOWE4MTE2MzRlMjNjMjE3YmRhMWNjZjY0Li5lN2I4ZGQxYjVjZWY3NzJkYjI2MTk1ZWZmNDUw
YjkyY2Q3ZGY1YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
QEAgLTg1MywxNDUgKzg1Myw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRD
b2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFNj
b3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiwgY29uc3QgY2hhciopOwogCi1wcml2YXRl
OgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCi0gICAg
ewotICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8QXJnTnVtPik7Ci0gICAgfQotCi0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdz
Li4uIHJlc3QpCi0gICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRp
b25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxl
IGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZpcnN0IH07Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRv
IGNvbnN0ZXhwcgotICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtLCBJbmRleCAtIDE+KHJlc3QuLi4pOwotICAgICAgICB9Ci0gICAgfQotI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJS
ZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3MuLi4gcmVzdCkKLSAgICB7Ci0gICAgICAgIGNv
bnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBl
LCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50
QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0g
ICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2lu
Z2xlIEdQUgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndp
c2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09
IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMp
IHsKLSAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRz
IHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIx
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9Owot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIg
YW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUg
c3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAg
ICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKLSAgICAgICAgICAgICAgICBVTlVT
RURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRl
eCAtIDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAgICAgfSBlbHNlIGlmIChm
aXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKLSAgICAgICAgICAg
ICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGgg
ZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQg
bGF0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdO
dW0sIEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhp
cyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1h
dHRlcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051
bSwgSW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
QXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBz
dGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcg
c2Vjb25kKQotICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJn
ID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhh
bmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFu
ZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVk
IG9uIHRoZSBzdGFjayBhbnl3YXkKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKLSAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAg
ICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0
byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGZpcnN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3Rl
eHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
LCBJbmRleCAtIDE+KHNlY29uZCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3Rl
cnMiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJS
ZWcgZmlyc3QpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRB
cmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8g
aGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcg
aXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBz
dGFjayBhbnl3YXkKLSAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9N
RVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Ci0gICAgfQotI2VuZGlmCi0KLXB1YmxpYzoKLSAg
ICAvLyBTZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVu
Y3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKLSAgICAvLyBpbnN0ZWFk
IG9mIGEgR1BSLCB3aGljaCBvbiBKU1ZBTFVFNjQgYXJlIGVxdWl2YWxlbnQsIGJ1dCBvbiBKU1ZB
TFVFMzJfNjQgYSBKU1ZhbHVlUmVncyBpcwotICAgIC8vIHJlcXVpcmVkIHRvIGhvbGQgYSA2NC1i
aXQgd2lkZSBmdW5jdGlvbiBhcmd1bWVudCwgc28gdXNlIHRoaXMgaW4gcGFydGljdWxhciB3aGVu
IHBhc3NpbmcgYQotICAgIC8vIEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUgYmUgY29tcGF0aWJsZSB3
aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UKLSAg
ICAvLyBwcmVmZXJyZWRBcmd1bWVudEdQUiB3aGVuIHBhc3NpbmcgaG9zdCBwb2ludGVycy4KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+Ci0gICAgcHJlZmVycmVkQXJn
dW1lbnRKU1IoKQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotI2lmICFPUyhXSU5ET1dTKQot
ICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAg
ICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5m
bzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOwotI2Vsc2UKLSAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFy
Z0dQUjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7Ci0jZW5kaWYKLSNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi0jaWYgQ1BVKEFSTV9USFVNQjIpCi0gICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVy
IGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28g
d2UgY2FuIHVzZQotICAgICAgICAvLyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4K
LSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAg
ICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUklu
Zm86OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVnVDYsCi0gICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtPigKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCi0gICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5m
bzo6cmVnVDYpOwotI2VuZGlmCi0jZW5kaWYKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlcyAoc3Rh
dGljYWxseSwgYXQgY29tcGlsYXRpb24gdGltZSksIHRoZSBpZGVhbCBtYWNoaW5lIHJlZ2lzdGVy
IGFuIGFyZ3VtZW50IHNob3VsZCBiZQotICAgIC8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9u
IGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZv
ciB0aGUKLSAgICAvLyBpbml0aWFsIGFyZ3VtZW50cyBhcyBhcHByb3ByaWF0ZSwgdGhlbiBzdWl0
YWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzIGZvciB0aGUgcmVtYWluaW5nCi0gICAgLy8gYXJndW1l
bnRzLiBUaGUgaWRlYSBpcyB0aGF0ICdzZXR1cEFyZ3VtZW50cycgd2lsbCBoYXZlIHRvIGRvIHRo
ZSBtaW5pbWFsIGFtb3VudCBvZiB3b3JrIHdoZW4KLSAgICAvLyB1c2luZyB0aGVzZSByZWdpc3Rl
cnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1
bWVudHMgZnJvbSBtZW1vcnkKLSAgICAvLyBhbnl3YXksIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB5
aWVsZHMgdGhlIHNtYWxsZXN0IGNvZGUgcmVxdWlyZWQgZm9yIGEgY2FsbC4KLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAgIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgotICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKLSAg
ICB7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZB
cmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQg
aW4gR1BSIik7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9w
ZXJhdGlvblR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7Ci0gICAgfQorICAgIHZvaWQgZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKKyAgICB2b2lkIGVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKaW5kZXggM2RkNmUwY2IxYmY1NzdiOTM0MzQwYjQx
MTdhNjU1OGE5MTI5NTFjOS4uMWQzZmY1ODc5NWI1YmQxM2U2YjU5ZGYyMGM0MDUyZGE1OTI0NTJi
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
RGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRl
ICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0Lmgi
CkBAIC0xMDAsOSArMTAxLDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGNvbnMKICAgICAgICAgICAg
ICAgICBEYXRhRm9ybWF0SlMpOwogICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHNodWZm
bGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICBzaHVmZmxlRGF0
YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKICNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWly
KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnRhZ0dQUigpLCBCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOworICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bGVlSlNSLnRhZ0dQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBh
eWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdp
c3RlcnMoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpKTsKICAgICBzaHVmZmxlRGF0YS5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAppbmRleCA1MmExM2FhYWZiNzdiNmU0NGZhN2ViMTkyYjA2ODQzYzJjY2I5
MjI2Li42NzNhYjMxMDFjYWM2MjRhYjI5MDg1YWMxZmJjYTM1ZTZlZjAzNjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25U
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk3Niw2ICs5NzgsMjExIEBAIGlubGlu
ZSBOb1Jlc3VsdFRhZyBleHRyYWN0UmVzdWx0KE5vUmVzdWx0VGFnKSB7IHJldHVybiBOb1Jlc3Vs
dDsgfQogLy8gV2UgdXNlIHRoaXMgaGFjayB0byBnZXQgdGhlIEdQUkluZm8gZnJvbSB0aGUgR1BS
UmVnIHR5cGUgaW4gdGVtcGxhdGVzIGJlY2F1c2Ugb3VyIGNvZGUgaXMgYmFkIGFuZCB3ZSBzaG91
bGQgZmVlbCBiYWQuLgogY29uc3RleHByIEdQUkluZm8gdG9JbmZvRnJvbVJlZyhHUFJSZWcpIHsg
cmV0dXJuIEdQUkluZm8oKTsgfQogCitjbGFzcyBOb092ZXJsYXBJbXBsIHsKKyAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBub092ZXJsYXBJbXBsUmVnTWFzayhHUFJSZWcgZ3ByKQorICAg
ICB7CisgICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHJldHVy
biAwVUxMOworICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3By
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgY291bnRPZkJpdHM8dWludDY0X3Q+KTsK
KyAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OworICAgIH0KKworICAgIC8vIEJhc2UgY2FzZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIEdQUlJl
ZyBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBHUFJSZWcgZ3ByLCBBcmdzLi4u
IGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01h
c2soZ3ByKTsKKyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7
CisgICAgfQorCisgICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0
X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1
bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBheWxvYWRHUFIoKSk7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbWFzayB8PSBub092ZXJsYXBJbXBsUmVnTWFz
ayhqc3IudGFnR1BSKCkpOworI2VuZGlmCisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8
IG1hc2ssIGFyZ3MuLi4pOworICAgIH0KKworcHVibGljOgorICAgIC8vIEVudHJ5IHBvaW50Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGVudHJ5KEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsg
fQorfTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNW
YWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0YXRpYworLy8gYXNzZXJ0aW9u
cyB0byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQg
ZG8gbm90IG1hcCB0byB0aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KK3RlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4g
YXJncykgeyByZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50cnkoYXJncy4uLik7IH0KKworY2xhc3Mg
UHJlZmVycmVkQXJndW1lbnRJbXBsIHsKKyAgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCisgICAgeworICAgICAgICByZXR1cm4gc2l6
ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1
bWVudFR5cGU8QXJnTnVtPik7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJ
bmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRl
eD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwor
ICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyB7IGZpcnN0IH07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAg
ICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3Qu
Li4pOworICAgICAgICB9CisgICAgfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJ
bmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhp
cmQsIEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9m
Q3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93
IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
IUluZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0g
NCkgeworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29u
c3RleHByCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNl
IHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9
PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BS
MiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAv
LyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiBy
ZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3Ig
dGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90
IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmly
c3QgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNv
bnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRz
IGluIHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBP
dGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQs
IHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50
IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIs
IHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3Qs
IHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJz
dCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1
c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAg
IHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwg
cmVzdC4uLik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRl
eCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFs
dWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQorICAgIHsKKyAgICAg
ICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1
cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMi
KTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIg
YXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkK
KyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwg
Zmlyc3QgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXpl
T2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3Qp
OyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdO
dW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRp
YyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCisgICAgeworICAg
ICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9m
Q3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50
cyIpOworICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQg
cmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAg
aWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0
ZXJzIik7CisgICAgfQorI2VuZGlmCisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJn
TnVtKSwgSlNWYWx1ZVJlZ3M+CisgICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorI2lmICFPUyhXSU5ET1dTKQorICAgICAgICByZXR1cm4gcGlja0pT
UjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJ
bmZvOjphcmd1bWVudEdQUjUpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9u
QXJnR1BSMSk7CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisjaWYgQ1BVKEFSTV9U
SFVNQjIpCisgICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
cHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQorICAgICAgICAv
LyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgcmV0dXJuIHBpY2tK
U1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAor
ICAgICAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVnVDcsICAg
ICAgICBHUFJJbmZvOjpyZWdUNiwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAg
ICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7CisjZWxpZiBDUFUo
TUlQUykKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMs
IEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCisgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYp
OworI2VuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFi
bGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwg
R1BSUmVnPgorICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtPigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7CisjZW5kaWYK
KyAgICAgICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051
bT4oKS5wYXlsb2FkR1BSKCk7CisgICAgfQorfTsKKworLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHks
IGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1
bWVudCBzaG91bGQgYmUKKy8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMg
eWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKKy8vIGlu
aXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSBy
ZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhh
dCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Yg
d29yayB3aGVuCisvLyB1c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRz
LCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKKy8vIGFu
eXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1
aXJlZCBmb3IgYSBjYWxsLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CitwcmVmZXJyZWRBcmd1bWVu
dEdQUigpCit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJn
dW1lbnRHUFI8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCisvLyBTZWUgcHJlZmVycmVk
QXJndW1lbnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lv
biByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKKy8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpT
VkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdz
IGlzCisvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQs
IHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFsdWUvRW5j
b2RlZEpTVmFsdWUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFM
VUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4g
cGFzc2luZyBob3N0IHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KK3ByZWZl
cnJlZEFyZ3VtZW50SlNSKCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJbXBsOjpw
cmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCAwMzBmM2YzNmY2ZWVmZDg3OTBkYTg5NDU3OGM5NGFhYTIwYzU5
OTdmLi4zZTA0N2EzZTcwYmZkNzIxZWE3NWZhODNjNjUyNTBjYjE3OWE4YzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1Ao
KQogI2RlZmluZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsg
XAogICAgICAgICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBc
Ci0gICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RF
X0lOX01BSU4ob3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJl
c2V0U1AoKQogCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBj
YXNlIG9wXyMjbmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3Ry
dWN0aW9uLCBpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VD
YWxsKGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0
aEZ1bmN0aW9uIHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
QEAgLTY1OCw5ICs2NTgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xP
V19PUChnZXRfcHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9TTE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg1
Nyw5ICs4NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhK
SVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5
TGFiZWw7IC8vIE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBU
YWJsZS5pc0VtcHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxl
cnMoKTsKLSAgICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3Nl
bWJsZXItPnNldEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVs
dENvZGVPcmlnaW4oKSk7CkBAIC05MTEsMTIgKzkwNiwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAg
ICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAo
IW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9l
eGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICgh
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxs
RnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5k
aWYKIAogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYg
KHJlY29yZC50YXJnZXQpCkBAIC0xMDM3LDM1ICsxMDMwLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQg
SklUOjpwcml2YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25F
ZmZvcnQKICAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAot
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxG
cmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2Fs
bEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0Vu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAg
IC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFz
c2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2
bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRp
b24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChP
cGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNr
cy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVj
b3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLX0KLQogdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgp
CiB7CiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRl
IHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25z
IGZvciBvcF9wcm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmZjM4ODc0
MzNjM2Q1ZDFjY2YzNjhjNmYzZWU5ZTFhOGE4ODQ3Njk4Li45NzY1NWQyZWJmOTgwMTgyZjBhOGQ2
NWIzMzAwN2U2YTMyZDJhNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsy
NzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0
aENhbGxGcmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7
Ci0KICAgICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lk
IGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRG
YXN0UGF0aFJlc3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25U
eXBlPgotICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsK
KyAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNv
ZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51
bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBA
IC02MTQsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9w
dXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1
bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRf
b3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRI
YXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0
dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBl
bWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBw
cm9wZXJ0eSwgQWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFj
Y2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lk
IGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1Niwy
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAg
ICBwcml2YXRlOgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVu
ayBnZW5lcmF0b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwot
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsK
LSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihW
TSYpOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdl
bmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hh
bmRsZXJHZW5lcmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1
bmtJc1VzZWRGb3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2ll
bnQgdG8gZW1pdCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29s
dmVkQ2xvc3VyZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5
cGVzIHdpdGggb3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8
IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJh
dG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdl
bmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7Cisg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVl
SXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAg
ICAgIEp1bXAgZ2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKICAgICAgICAgewpAQCAtNzE4LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29u
c3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4pOwotI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxX
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCk7CkBAIC03NjMsNyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJl
dHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCiAgICAgICAgICAgICBpZiBjb25zdGV4
cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpS
ZXN1bHRUeXBlPjo6dmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAg
ICAgICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24p
OworICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxs
OwogICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNjk5ZWFmY2I3
MjllY2E0MTQwNzVlYzEwY2NjOTI2MjIwYmQ0NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1YTVkYmRiMGVm
MDA5MDUyMDExNTQ5ODEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9k
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwog
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDExIEBAIHZvaWQg
SklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfcG93KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3df
cGF0aF9wb3cpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3ICs5Nzgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBMaXN0KCku
ZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVtcHR5KCkp
OwotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZWUzY2M0
NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0
ZmRjOGRjYTBjNjBjNDJjMjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2Vs
aW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9p
bnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkNhbGxGcmFtZVNodWZmbGVyLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgSklUOjpjb21waWxlU2V0
dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUpCiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNo
MzIoQWJvdmUsIHJlZ1QzLCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdU
MCwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkp
KTsKICAgICBub3RCaWdnZXN0LmxpbmsodGhpcyk7Ci0gICAgCisKICAgICAvLyBJbml0aWFsaXpl
ICd0aGlzJy4KICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9IGpzUmVnVDEwOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCB0aGlzSlNSKTsKQEAgLTE5Niwx
MSArMTk3LDExIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJG
cmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAK
LSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxl
ZUpTUiwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7Ci0g
ICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3Rl
cikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBC
YXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAgICBsb2FkVmFsdWUo
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOwogICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOwot
ICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6
TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6
Y2FsbExpbmtJbmZvR1BSKTsKLSAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFs
T2JqZWN0KCptX3ZtLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgQ2Fs
bE1vZGU6OlJlZ3VsYXIpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgIGVtaXRWaXJ0dWFs
Q2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICByZXNldFNQ
KCk7CiB9CiAKQEAgLTIxMywxOCArMjE0LDE4IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwo
Y29uc3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkKQogdGVtcGxhdGU8Pgog
Ym9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29kZSwgVW5s
aW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKIHsKLSAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFk
YXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxM
aW5rSW5mb0dQUik7Ci0gICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0
VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
ZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQ
Uiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRv
TWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5r
SW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAg
ICBKdW1wTGlzdCBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zh
c3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxv
YWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgc2Nv
cGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1
ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50
VGFpbENhbGwoYnl0ZWNvZGUsIG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNodWZmbGVyIHsgKnRoaXMsIHNodWZmbGVEYXRh
IH07Ci0gICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
TGlua0luZm9HUFIpOworICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9y
VGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKIAogICAg
IGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9b
Y2FsbExpbmtJbmZvSW5kZXhdLmRvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlu
a0luZm9JbmQKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0
cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRh
Z09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbGVlSlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxs
ZWUsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOworICAgIHN0b3JlVmFs
dWUoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYg
KGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MSwxNyAr
MjcyLDE3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAvLyBXZSBuZWVkIHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0
IGEgcG9pbnRlciBjb21wYXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0
Y2hlcyB0aGlzLgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxlZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlm
IChjb21waWxlVGFpbENhbGwoYnl0ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29k
ZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cykgewotICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5m
bzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlu
a0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgICAgIGF1dG8gc2xvd1Bh
dGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+
KFsmXSB7CiAgICAgICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAg
ICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIH0pKTsKICAgICAgICAg
YWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJl
bCgpOwpAQCAtMjg5LDcgKzI5MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1p
dERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5w
YXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAg
ICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlz
LCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBkb25l
TG9jYXRpb24gPSBsYWJlbCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKQEAgLTM3
OCw3ICszNzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogewogICAgIGNvbXBpbGVDYWxs
RXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CiB9Ci0gCisKIHZvaWQgSklU
OjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBp
dGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAtMzkzLDEyICszOTQsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3QKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0lu
Zm9JbmRleCsrKTsKIH0KLSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92
YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNl
PE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOwogfQotICAgIAorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29u
c3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7
CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgpOwogCi0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1
bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RG
dW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0g
YnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC00
MjcsOSArNDI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
cmV0dXJuVmFsdWVKU1IpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpi
YXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7CiAgICAg
c3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3aXNlIHdp
bGwgbmVlZCBtb3ZlKHJldHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNDY5LDcgKzQ3MCw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3Bv
aW50KGp1bXAoKSk7CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIEpTVmFsdWVS
ZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAg
IEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OmJhc2VKU1I7CiAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgIG5vdE9iamVjdC5hcHBlbmQo
YnJhbmNoSWZOb3RDZWxsKGl0ZXJhdG9ySlNSKSk7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFu
Y2hJZk5vdE9iamVjdChpdGVyYXRvckpTUi5wYXlsb2FkR1BSKCkpKTsKQEAgLTQ3OCw3ICs0Nzks
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVu
dCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CiAKICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAorCiAgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKQEAgLTUxOCwxNiArNTE5LDE2
IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRD
bG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVy
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VK
U1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX25leHQsIG5leHRKU1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBi
cmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJ
dGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC02MTYsOCArNjE3LDggQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0MKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiAgICAgZW1p
dEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4
IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0YmUuLmYyNzNmNDJiOTQ2NDYw
MGJiMmQ5NmEzODU3MDQwNWI2YTA5ZmEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTQ5LDkgKzE1MCw5IEBAIHZv
aWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJ
VCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywg
c3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMTg1LDkgKzE4Niw5
IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0
YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZh
c3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1
YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE1LDEwICsyMTYsMTAg
QEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBh
dGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1Yklu
Zm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5s
b2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRvIGRvSW5saW5lQWNj
ZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
SW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBK
SVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGpp
dCwgdW5zaWduZWQgc3R1YkkKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJ
bmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlJZDo6c2NyYXRjaEdQUjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUy
NGY5YjA0OWUwZjNmMzFjMjk2ZGM0ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5
MCArNDgsNiBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3Mg
QWNjZXNzVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5h
bWVzcGFjZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVF
NjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQ
UkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1
cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2Ug
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpy
ZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxp
bmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhp
cyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9y
IGEgR2V0QnlWYWwgU3R1YkluZm8uCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQo
cmVzdWx0SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0
aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSKTsKLQotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpy
ZWdUMzsKLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7
Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQot
I2VuZGlmCi0KLW5hbWVzcGFjZSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVT
RShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9u
QXJnR1BSMCB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFy
Z0dQUjEgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFIyIH07Ci0jZWxzZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
SlNSSW5mbzo6anNSZWdUMzIgfTsKLSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Rv
SlNSIHsgSlNSSW5mbzo6anNSZWdUNTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2
YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIp
KTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBV
U0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owot
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5
SlNSICB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1Ig
PT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHBy
b3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0K
LQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qx
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1QzIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpy
ZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhl
bHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENs
b2JiZXJKU1IpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7
IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNl
IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFIgfTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
cyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFz
ZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9u
IEFSTV9USFVNQjIKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJ
bmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owot
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9
OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25z
dGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0K
LW5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChi
cmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0K
IGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAppbmRleCA1ODY0MTJiYzQ3ZWU2YmI3NDBlZjE1MjA4NGVmMmNhMjFhNmIxNTliLi44ZjhlY2Yy
NzMzODZmNmYxNTkwNTBhMzJlY2U0MWY3ZjRlYjlhNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaApAQCAtMTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAg
ZXhjZXB0aW9uQ2hlY2soKTsKIH0KIAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1B
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGZ1bmN0aW9uKQotewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlw
ZShmdW5jdGlvbik7Ci0gICAgZXhjZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0K
LSNlbmRpZgotCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5k
Q2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8v
IFRoZSBjYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRo
ZWlyIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
YjlhZWZjYWU2ZmNlNDBiNjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uYTBkZjE2NjkzYzk1NDJi
M2ZkYzcwYTZmNzNiZDhmNGVmZTllYTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRl
ICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAi
QmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm90byA9IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxp
bmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZS
ZWdpc3RlcnM6OnByb3RvSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpz
Y3JhdGNoMUdQUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0
Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1
bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gx
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNo
MkdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2
LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9m
UmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5z
dGFuY2VvZjo6dmFsdWVKU1I7CiAgICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUlu
c3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90
bycgd2lsbCBiZSBwYXNzZWQgb24gc3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90
b0pTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJC
aXQoKSk7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgdmFsdWVKU1IsIHByb3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4o
KTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwg
Ynl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWUgPSBqc1JlZ1QxMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2
YWx1ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRp
b24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIg
PSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0Owot
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGds
b2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RH
UFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBz
Y3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVn
VDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5
R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMg
ZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNh
dXNlCkBAIC00NzcsMzEgKzQ2NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdU
MTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29s
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxP
YmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgYXV0byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1
ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQu
bW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgp
OwotCi0gICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0g
aml0LmJyYW5jaElmRmFsc2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
LCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Cisg
ICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwog
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRl
Y29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9
IGpzUmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVK
U1I7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2
YWx1ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDEgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVn
VDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxP
YmplY3RHUFIpKTsKLSAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSB0cnVlOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRj
aDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Z2xvYmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwg
dGFyZ2V0KTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVy
YXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpA
QCAtNjc5LDMxICs2NTQsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgdmFsdWUgPSByZWdUMDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBh
eWxvYWRHUFIoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SlRydWU6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
R1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
NDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
MzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3Mo
dmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShU
cnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0g
ICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJl
Z1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJy
YW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJl
Z1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9i
amVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNU
cnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
KyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQ
UiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRo
cm93Ojp0aHJvd25WYWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhy
b3c6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckp1bXAodm0oKS5nZXRDVElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMg
aml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIAotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6VGhyb3c6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIElu
Y29taW5nCiAKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBq
aXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29w
eUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsK
KyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVj
dEdQUjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3du
VmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWlu
ZyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAg
Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
IApAQCAtMTI1MSw3NyArMTIxMiw2NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJ
bnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdl
IGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBw
b2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0
IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9
IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0g
ICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZv
ciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAg
IGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0g
ICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25D
aGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDAp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0K
LSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3Vu
dCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNU
b0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNv
dW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0
ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5C
ZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMy
KGxvY2Fsc1RvSW5pdCksIGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdp
c3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7
Ci0jZW5kaWYKLSAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4K
LSAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1
ZSgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQ
UjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHVuZGVmaW5lZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGNhbkJlT3B0aW1pemVkR1BSID0gYXJndW1lbnRHUFI0OwogCi0gICAgc2l6ZV90IHN0YXJ0TG9j
YWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKTsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChz
dGFydExvY2FsKS5vZmZzZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoc3RhcnRPZmZz
ZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGppdC5zdWI2NChpdGVy
YXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBq
aXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5k
ZWZpbmVkR1BSKTsKLSAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBp
bml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRH
UFIpOwogICAgIHsKLSAgICAgICAgaml0LnN0b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAg
ICAgICBqaXQuc3ViNjQoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQ
Uik7Ci0gICAgICAgIGppdC5qdW1wKGluaXRMb29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBlbmRHUFIgPSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVu
ZGVmaW5lZEpTUiA9IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChs
b2NhbHNUb0luaXRHUFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVk
SlNSKSk7CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7
CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNp
emVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVk
SW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BS
KTsKKyAgICAgICAgaml0LnN1YlB0cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRH
UFIpOworICAgICAgICBqaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmlu
ZWRKU1IpOworCisgICAgICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAg
SnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BS
LCBlbmRHUFIpOworICAgICAgICB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmlu
ZWRKU1IsIEFkZHJlc3MoaXRlcmF0b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1
c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBq
aXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0
KTsKICAgICB9Ci0gICAgaW5pdERvbmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJh
cnJpZXIobV9jb2RlQmxvY2spLgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0
aW1pemVkR1BSLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAg
ICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwg
YXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6
ZWRHUFIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0s
IGFyZ3VtZW50R1BSMSk7CisgICAgaml0LnB1c2hUb1NhdmUoY2FuQmVPcHRpbWl6ZWRHUFIpOyAv
LyBzYXZlIChjYWxsIGFyZ3VtZW50cyBiZWxvdyBhcmUgYWxsIGluIHJlZ2lzdGVycywgc28gb2sg
dG8gc3RhY2sgdGhpcykKKyAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZz
ZXQgMC4KKyAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldy
aXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3BlcmF0
aW9uV3JpdGVCYXJyaWVyQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0
LnBvcFRvUmVzdG9yZShjYW5CZU9wdGltaXplZEdQUik7IC8vIHJlc3RvcmUKIAotICAgIGppdC5t
b3ZlKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIHJl
c3RvcmUuCi0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVu
LmxpbmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEzMzYsMTEgKzEyODcsMzAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hh
bmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5i
cmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9m
ZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAgICBqaXQuY29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7CiAgICAg
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0
aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBh
cworICAgICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRz
IGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQg
YnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQUkluZm8g
dm1Qb2ludGVyQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJJbmZvIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRH
UFIyIH07CisjZWxzZQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHZtUG9pbnRlckFyZ0dQUiB7
IEdQUkluZm86OmFyZ3VtZW50R1BSMCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlSW5kZXhCaXRzQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisjZW5kaWYKKyAg
ICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cigmdm0pLCB2bVBvaW50ZXJBcmdHUFIpOworICAg
ICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BSKTsK
KwogICAgICAgICBvcGVyYXRpb25PcHRpbWl6ZUNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaml0LnBvcChH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIHRhcmdldFBDCisgICAgICAgIGppdC5wb3AoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsgLy8gZGF0YUJ1ZmZlciAodW51c2VkLCBidXQgbmVlZHMg
cG9wcGluZyB0byByZXN0b3JlIHN0YWNrKQorI2VuZGlmCisKICAgICAgICAgc2tpcE9wdGltaXpl
LmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUikpOwogICAgICAg
ICBqaXQuZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwogCkBAIC0xMzQ4LDExICsxMzE4LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKQEAgLTEzNjMsNyArMTMyOSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRp
ZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTU3NCw1NyArMTUzOSw0MiBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVu
dEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIGFyZ3VtZW50
R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjM7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7CiAKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tU
cmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgp
LmdldENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJh
cHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
I2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYg
Q1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWly
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BS
ID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDaGVja1Ry
YXBzOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcKICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7Ci0gICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRp
b24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBl
eGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwor
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJ5dGVjb2RlT2Zmc2V0R1BSLCBnbG9iYWxPYmpl
Y3RHUFIpKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVi
cCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwor
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGds
b2JhbE9iamVjdEdQUik7CisgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5j
YWxsKE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
KworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4
Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0
Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBv
cF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDQxZTc1Zjc1NmIwZmM4NDUxMzVhNjQwNjIxMGZj
NmZlOGM0MDc2MS4uZDRiODc1YmRjZjExNGVkYzY4NzNmZjU2NjFmMGY1ZjVjYTBkNGRmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5j
bHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRpcmVjdEFy
Z3VtZW50cy5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0xMDEsNTEgKzEwMiwy
MiBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUm
IGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGlmICghaGFzQW55U2xvd0Nhc2VzKGl0
ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0g
ICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRl
eCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgc3RhdGljX2Fzc2VydCghQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVybGFwcyhhcmc0SlNSKSk7Ci0gICAgbW92ZVZhbHVl
UmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiwgYXJnNEpTUik7Ci0g
ICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLCBhcmcz
SlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBl
OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBhbHJlYWR5IHVz
ZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKSA9PSByZWdU
MSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTE1NSw4ICsxMjcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8UwogICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9t
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNjQsMzUgKzEzNSwzNSBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1By
b2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0
LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9u
IGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3By
ZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0yMDEsMTAgKzE3MiwxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMSwyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgQVNTRVJUKGhhc0Fu
eVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJ
VEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107
Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBi
YXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHks
IHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAg
ICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rp
b24pOwotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0
dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsg
Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAv
IEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQg
dGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgpAQCAtMjg2LDM0ICsyMzEsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAg
ICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0K
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1l
bnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0
LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9u
IGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0
ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMzIx
LDkgKzI2Niw5IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUu
bV9icmFuZDsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsKQEAgLTM1NCw0NiAr
Mjk5LDIxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWCiB7CiAgICAgVU5VU0VEX1BBUkFNKGN1
cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAg
SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vz
c2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7Ci0K
LSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJy
YW5kT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5k
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxv
YWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2JyYW5kLCBicmFuZEpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgYnJhbmRKU1IpOwotI2Vsc2UKLSAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRv
ciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6U2xv
d1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBh
bHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2
YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1Iu
cGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQ
UjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5j
dGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpB
cmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC00MDQsOSArMzI0
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJh
bmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC00MjgsNDkgKzM0OCwy
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBl
bmQoZ2VuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKLSAg
ICBVTlVTRURfUEFSQU0oYnl0ZWNvZGUpOwotCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2Vu
ZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNz
SW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwg
YmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2JyYW5kLCBi
cmFuZEpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgYnJh
bmRKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFBy
aXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1tt
X3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlByaXZhdGVCcmFuZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVC
cmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46
OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC00ODMsMTkgKzM3Nywy
MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVl
OwogCi0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpw
cm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOworICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxlR1BSKTsKLSAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCAvKiBzY3JhdGNo
R1BSOiAqLyBzdHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG51bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNz
VHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
QEAgLTUyOSw3NiArNDI0LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRf
YnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6
OnN0cmljdCgpOwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAg
ICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVj
bWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAgaWYgKGlzRGlyZWN0
KQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4o
KSk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRC
eVZhbD4oKSk7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNb
bV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRC
eVZhbFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGlmIChpc0RpcmVj
dCkKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6
Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVsc2UKLSAgICAgICAg
bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
dXRCeVZhbD4oKSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCks
IHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2Zp
bGVHUFIpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFB1
dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICAvLyBUaGV5IGFyZSBjb25m
aWd1cmVkIGluIHRoZSBmYXN0IHBhdGggYW5kIG5vdCBjbG9iYmVyZWQuCi0gICAgLy8gY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdU
MjsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSByZWdUMzsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC02MDYs
MzkgKzQ1MiwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0b2luID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0
QnlWYWxTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHJlZ1Q1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
ID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7Ci0gICAgewotICAgICAgICBSZWdpc3Rl
clNldCB1c2VkKGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJvZmlsZUdQUik7Ci0g
ICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNCkpOwotICAgICAgICBBU1NFUlQoIXVz
ZWQuY29udGFpbnMocmVnVDUpKTsKLSAgICB9CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisg
ICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0
aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxl
R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9p
bj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
LSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxz
ZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisK
KyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CkBAIC02NDcsMTAgKzQ5MCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2
YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC02NzksNTYgKzUy
MiwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91
bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLQotICAg
IEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgr
K107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
LQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51
bGxwdHIpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQ
dXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwog
Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcg
dmFsdWVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVn
VDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8v
IFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGgg
dGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0
aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC03MzYsMzQgKzU1MCwzOSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRp
bWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9h
ZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0
eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpnbG9i
YWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CiAKKyAgICBqaXQuZW1pdENUSVRo
dW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHJlZ1Q0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1
dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRydXN0ZWRJbW1QdHIobnVs
bHB0cikpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0aGlzIHJlZ2lzdGVyIGlzIG5lY2Vz
c2FyeSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwKKyAgICAvLyB0byBub3QgY2xv
YmJlciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwgYW5kIGlzIG90aGVyd2lzZSBoYXJt
bGVzcy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBwcm9maWxlR1BSKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdGlvbj4oc3R1
YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1Is
IHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAK
LSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtODQxLDEwICs2NjAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC04NzUsNjIgKzY5NCwzNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgr
K107CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJ
ZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50
R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlk
UmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9h
ZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBib3hCb29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCkBAIC05MzgsMzMgKzczMSwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1
ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1l
bnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOworICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93
T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Cisg
ICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigp
ID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZp
YSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGppdC5ib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAKLSAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAg
ICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBU
YWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtOTcz
LDExICs3NjksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC0xMDEwLDYzICs4MDYsMzYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
ZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OworCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0g
YXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCBiYXNlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkgPT0gR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAg
LTEwNzQsMzMgKzg0MywzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVs
QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjplY21h
TW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9
IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25E
ZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGds
b2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIGVjbWFNb2RlR1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQo
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEs
ICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAg
ICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVh
bihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAg
IGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2Vw
dGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNl
cHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
ZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTA5LDkgKzg4MSw5IEBAIHZvaWQgSklU
OjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTExMzgs
NDkgKzkxMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5
R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygp
KTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7CisgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsK
KworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHBy
b3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBl
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisg
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNS
ID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTExOTEsOSArOTQxLDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTIxOSw0OSAr
OTY5LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlu
a2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0K
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsK
KyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZz
ZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyNzIsMTUgKzEwMDAsMTUgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNl
OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNo
R1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKLSAgICAK
LSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKKworICAgIGlmICgqaWRlbnQgPT0gdm0oKS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJvbU1l
dGFkYXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0
YSgpICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwog
ICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSks
IHNjcmF0Y2hHUFIpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoCkBA
IC0xMzEyLDUxICsxMDQwLDY2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0g
ICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRz
W21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zm
c2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRpY19hc3Nl
cnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBj
YW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKKyAgICAv
LyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5n
IGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgLy8gREZHL0ZUTCBt
YXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hp
Y2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlH
UFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmxvYWRQ
dHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIp
OworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkg
PT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlh
IFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBl
eGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAo
KTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmso
ZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY1LDEwICsxMTA4LDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1ZSZWcgPSBieXRl
Y29kZS5tX3RoaXNWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAt
MTM5NSw5NiArMTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQotewotICAgIC8v
IFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGgg
dGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0
aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9u
cyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAot
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQot
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBh
cmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7Ci0KLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAg
ZWxzZQotICAgICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9p
ZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRCeUlkV2l0aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAg
SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9n
ZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdp
dGhUaGlzPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRo
VGhpc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRX
aXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6
cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwg
cHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQg
YnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUg
SklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQg
Z2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CkBAIC0xNDkyLDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOwor
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3Bl
cmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSByZWdUMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
aml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsIHByb3BlcnR5R1BSKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0
byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5r
RXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsK
KyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFy
ZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTUzNCwxMCArMTIxMywxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICAvLyB0byBqdXN0IGFmdGVyIHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVu
IGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJlZ2luJywgYW5kIHdlIGdlbmVyYXRlIGNv
ZGUKICAgICAvLyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVyZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0
IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhpcy4KIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2YWx1ZUpTUik7CkBAIC0xNTYxLDcgKzEy
NDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7IC8vIFdlIG1pZ2h0IE9TUiBleGl0IGhl
cmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkgcmVzZXQgU1AKICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7Ci0gICAgCisKICAgICAvLyBJQyBjYW4g
d3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNl
bGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2Vs
aW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQpAQCAtMTU3MCw1NiArMTI0OSwzMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7Ci0gICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKLSAg
ICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZElu
ZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9u
PigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOworCisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQp
LCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0ZXhwciBH
UFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09
IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
dW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKwor
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBi
eSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBK
SVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBn
bG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
QEAgLTE2MjcsMzUgKzEyODAsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0
eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9y
IGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY2NCw5ICsxMzE3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTY5MSw1MSArMTM0NCwyOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJ
bmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4
YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0
aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xNzQ2LDExICsxMzc3LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
QEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
bkJ5VmFsPigpOwotCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1tt
X2luQnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2Zp
bGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQ
UigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BS
KTsKLSAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkg
d2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEg
ZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lz
dGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlw
ZSkKIHsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eU9yQnJhbmQsIHByb3BlcnR5
SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZp
cnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93
KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNz
VHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlW
YWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAw
PigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNl
bHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OnZhbHVlKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xOTEyLDEyICsxNDkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0
ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5h
bWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworICAgIGVtaXRIYXNQcml2
YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0xOTI2LDEyICsxNTA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhh
c1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFu
ZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBi
eXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworICAgIGVtaXRI
YXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9
IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAg
IEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRl
eCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE5NDksNyArMTUyNCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAvLyBJZiB3ZSBwcm9maWxlIGNlcnRhaW4gcmVzb2x2ZSB0eXBlcywgd2UncmUg
Z3VhcmFudGVlZCBhbGwgbGlua2VkIGNvZGUgd2lsbCBoYXZlIHRoZSBzYW1lCiAgICAgLy8gcmVz
b2x2ZSB0eXBlLgogCi0gICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSAK
KyAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIGxvYWRQ
dHJGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6b2Zmc2V0
T2ZMZXhpY2FsRW52aXJvbm1lbnQoKSwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVsc2UgewogICAg
ICAgICB1aW50MzJfdCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm1ldGFk
YXRhKCkub2Zmc2V0SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKQEAgLTE5NjQsMjMgKzE1Mzks
MjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gY29kZTsKICAgICAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xv
c3VyZVZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNv
bHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRD
VElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgICAg
IGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVz
b2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAg
ICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5r
PENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHBy
b2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdl
dENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAg
ICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8
R2xvYmFsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9w
UmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5
Pik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNh
bFZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5n
ZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7
CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVy
YXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2Ug
aWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29s
dmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAg
ICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1
bms8R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2Ug
aWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVz
b2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsK
KyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogCiAgICAgICAgIGVt
aXROYWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CkBA
IC0yMTkwLDcgKzE3NjUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBz
Y29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAgICAgUmVzb2x2ZVR5cGUgcHJvZmlsZWRSZXNvbHZl
VHlwZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fcHJvZmlsZWRDb2RlQmxvY2spLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBB
U1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVjb2RlSW5kZXgp
ID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0yMjA3LDIxICsxNzgxLDIxIEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNvZGU7
CiAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgY29k
ZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXI+
KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3Bl
VGh1bms8Q2xvc3VyZVZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0g
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRD
VElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAg
IGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICBjb2Rl
ID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7
CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRo
dW5rPEdsb2JhbFZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0
dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgIGVsc2Ug
aWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgIGNvZGUg
PSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0
eT4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2Nv
cGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2Vu
ZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKKyAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4
aWNhbFZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElT
dHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cz4pOwogICAgIGVsc2UKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdl
dEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElT
dHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKIAogICAgIGVtaXRO
YWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwpAQCAtMjI1Niw3ICsxODMwLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2Ny
YXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3ZhckluamVjdGlvbldh
dGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJh
bmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNoR1BSLCBXYXRjaHBvaW50U2V0OjpvZmZzZXRPZlN0
YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKICAgICB9OwotICAgIAorCiAg
ICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAg
ICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpA
QCAtMjU5MCwyNyArMjE2NCwyMCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3Bl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGlmIChw
cm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgewogICAgICAgICAvLyBJZiBhbnkgbGlu
a2VkIENvZGVCbG9jayBzYXcgYSBNb2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtlZCBDb2RlQmxvY2tz
IGFyZSBndWFyYW50ZWVkCiAgICAgICAgIC8vIHRvIGFsc28gc2VlIE1vZHVsZVZhci4KLSAgICAg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJv
cik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRo
X3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKICAgICAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UgewotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICAgICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3VtZW50R1BSMCwgY3Vy
cmVudEluc3RydWN0aW9uKTsKLSNlbHNlCi0gICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAg
ICAgICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKICAgICAgICAgQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0
aW9uQXQobV9ieXRlY29kZUluZGV4KSA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0VG9TY29wZTo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CiAKLSAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSNlbmRpZgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKKyAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwogICAgIH0KIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJh
dG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rp
b24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBA
IC0yNjE5LDQzICsyMTg2LDMzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVu
dEdQUjM7CiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgY29uc3RleHByIEdQUlJlZyBpbnN0cnVjdGlvbkdQUiA9IGFyZ3VtZW50R1BSMTsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0VG9TY29wZTo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7OyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0g
YXJndW1lbnRHUFIzOyAvLyBPbmx5IHVzZWQgYXMgc2NyYXRjaCByZWdpc3RlcgorICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBjb2RlQmxvY2tHUFIpKTsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxv
Y2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0
LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9u
ID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAot
I2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxv
Z3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAg
SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0g
dm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0
X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtMjY2Myw3ICsyMjIwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21f
YXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBh
cmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKICAgICBpbnQgaW5kZXggPSBieXRlY29k
ZS5tX2luZGV4OwotICAgIAorCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYXJn
dW1lbnRzLCByZWdUMCk7CiAgICAgbG9hZFZhbHVlKEFkZHJlc3MocmVnVDAsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25v
d24+KSksIGpzUmVnVDEwKTsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCBq
c1JlZ1QxMCk7CkBAIC0yNzQzLDcgKzIzMDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJv
cGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIAogICAgIGdlbmVyaWNDYXNlcy5saW5rKHRo
aXMpOwotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJh
dG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogCiAgICAgZG9uZUNhc2VzLmxpbmsodGhp
cyk7CkBAIC0yODA2LDcgKzIzNjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIG9wZXJhdGlv
bkNhc2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9u
ZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpA
QCAtMjgyNCwxMyArMjM4MSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEp1bXBM
aXN0IGRvbmVDYXNlczsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxp
bmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNl
bGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMSA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJz
OjpzY3JhdGNoMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVFbnVt
ZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDMgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaDM7
CisgICAgY29uc3RleHByIEdQUlJlZyByZXN1bHRHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RW51bWVyYXRvckdldEJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlW
YWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnN0dWJJbmZvR1BSOworICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRv
ckdldEJ5VmFsOjpzY3JhdGNoMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6c2NyYXRjaDI7CisgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9y
R2V0QnlWYWw6OnNjcmF0Y2gzOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG1vZGUsIHNjcmF0Y2gzKTsKQEAg
LTI5MDYsNyArMjQ2Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBCeXRlY29kZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lk
IEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1
bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3By
b3BlcnR5SW1wbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBl
IGdlbmVyYWxDYXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2Rz
dDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYs
NyArMjQ5Myw3IEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGlu
ayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBnZW5lcmFsQ2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBnZW5lcmFsQ2FzZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAg
IGRvbmUubGluayh0aGlzKTsKQEAgLTI5NDQsMzEgKzI1MDEsMzEgQEAgdm9pZCBKSVQ6OmVtaXRf
ZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3Jf
aGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFs
KTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5
X3ZhbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4o
KSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJh
dG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIApAQCAtMjk3NywxNSArMjUzNCwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVy
YXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24q
KQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJ
bnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZh
ZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1
MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAg
LTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xv
d1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lz
ZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzks
NiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3Rp
U2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hl
ciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkp
IHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9z
dEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFs
KGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1
MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2Zj
ZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgK
QEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRU
aHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5l
cmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93
UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0
aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBo
b3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01K
SVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0
N2EwYTRlMTNkNzI4Yi4uMzJmMDViODNmNTI5ZTg5NWRiZDhlNjJkOWY3Y2MyNTA0MzIwOGMzNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsNyAr
MzYsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorbmFtZXNwYWNlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
SklUOjphcmd1bWVudEdQUjM7Cit9CiAKIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsK
QEAgLTQ0LDkgKzQ2LDcgQEAgdm9pZCBKSVRTbG93UGF0aENhbGw6OmNhbGwoKQogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9qaXQtPm1fYnl0ZWNv
ZGVJbmRleCk7CiAKLSAgICBVTlVTRURfVkFSSUFCTEUobV9wYyk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKLSAgICBtX2pp
dC0+bW92ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0
UmVnKTsKKyAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBtX2ppdC0+ZW1pdE5ha2VkTmVhckNhbGwodm0uaml0
U3R1YnMtPmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKHZtLCBtX3Nsb3dQYXRoRnVuY3Rpb24pLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiB9CiAKQEAgLTU0LDQ2ICs1NCw0OSBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVU
aHVuayhWTSYgdm0sIFNsbwogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7Ci0KLSNpZiBD
UFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShB
Uk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihDQ2Fs
bEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rl
cik7Ci0jZW5kaWYKLQotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2FsbEhl
bHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmVtaXRDVElU
aHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKIAotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2lu
dGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklUOjph
cmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2lmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgLy8gT24gV2luZG93cywgcmV0dXJuIHZhbHVl
cyBsYXJnZXIgdGhhbiA4IGJ5dGVzIGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRl
ciBwYXNzZWQgYXMKKyAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJn
dW1lbnRzIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1l
ZCBieSBnZW5lcmF0ZWQgY2FsbCBzaXRlIGJlbG93Iik7CisgICAgaml0LnN1YlB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJh
bWVBcmdHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBw
Y0FyZ0dQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIGNhbGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5
dGVjb2RlT2Zmc2V0R1BSKSk7CisjZWxzZQorICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1l
QXJnR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNB
cmdHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoY2FsbEZyYW1lQXJnR1BSLCBwY0FyZ0dQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpKTsKKyNlbmRp
ZgorICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsRnJhbWVBcmdH
UFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBwY0FyZ0dQUik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHBjQXJnR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9p
bnRlcigpKSwgcGNBcmdHUFIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIHBj
QXJnR1BSKTsKIAogICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
ZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0
LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJz
OjpsaW5rUmVnaXN0ZXIpOworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgaml0
LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUjIpOyAvLyBjYWxsRnJhbWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsK
IAotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZl
c0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxv
Z3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZm
ZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwu
aAppbmRleCA4OTlhMjkwMGZlZGUzN2RkMGVhNWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVl
Y2E2ZTgyNjUyYTkzNmFlMDk2NGIwNDQzZjYzNDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2xvd1BhdGhDYWxsLmgKQEAgLTM1LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSklUU2xvd1BhdGhDYWxsIHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwo
SklUKiBqaXQsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0
aEZ1bmN0aW9uKQorICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlv
biBzbG93UGF0aEZ1bmN0aW9uKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Ns
b3dQYXRoRnVuY3Rpb24oc2xvd1BhdGhGdW5jdGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAg
IHsKICAgICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAg
fQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVu
ayhWTSYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCi0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0KLSAgICBKSVQ6OkNhbGwgY2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+
dXBkYXRlVG9wQ2FsbEZyYW1lKCk7Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAg
ICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjAp
OwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3Vt
ZW50R1BSMSk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwg
SklUOjphcmd1bWVudEdQUjIpOwotI2Vsc2UKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxs
RnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShK
SVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAg
ICAgICBKSVQ6OkNhbGwgY2FsbCA9IG1faml0LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlv
bik7Ci0KLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9w
KEpJVDo6cmVnVDApOyAvLyB2UEMKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8g
Y2FsbEZyYW1lIHJlZ2lzdGVyCi0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdU
MSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQt
PmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0Owog
ICAgIFNsb3dQYXRoRnVuY3Rpb24gbV9zbG93UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3Ry
dWN0aW9uKiBtX3BjOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5
ZTFjYTIzNWU0ZGJkZWEzMDkzM2IwLi4wNzYwNzYxMDNlMDM0YWRiN2FmMTJmNThlZjdmZjQwODg4
ZGFjMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCkBAIC00OSw5ICs0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
b3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAt
NTksOCArNTcsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CkBAIC03Nyw4ICs3Myw2IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9
CiAKLSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIENDYWxsSGVscGVycyBqaXQ7CkBAIC0xMDEsOCArOTUsNiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNl
cHRpb25HZQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgInBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb24iKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwpAQCAtMTEzLDggKzEwNSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICAgICAg
Ly8gRXhjZXB0aW9uIGZ1enppbmcgY2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2Ug
bmVlZCB0byBwcmVzZXJ2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaGVyZS4KICNpZiBDUFUoWDg2XzY0
KQogICAgICAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
CisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQogICAgICAgICBqaXQucHVzaFBh
aXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5r
UmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhl
bHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJldHVybkFkZHJlc3NS
ZWdpc3Rlcik7CisjZWxzZQorIyAgICAgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRm
b3JtIgogI2VuZGlmCiAgICAgfQogCkBAIC0xMjMsOCArMTE5LDEyIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQog
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKSB7CiAjaWYgQ1BV
KFg4Nl82NCkKICAgICAgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUo
QVJNNjQpCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQogICAgICAgICBqaXQu
cG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OmxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgaml0LnBvcFBhaXIoQ0Nh
bGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpyZXR1cm5BZGRy
ZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICAgICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBw
bGF0Zm9ybSIKICNlbmRpZgogICAgIH0KICAgICBqaXQucmV0KCk7CkBAIC0xNDMsOCArMTQzLDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZv
aWQgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRl
ckdQUiwgVGFnVHlwZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuaAppbmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUx
Li4xMDU0OTEwNGVmNjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVu
dW0gY2xhc3MgQ2FsbE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjsKIGNsYXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZN
Jik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQ
cmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhH
ZW5lcmF0b3IoVk0mKTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsK
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaAppbmRleCA2NjRiMGUyOWY2YmEzY2U0ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3
NDA5YmM5YWU4NmMzNDI4ZTYyZWMyMGE0NTBhZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKQEAgLTgzOSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05f
VkFMSURBVElPTiAxCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYm
ICFPUyhXSU5ET1dTKSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2Fu
IHVzZSB1cCB0byA2IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02
NCBsaWtlIGZlYXR1cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0
Zm9ybXMKLSAgIHRoYXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4K
LSovCi0jZGVmaW5lIEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUg
RU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448400</attachid>
            <date>2022-01-05 10:20:47 -0800</date>
            <delta_ts>2022-01-05 10:43:20 -0800</delta_ts>
            <desc>cleanup 2</desc>
            <filename>bug-233822-20220105182045.patch</filename>
            <type>text/plain</type>
            <size>279095</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggYjk4NzEyMTc1YzlhN2Q5ZTQ0MzdmZjM1NzI5YTg0YzQxZWU4YzY0Zi4uMjUxYjll
NDU5OTZiM2YyMTA3Mjc5NTc2YTU0ZTE5MjhmMWY0MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtODQzLDYgKzg0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0
L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAg
ICBqaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5oCiAgICAgaml0L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMDUyNjNmZTYwNzE2OWJjZDJkOTcx
MDk5OGM0ZGMyOTIwNThhNzdlLi5mMDI4YWEwN2I0MWZkN2RkZDU3OGEwZWZjZjRmOGMwZjBkODY2
NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAK
IAkJNzIxMzFCRkEyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzEx
NENGIC8qIEpJVFBsYW5TdGFnZS5oICovOyB9OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0Yg
LyogSklUV29ya2xpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxp
bmVzLmggKi87IH07CiAJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBs
YW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5
OEY1MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAw
RjcyODJEQkNEQjEwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2
N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCAqLzsgfTsKIAkJNzI2QjkxQjAyNjU4MTY1MzAw
OEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyogSklUV29ya2xp
c3RUaHJlYWQuaCAqLzsgfTsKIAkJNzI2QjkxQjMyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBp
bGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI2QjkxQUIyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNkI5MUI3MjY1
ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBRjI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxhbi5oICov
OyB9OwpAQCAtNDE4Miw2ICs0MTgzLDcgQEAKIAkJNzIxMzFCRkIyNjU4N0VGQTAwNzExNENGIC8q
IEpJVFdvcmtsaXN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRXb3JrbGlzdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzOTk4
RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlbGluZUpJVFBsYW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0Yg
LyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI2QjkxQTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0VGhyZWFkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUFBMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFBsYW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIgLyogSklU
Q29tcGlsYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENv
bXBpbGF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzNCw2ICs2
NDM2LDcgQEAKIAkJCQk1MkREMDAwNjI2RTAzOUIzMDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2Rl
LmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5j
cHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5o
ICovLAorCQkJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVy
cy5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guY3Bw
ICovLAogCQkJCTBGNjRCMjcwMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guaCAqLywK
IAkJCQk2NUI4MzkyRDFCQUNBOUQzMDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuY3BwICovLApA
QCAtOTc2OCw2ICs5NzcxLDcgQEAKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNX
aWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJERDAwMDgyNkUwMzlCOTAwNTRFNDA4IC8qIEJh
c2VsaW5lSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzIzOTk4RjcyNjVEQkNEQjAwNTc4
NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0MDAwRjcyODJE
QkNEQjEwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNUU4OUZEMjVDNTBGODcwMDcxRUUx
RSAvKiBCaWdJbnQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBiZjZmYmUzMDViM2ZkNGQ1
NmFhYTg1Mjg5Y2UzMTMxNWE4NzM1YmU1Li5mMWZmNjM5NGM5ZjRlZWQ1MWMxMDBjNWU0YzI3ZWY2
OGYwZGI1YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCkBAIC02NzQsMTIgKzY3NCwyMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBzdWIzMihzcmMsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lz
dGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMy
KGltbSwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBs
ZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHN1YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVz
dGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoVHJ1
c3RlZEltbTMyKGltbSksIGRlc3QpOwpAQCAtMTAwNywxMiArMTAxNywyMiBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBzdWI2NChzcmMsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQg
c3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgc3ViUHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIHN1YjY0KGltbSwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIo
UmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN1YlB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgc3ViNjQoVHJ1c3RlZEltbTY0KGltbSksIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBjZDEyOWY2
ZDlhODdlMDY5YWVjZmE0MjRhZmU3MGYwZjExNWNkMTQ1Li4xMzY2ZGQ1MTJiYjE2MjM0MzhjN2Y5
ZmVhZDllYzJmNjJjNDczMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogdXNpbmcgQXNzZW1ibGVyID0gVEFSR0VUX0FTU0VNQkxFUjsKIAogY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewotICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVy
ID0gQVJNUmVnaXN0ZXJzOjppcDsKLSAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgYWRk
cmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CisgICAgc3RhdGljIGlubGluZSBj
b25zdGV4cHIgUmVnaXN0ZXJJRCBkYXRhVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjppcDsK
KyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0
ZXIgPSBBUk1SZWdpc3RlcnM6OnI2OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBBUk1SZWdpc3Rl
cnM6OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7
CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgQVJNUmVnaXN0ZXJzOjpGUERvdWJsZVJlZ2lz
dGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OwogICAgIGlubGluZSBBUk1S
ZWdpc3RlcnM6OkZQU2luZ2xlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkgeyBy
ZXR1cm4gQVJNUmVnaXN0ZXJzOjphc1NpbmdsZShmcFRlbXBSZWdpc3Rlcik7IH0KIAogICAgIC8v
IEluIHRoZSBUaHVtYi0yIGluc3RydWN0aW9uIHNldCwgaW5zdHJ1Y3Rpb25zIG9wZXJhdGluZyBv
bmx5IG9uIHJlZ2lzdGVycyByMC1yNyBjYW4gb2Z0ZW4KQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9IHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfR1BfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUp
IH0pLnNpemUoKTsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0ZQX1JFR0lTVEVSKERVTU1ZX1JFR0lT
VEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAjdW5kZWYgRFVNTVlfUkVHSVNURVJfVkFMVUUKLSAgICBS
ZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlcigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7
IH0KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3Rl
cigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0KIAogICAgIE1hY3JvQXNzZW1ibGVy
QVJNdjcoKQogICAgICAgICA6IG1fbWFrZUp1bXBQYXRjaGFibGUoZmFsc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
aW5kZXggMDQ1ZGVmZWRiMTU0ZmQwODlhMmI2OGRjZDYzMTgxMTk3MTAwMWUyMi4uYjJlOTExYWEx
MzY2M2EyNTA5ODQwYTA1Njg4NDEyZjI5MjhlZjQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtODA0LDcg
KzgwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnFfaXIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3Vi
NjQoUmVnaXN0ZXJJRCBhLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtb3ZlKGEsIGRlc3QpOworICAgICAgICBzdWI2NChpbW0sIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggMDBhNTU0OTdmZDYzYWRlYTljZjVm
MWJmMGJjNmIxYmMxNWE4NDBkMi4uNzdlNGE2ZTllZjNmOGFjNzJhNWRkMGM3ODI4YTBiZGNlYzM1
ZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJhc2VsaW5l
SklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCIKICNpbmNs
dWRlICJDYWxsTW9kZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgpAQCAtNDcsMTQgKzQ4
LDYgQEAgZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogc3RydWN0IENhbGxGcmFtZVNodWZmbGVE
YXRhOwogc3RydWN0IFVubGlua2VkQ2FsbExpbmtJbmZvOwogCi0jaWYgRU5BQkxFKEpJVCkKLW5h
bWVzcGFjZSBCYXNlbGluZUNhbGxSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIGNh
bGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Ci1jb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQ
UiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07Ci19Ci0jZW5kaWYKLQogY2xhc3MgQ2FsbExpbmtJbmZvIDogcHVi
bGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKIHB1YmxpYzoKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNDYyLDkgKzQ1NSw5IEBAIHB1
YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlR1BS
OyB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgeyByZXR1
cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFI7IH0KLSAgICB2b2lkIHNl
dENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSB7IFJFTEVBU0VfQVNTRVJU
KGNhbGxMaW5rSW5mb0dQUiA9PSBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQ
Uik7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIoKSB7IHJldHVybiBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlR1BSOyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUjsgfQorICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BS
KEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BS
ID09IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOyB9CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCmluZGV4IDRiOWE0OTU5ZmQ4ZmYzNTFkMjlkYWZjYTA5NzI0NTNiN2Jj
MTY3NjYuLjk2YmUzODM3YTFhZjllNzI1ZDI1MjRmNGVmZTY4ZDYxYWFjYzIxMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cApAQCAtMjMzLDIzICsyMzMsMTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmVtaXRF
eHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGlu
ayhqdW1wVG9PU1JFeGl0RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxIYW5kbGVyLm5hdGl2ZUNv
ZGUpOwogICAgICAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIgPSBqaXQtPmp1bXAoKTsKICAgICAgICAgVk0qIHZtID0gJm1fdm07CiAgICAgICAgIGppdC0+
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsK
ICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwg
Q29kZUxvY2F0aW9uTGFiZWwodm0tPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgICAgIH0pOwotI2Vsc2UKLSAg
ICAgICAgaml0LT5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX3ZtKSk7Ci0gICAgICAg
IGppdC0+cHJlcGFyZUNhbGxPcGVyYXRpb24obV92bSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBsb29rdXBFeGNlcHRpb25IYW5kbGVyQ2FsbCA9IGppdC0+Y2FsbChPcGVyYXRpb25QdHJU
YWcpOwotICAgICAgICBqaXQtPmFkZExpbmtUYXNrKAotICAgICAgICAgICAgWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBq
aXQtPmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIobV92bSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCmluZGV4IGQyMTA0MTc0MmJkNDk1YjY2ZWNhNDUwOGQ3M2I4ZDM4Y2FjZmYxNWMuLmY0MWVm
ZTYyNzUzODg3NTRiYzZlYWM4YWUzYzRmMzg3YmJmNjRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjYsOCAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkNhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgogI2luY2x1ZGUgIlJlcGF0Y2gu
aCIKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgdXNl
ZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKICAg
ICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkICYmIHVubGlua2VkU3R1Yklu
Zm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgLy8gRm9yIGl0ZXJhdG9y
X25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJkb250Q2xvYmJlckpTUiIgcmVnaXN0ZXIgZWl0
aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAgfQogCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjYsNzggKzUyNiw3OCBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewogICAgIGNhc2UgQWNjZXNz
VHlwZTo6RGVsZXRlQnlWYWw6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNl
OwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2
YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lRGVs
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQ
UiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUi50
YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnRhZ0dQ
UigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRl
QnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOwot
ICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0g
QmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNl
VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1IudGFnR1BSKCk7
CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwor
ICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0
UGF0aDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6R2V0QnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRl
TmFtZToKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRh
Z0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAg
ICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHYucHJv
cGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNS
LnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlm
aWVyID0gZmFsc2U7CiAgICAgICAgIHByb3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxzZTsKLSAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6dmFsdWVKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVy
czo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm90b3R5cGVHUFIgPSBC
YXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6
dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdz
LnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6dmFsdWVKU1Iu
dGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5z
dGFuY2VvZjo6dmFsdWVKU1IudGFnR1BSKCk7CiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxp
ZEdQUlJlZzsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJl
Z2lzdGVyczo6cHJvdG9KU1IudGFnR1BSKCk7CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJvdG9KU1IudGFnR1BSKCk7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgogICAgIGNh
c2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWU6IAogICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFz
UHJpdmF0ZUJyYW5kOiAKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0g
ICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0
dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFnR1BS
KCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1
bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAg
ICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6SW5CeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgICAg
ICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxp
bmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQ
UiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsK
LSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNS
LnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
QnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkOgpAQCAtNjA1LDY1ICs2MDUs
NjUgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVj
dHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5
SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3Mu
dGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Cisg
ICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1Iu
dGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2Vu
ZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlz
OgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBiYXNlR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpy
ZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnRoaXNHUFIgPSBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhU
aGlzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICByZWdzLnRoaXNHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlz
Ojp0aGlzSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlk
V2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BS
ID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsK
LSAgICAgICAgdi50aGlzVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnRoaXNKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUi50
YWdHUFIoKTsKKyAgICAgICAgdi50aGlzVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6dGhpc0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwor
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICB2LnRo
aXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQ
dXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9
IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BSKCk7CisgICAgICAgIGJh
c2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6
dmFsdWVKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpQdXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lOgog
ICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAg
ICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0
dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CiAgICAgICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlB1dEJ5VmFs
KQotICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpwcm9maWxlR1BSOworICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZDoKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kOgogICAgICAgICBoYXNDb25zdGFudElk
ZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgdmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICByZWdzLmJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9
IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICByZWdzLmJyYW5kR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlBy
aXZhdGVCcmFuZDo6YnJhbmRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxp
ZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdi5icmFuZFRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OmJyYW5kSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZWIy
MGNlNjQ1YWYwYmI1ODQ1NWY2ODAzZThkNDcyNGE3NGE3MWY5NC4uNDlmY2FiOTQxMzkyMDA2Njgw
YzViNGJmMTcwZTk1ZGEzOWVlMzEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2ZSwgY29t
cGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGlmICgh
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewotICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMpOwotCi0g
ICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCku
dG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwot
ICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0KLSAg
ICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxl
ckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0K
LQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2Vw
dGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8g
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0
aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLQotICAgICAg
ICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwotCi0gICAgICAg
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBD
b2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjczLDEyICsyMzksMTAgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVs
KHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tz
V2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIo
aGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdFRodW5rID0g
dm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwogICAgIGF1
dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KG9zckV4aXRUaHVu
ay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUo
KQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRl
bShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpk
ZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMo
KTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRy
YW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3ICs0NDcsNiBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2Vu
ZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBjb21w
aWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAgICAv
LyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA0OTk3YmQ0YmI5MGU1OTM3MjI5
MGMwZWFiMjg2OGI2YzE4MTI5YTdhLi5hNzI4ZWZkODcxMmVjNWUwOWM2ZDc1NjFmNDI5NWY4ODcz
ZGQyMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBA
IC0zMTMsNyArMzEzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxpbmsoTGlua0J1ZmZlciYpOwog
ICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0aE9TUihjb25zdCBPU1JFeGl0JiwgU3Bl
Y3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7
CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2b2lkIGRpc2Fzc2VtYmxlKExpbmtCdWZm
ZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggOWI5
OGQ1NDc2MzE4Mzg2YWZiMmZlY2Y4ZWUxZDI2MDJhYWZhZGVlNy4uNDhhMTgwYjc0MGFhY2UzZmEw
MzE5MzcxZTVlMGJjNGZjOWM4MmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRl
LCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogCiAgICAgLy8gRW1pdCB0aGUg
ZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4Y2VwdGlvbkhhbmRsZXIgPSBqaXQubGFi
ZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0qIHZtUHRyID0gJnZtOwogICAgIGppdC5h
ZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm1QdHIt
PmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0Vu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIGppdC5qdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRkTGlua1Rhc2soCi0gICAgICAgIFs9XSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNh
bGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9u
SGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8
TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTCwgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
aW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQwOWEyYTViNTM1ZDBkOS4uMjhiZGVlM2Jh
NzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0u
dG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsQXJpdHlD
aGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGF1dG8g
bm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1
YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigw
KSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNlcHRpb24ubGluaygmaml0KTsKLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgICAgICAgICAgaWYgKEFTU0VSVF9F
TkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NCh2bS5hZGRyZXNzT2ZFeGNlcHRp
b24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDExICsxMDEsNyBAQCB2b2lkIGxpbmsoU3Rh
dGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1
Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spKTsKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoanVtcFRvRXhjZXB0
aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRp
b25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSkpOwotI2VuZGlm
CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKS5jb2Rl
KCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wcywgc3RhdGUu
Z2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA5ODJlNDVhYWFlNTZiMjZkMWY4NTllZTcyOGY2YmQ3
MjdmMzIzMzQzLi42MmJiNGFhNjkyMmQ0MjdhYmQ2NmI0OTk3ZTlkZmUzNWZjMzA2MGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE5NDUsNDkg
KzE5NDUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dEluc3Rh
bmNlTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCiAKLSAgICAvLyBDaGVja3Mg
dGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBHUFJSZWdzIGFuZCBKU1ZhbHVlUmVncyBkbyBub3Qgb3Zl
cmxhcC4gVXNlIHRoaXMgaW4gc3RhdGljCi0gICAgLy8gYXNzZXJ0aW9ucyB0byBlbnN1cmUgdGhh
dCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1hcCB0byB0
aGUgc2FtZQotICAgIC8vIGFyY2hpdGVjdHVyYWwgcmVnaXN0ZXIuCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcChBcmdz
Li4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwoMCwgYXJncy4uLik7IH0KLQotcHJpdmF0
ZToKLSAgICAvLyBCYXNlIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCkgeyByZXR1cm4g
dHJ1ZTsgfQotCi0gICAgLy8gR1BSUmVnIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1
c2VkLCBSZWdpc3RlcklEIGdwciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGdwcik7Ci0gICAgICAgIGlmICh1c2VkICYg
bWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG5vT3Zlcmxh
cEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0KLQotICAgIC8vIEpTVmFsdWVSZWdz
IGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBKU1ZhbHVlUmVncyBqc3IsIEFy
Z3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1hc2sgPSBub092ZXJsYXBJbXBs
UmVnTWFzayhqc3IucGF5bG9hZEdQUigpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICBtYXNrIHw9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci50YWdHUFIoKSk7Ci0jZW5kaWYKLSAg
ICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub092ZXJsYXBJbXBsUmVnTWFzayhSZWdpc3Rl
cklEIGdwcikKLSAgICB7Ci0gICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykKLSAgICAg
ICAgICAgIHJldHVybiAwVUxMOwotICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZ3ByKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgc2l6ZW9mKHVpbnQ2
NF90KSAqIENIQVJfQklUKTsKLSAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OwotICAgIH0KLQog
cHJvdGVjdGVkOgogICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjA2
NDQ3MmU0YTE1ZTgyYzg0ZmIwOWNiNGI4MjdhM2Q4MThjYTkyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oCkBAIC0wLDAg
KzEsNDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiR1BSSW5m
by5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25h
bWVzcGFjZSBCYXNlbGluZUpJVFJlZ2lzdGVycyB7CisKK25hbWVzcGFjZSBDYWxsIHsKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworfQorCitu
YW1lc3BhY2UgQ2hlY2tUcmFwcyB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7Cit9CisKK25hbWVzcGFjZSBFbnRlciB7CisgICAg
Y29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IEdQUkluZm86OnJlZ1QwOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gR1BSSW5mbzo6cmVnVDE7Cit9CisK
K25hbWVzcGFjZSBJbnN0YW5jZW9mIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMyB9Owor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEg
fTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BS
MCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpub25BcmdH
UFIxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiB7CisjaWYgQ1BVKE1JUFMpCisgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyCisjZWxzZQorICAgICAgICBKU1JJbmZvOjpqc1Jl
Z1QzMgorI2VuZGlmCisgICAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1Ig
eyBKU1JJbmZvOjpqc1JlZ1Q1NCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWVK
U1IsIHByb3RvSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSKSk7Cit9
CisKK25hbWVzcGFjZSBKRmFsc2UgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisKK25hbWVzcGFjZSBKVHJ1ZSB7CisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKK30KKwor
bmFtZXNwYWNlIFRocm93IHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KSwgMD4oKTsKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyksIDE+KCk7CisgICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IEdQUkluZm86Om5vbkFyZ0dQUjA7CisgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVp
cmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8g
c2xvdyBvcGVyYXRpb24iKTsKK30KKworbmFtZXNwYWNlIFJlc29sdmVTY29wZSB7CisgICAgY29u
c3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IEdQUkluZm86OnJlZ1QyOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NvcGVHUFIgPSBHUFJJbmZvOjpyZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KKworbmFtZXNwYWNlIEdldEZyb21TY29w
ZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IEdQUkluZm86OnJlZ1Q0Owor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSBHUFJJbmZvOjpyZWdUMjsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gR1BSSW5mbzo6cmVnVDM7CisgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNl
dEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KKworbmFtZXNwYWNl
IFB1dFRvU2NvcGUgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjI7Cit9CisKK25hbWVzcGFjZSBHZXRCeUlkIHsKKyAgICAvLyBS
ZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07
CisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBh
dGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
ZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qy
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUklu
Zm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJl
ckpTUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRo
IG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAg
ICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwg
c3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVu
ayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBz
bG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5SWRXaXRoVGhpcyB7
CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisK
KyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGgg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAg
IC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHRoaXNK
U1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIHRoaXNKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3Bl
cnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQor
fQorCituYW1lc3BhY2UgR2V0QnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGgg
RmFzdCBhbmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1Ig
eyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSBy
ZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwg
IlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSBy
ZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0
R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkg
dGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKKyNpZiBVU0UoSlNW
QUxVRTY0KQorbmFtZXNwYWNlIEVudW1lcmF0b3JHZXRCeVZhbCB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1Qw
IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworICAgIC8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sg
YW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCisgICAg
c3RhdGljX2Fzc2VydChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7CisgICAgc3RhdGlj
X2Fzc2VydChyZXN1bHRKU1IgPT0gR2V0QnlWYWw6OnJlc3VsdEpTUik7CisgICAgc3RhdGljX2Fz
c2VydChzdHViSW5mb0dQUiA9PSBHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSKTsKKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxIHsgR1BSSW5mbzo6cmVnVDMgfTsK
KyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiB7IEdQUkluZm86OnJlZ1Q0IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgeyBHUFJJbmZvOjpyZWdUNSB9
OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBQdXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNl
ZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUklu
Zm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQ
UiB7IGJhc2VKU1IudGFnR1BSKCkgfTsgLy8gUmV1c2luZyByZWdUMSBmb3IgYmV0dGVyIGNvZGUg
c2l6ZSBvbiBBUk1fVEhVTUIyCisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoYmFzZUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVk
IGZvciBEYXRhSUMiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUi5w
YXlsb2FkR1BSKCksIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJH
UFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBv
bmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBH
UFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9Owor
I2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNS
LCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChiYXNlSlNSLCB2YWx1ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVy
dHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9
CisKK25hbWVzcGFjZSBQdXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBG
YXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29u
c3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKKyNlbmRpZgorCisg
ICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07
CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2
YWx1ZUpTUiwgcHJvZmlsZUdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIp
OworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFj
ZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q1CisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQg
b24gcmVnaXN0ZXJzIG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdh
eSB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNo
UmVnaXN0ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNWQUxVRTMyXzY0CisgICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgZ2xvYmFsT2JqZWN0R1BSIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2Zp
bGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2Fs
bCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpT
UiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAg
fQorfQorCituYW1lc3BhY2UgSW5CeUlkIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdldEJ5SWQ6OmJhc2VKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVz
dWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFIg
fTsKK30KKworbmFtZXNwYWNlIEluQnlWYWwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBy
ZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBH
UFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAg
c3RhdGljX2Fzc2VydChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7Cit9CisKK25hbWVz
cGFjZSBEZWxCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNs
b3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2Vu
ZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFz
dFBhdGggeworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VK
U1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAg
ICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xv
d1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
eyBHUFJJbmZvOjpyZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJh
c2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFN
b2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBv
cGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBEZWxCeVZhbCB7CisgICAgLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisjZW5kaWYKKworICAgIC8vIEZhc3Qg
cGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisK
KyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGgg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6
cmVnVDQgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsg
R1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBl
Y21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNs
b3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHJpdmF0ZUJyYW5kIHsKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdldEJ5VmFsOjpiYXNlSlNSIH07IC8v
IFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYnJhbmRKU1IgeyBHZXRCeVZhbDo6cHJvcGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkg
c2hhcmVkIHNsb3cgcGF0aCB0aHVuaworCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNSLCBzdHViSW5mb0dQUiks
ICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgbmFtZXNwYWNlIFNsb3dQYXRo
IHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdldEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFIgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNs
b3cgcGF0aCB0aHVuaworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR2V0
QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xv
dyBwYXRoIHRodW5rCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJy
YW5kSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNh
bGwgdG8gQ1RJIHRodW5rIik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBCYXNlbGluZUpJ
VFJlZ2lzdGVycworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggMDRlOGFm
ZGU0MWMyNjhhZDljZjJlYjFjNWQzY2YwNDA5ODI4OTM1ZS4uNmQ2MmM1NDM3M2MyNjA1NWY1NWMz
MDUxMGUzN2FjOWI3Y2Q2ZWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwu
aCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTQs
NiArOTUsNDIgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUKICAgICBGSU5BTElaRV9DT0RFKGxp
bmtCdWZmZXIsIE5vUHRyVGFnLCBkZXNjcmlwdGlvbik7CiB9CiAKK3N0YXRpY19hc3NlcnQoISgo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgKyAyKnNpemVvZihDUFVSZWdpc3RlcikpICUg
MTYpLCAiU3RhY2sgbXVzdCBiZSBhbGlnbmVkIGFmdGVyIENUSSB0aHVuayBlbnRyeSIpOworCit2
b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUoKQoreworICAgIC8vIFN0YXNo
IGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBw
dXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsgLy8gcmV0dXJuIGFkZHJlc3MgcHVzaGVkIGJ5IHRoZSBj
YWxsIGluc3RydWN0aW9uCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAg
IHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BV
KE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NS
ZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0i
CisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBvbiB0aGUgc3RhY2sgdG8gcGFzcyBh
cmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCkKKyAgICAgICAgc3ViUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKK30KKwordm9pZCBDQ2FsbEhl
bHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkKK3sKKyAgICAvLyBSZXNldCBzdGFjaworICAg
IGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CisgICAgLy8gUmVzdG9yZSBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4g
YWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsgLy8g
UmV0dXJuIGFkZHJlc3MgbGVmdCBvbiBzdGFjaworI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJN
X1RIVU1CMikKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIp
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0
dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBv
biBwbGF0Zm9ybSIKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRl
eCBhZmM1ZGNjODk5ZTc1NjMzOWE4MTE2MzRlMjNjMjE3YmRhMWNjZjY0Li5lN2I4ZGQxYjVjZWY3
NzJkYjI2MTk1ZWZmNDUwYjkyY2Q3ZGY1YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgKQEAgLTg1MywxNDUgKzg1Myw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0
clRhZz4gd2hlcmUsIFNjb3BlZExhbWJkYTx2b2lkKENDYWxsSGVscGVycyYpPiwgY29uc3QgY2hh
ciopOwogCi1wcml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChG
dW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNp
emVPZkFyZygpCi0gICAgewotICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1bmN0aW9u
VHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8QXJnTnVtPik7Ci0g
ICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BS
UmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCi0gICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4LCAiRG9uJ3Qga25v
dyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICBpZiBjb25zdGV4cHIg
KCFJbmRleCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZpcnN0IH07Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNl
IHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3QuLi4pOwotICAgICAgICB9Ci0gICAg
fQotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BS
UmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3MuLi4gcmVzdCkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFy
ZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2Ug
YXJndW1lbnRzIik7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7Ci0gICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAg
IC8vIEZpdHMgaW4gc2luZ2xlIEdQUgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNv
bmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0
ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmly
c3QpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQ
UjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjMpIHsKLSAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3Nl
ZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNr
aXAgYXJndW1lbnRHUFIxCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgdGhp
cmQsIHNlY29uZCB9OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBG
aXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJl
IHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgotICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50
QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKLSAgICAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUg
dG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlw
ZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09
IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMp
IHsKLSAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRz
IHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIx
LCBidXQgcmV1c2UgaXQgbGF0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVy
YXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4pOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiBy
ZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNv
IGl0IGRvZXMgbm90IG1hdHRlcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJh
dGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVn
IGZpcnN0LCBHUFJSZWcgc2Vjb25kKQotICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBz
aXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4
PigpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0
IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBj
YXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXIsIG9y
IHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKLSAgICAgICAgaWYgY29uc3RleHBy
ICghSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8
PSA0KSB7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lz
ZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsK
LSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2Fybmlu
ZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0Uo
Ik91dCBvZiByZWdpc3RlcnMiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0g
QXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90
IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5k
ZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9u
J3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICAvLyBCYXNl
IGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUg
cHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKLSAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZD
dXJyZW50QXJnIDw9IDQpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGZpcnN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Ci0gICAgfQotI2VuZGlm
Ci0KLXB1YmxpYzoKLSAgICAvLyBTZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBwdXJw
b3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MK
LSAgICAvLyBpbnN0ZWFkIG9mIGEgR1BSLCB3aGljaCBvbiBKU1ZBTFVFNjQgYXJlIGVxdWl2YWxl
bnQsIGJ1dCBvbiBKU1ZBTFVFMzJfNjQgYSBKU1ZhbHVlUmVncyBpcwotICAgIC8vIHJlcXVpcmVk
IHRvIGhvbGQgYSA2NC1iaXQgd2lkZSBmdW5jdGlvbiBhcmd1bWVudCwgc28gdXNlIHRoaXMgaW4g
cGFydGljdWxhciB3aGVuIHBhc3NpbmcgYQotICAgIC8vIEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUg
YmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9y
bXMsIGFuZCB1c2UKLSAgICAvLyBwcmVmZXJyZWRBcmd1bWVudEdQUiB3aGVuIHBhc3NpbmcgaG9z
dCBwb2ludGVycy4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtPgotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+Ci0g
ICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotI2lm
ICFPUyhXSU5ET1dTKQotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdO
dW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOwot
I2Vsc2UKLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAg
ICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMs
IEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7Ci0jZW5kaWYKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0jaWYgQ1BVKEFSTV9USFVNQjIpCi0gICAgICAgIC8vIFRo
ZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9udG8gdGhlIHN0YWNr
IGZvciBjYWxscywgc28gd2UgY2FuIHVzZQotICAgICAgICAvLyB0aGUgbGluayByZWdpc3RlciBh
cyBhIHRlbXBvcmFyeS4KLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtPigKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVnVDYsCi0gICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVn
aXN0ZXJzOjpscik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAg
ICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6
cmVnVDMsCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1
LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOwotI2VuZGlmCi0jZW5kaWYKLSAgICB9Ci0KLSAgICAv
LyBDb21wdXRlcyAoc3RhdGljYWxseSwgYXQgY29tcGlsYXRpb24gdGltZSksIHRoZSBpZGVhbCBt
YWNoaW5lIHJlZ2lzdGVyIGFuIGFyZ3VtZW50IHNob3VsZCBiZQotICAgIC8vIGxvYWRlZCBpbnRv
IGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJndW1l
bnQgcmVnaXN0ZXJzIGZvciB0aGUKLSAgICAvLyBpbml0aWFsIGFyZ3VtZW50cyBhcyBhcHByb3By
aWF0ZSwgdGhlbiBzdWl0YWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzIGZvciB0aGUgcmVtYWluaW5n
Ci0gICAgLy8gYXJndW1lbnRzLiBUaGUgaWRlYSBpcyB0aGF0ICdzZXR1cEFyZ3VtZW50cycgd2ls
bCBoYXZlIHRvIGRvIHRoZSBtaW5pbWFsIGFtb3VudCBvZiB3b3JrIHdoZW4KLSAgICAvLyB1c2lu
ZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxv
YWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKLSAgICAvLyBhbnl3YXksIHVzaW5nIHRo
ZXNlIHJlZ2lzdGVycyB5aWVsZHMgdGhlIHNtYWxsZXN0IGNvZGUgcmVxdWlyZWQgZm9yIGEgY2Fs
bC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVt
PgotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgotICAgIHByZWZlcnJlZEFy
Z3VtZW50R1BSKCkKLSAgICB7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1bWVu
dCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHByZWZlcnJl
ZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7Ci0gICAg
fQorICAgIHZvaWQgZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKyAgICB2b2lkIGVtaXRDVElUaHVu
a0VwaWxvZ3VlKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKaW5kZXggM2RkNmUwY2Ix
YmY1NzdiOTM0MzQwYjQxMTdhNjU1OGE5MTI5NTFjOS4uMWQzZmY1ODc5NWI1YmQxM2U2YjU5ZGYy
MGM0MDUyZGE1OTI0NTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShK
SVQpCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlU3RydWN0cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
QXRPZmZzZXRMaXN0LmgiCkBAIC0xMDAsOSArMTAxLDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEg
Q2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGNv
bnMKICAgICAgICAgICAgICAgICBEYXRhRm9ybWF0SlMpOwogICAgIH0KICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2Vs
aW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsK
KyAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsK
ICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVS
ZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnRhZ0dQUigp
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOworICAgIHNo
dWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnRhZ0dQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBzaHVmZmxlRGF0YS5zZXR1
cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICBzaHVmZmxlRGF0YS5zaHJpbmtUb0ZpdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA1MmExM2FhYWZiNzdiNmU0NGZhN2Vi
MTkyYjA2ODQzYzJjY2I5MjI2Li44MmFmNzE2OTMwOWQ3YzkwMGFjOGYwZTU1ZDZiNTc3YWE2MTJi
NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtMjcsNiArMjcsOCBAQAog
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk3Niw2ICs5
NzgsMjExIEBAIGlubGluZSBOb1Jlc3VsdFRhZyBleHRyYWN0UmVzdWx0KE5vUmVzdWx0VGFnKSB7
IHJldHVybiBOb1Jlc3VsdDsgfQogLy8gV2UgdXNlIHRoaXMgaGFjayB0byBnZXQgdGhlIEdQUklu
Zm8gZnJvbSB0aGUgR1BSUmVnIHR5cGUgaW4gdGVtcGxhdGVzIGJlY2F1c2Ugb3VyIGNvZGUgaXMg
YmFkIGFuZCB3ZSBzaG91bGQgZmVlbCBiYWQuLgogY29uc3RleHByIEdQUkluZm8gdG9JbmZvRnJv
bVJlZyhHUFJSZWcpIHsgcmV0dXJuIEdQUkluZm8oKTsgfQogCitjbGFzcyBOb092ZXJsYXBJbXBs
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vT3ZlcmxhcEltcGxSZWdNYXNrKEdQ
UlJlZyBncHIpCisgICAgeworICAgICAgICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCisgICAg
ICAgICAgICByZXR1cm4gMFVMTDsKKyAgICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGdwcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdCA8IGNvdW50T2ZCaXRz
PHVpbnQ2NF90Pik7CisgICAgICAgIHJldHVybiAxVUxMIDw8IGJpdDsKKyAgICB9CisKKyAgICAv
LyBCYXNlIGNhc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICAvLyBHUFJSZWcgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgR1BSUmVn
IGdwciwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3Zl
cmxhcEltcGxSZWdNYXNrKGdwcik7CisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1h
c2ssIGFyZ3MuLi4pOworICAgIH0KKworICAgIC8vIEpTVmFsdWVSZWdzIGNhc2UKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJs
YXBJbXBsKHVpbnQ2NF90IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXls
b2FkR1BSKCkpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIG1hc2sgfD0gbm9PdmVy
bGFwSW1wbFJlZ01hc2soanNyLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgICAgICBpZiAodXNlZCAm
IG1hc2spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBub092ZXJs
YXBJbXBsKHVzZWQgfCBtYXNrLCBhcmdzLi4uKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICAvLyBF
bnRyeSBwb2ludAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBlbnRyeShBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwo
MCwgYXJncy4uLik7IH0KK307CisKKy8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQ
UlJlZ3MgYW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMK
Ky8vIGFzc2VydGlvbnMgdG8gZW5zdXJlIHRoYXQgcmVnaXN0ZXIgYWxpYXNlcyBsaXZlIGF0IHRo
ZSBzYW1lIHBvaW50IGRvIG5vdCBtYXAgdG8gdGhlIHNhbWUKKy8vIGFyY2hpdGVjdHVyYWwgcmVn
aXN0ZXIuCit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2NvbnN0ZXhwciBib29sIG5vT3Zl
cmxhcChBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIE5vT3ZlcmxhcEltcGw6OmVudHJ5KGFyZ3MuLi4p
OyB9CisKK2NsYXNzIFByZWZlcnJlZEFyZ3VtZW50SW1wbCB7CisgICAgcHJpdmF0ZToKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZBcmcoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
dGVtcGxhdGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiByZXN0
KQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtIC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBh
cmd1bWVudHMiKTsKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4
cHIKKyAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5k
ZXggLSAxPihyZXN0Li4uKTsKKyAgICAgICAgfQorICAgIH0KKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29u
ZCwgR1BSUmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIg
c2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
IC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4
LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBp
ZiBjb25zdGV4cHIgKCFJbmRleCkgeworICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZD
dXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIK
KyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5p
bmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlyZCk7
IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFy
dCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQorICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4g
cmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBz
byBpdCBkb2VzIG5vdCBtYXR0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3Mg
eyBzZWNvbmQsIGZpcnN0IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAg
ICAgICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAg
ICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihz
ZWNvbmQsIHRoaXJkLCByZXN0Li4uKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIg
JiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAgICAgICAgLy8g
V2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVn
aXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVyCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRl
eCAtIDE+KGZpcnN0LCByZXN0Li4uKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1l
bnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4
IC0gMT4odGhpcmQsIHJlc3QuLi4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwg
dW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCkK
KyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVP
ZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFy
Z2UgYXJndW1lbnRzIik7CisgICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3NlY29u
ZCcgYXJlIG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUg
c3RhY2sgYW55d2F5CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3Rl
eHByCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJz
dCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJl
Z3MgeyBzZWNvbmQsIGZpcnN0IH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiBj
b25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAg
ICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXgg
LSAxPihzZWNvbmQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0
KQorICAgIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6
ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBs
YXJnZSBhcmd1bWVudHMiKTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5ldmVy
IGFuIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55
d2F5CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgi
T3V0IG9mIHJlZ2lzdGVycyIpOworICAgIH0KKyNlbmRpZgorCitwdWJsaWM6CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
Ojphcml0eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgorICAgIHByZWZlcnJlZEFyZ3VtZW50SlNS
KCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBw
aWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCAg
IEdQUkluZm86Om5vbkFyZ0dQUjEpOworI2VuZGlmCisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
I2lmIENQVShBUk1fVEhVTUIyKQorICAgICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBndWFy
YW50ZWVkIHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNhbiB1
c2UKKyAgICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCisgICAgICAg
IHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyLAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdU
NywgICAgICAgIEdQUkluZm86OnJlZ1Q2LAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAg
ICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVyczo6bHIpOworI2VsaWYgQ1BV
KE1JUFMpCisgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyLAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIz
LCBHUFJJbmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1QzLAorICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJlZ1Q2
KTsKKyNlbmRpZgorI2VuZGlmCisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5h
YmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSks
IEdQUlJlZz4KKyAgICBwcmVmZXJyZWRBcmd1bWVudEdQUigpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUs
IEFyZ051bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9lcyBub3QgZml0IGluIEdQUiIpOworI2VuZGlm
CisgICAgICAgIHJldHVybiBwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdO
dW0+KCkucGF5bG9hZEdQUigpOworICAgIH0KK307CisKKy8vIENvbXB1dGVzIChzdGF0aWNhbGx5
LCBhdCBjb21waWxhdGlvbiB0aW1lKSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIgYW4gYXJn
dW1lbnQgc2hvdWxkIGJlCisvLyBsb2FkZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxsLiBUaGlz
IHlpZWxkcyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhlCisvLyBp
bml0aWFsIGFyZ3VtZW50cyBhcyBhcHByb3ByaWF0ZSwgdGhlbiBzdWl0YWJsZSB0ZW1wb3Jhcnkg
cmVnaXN0ZXJzIGZvciB0aGUgcmVtYWluaW5nCisvLyBhcmd1bWVudHMuIFRoZSBpZGVhIGlzIHRo
YXQgJ3NldHVwQXJndW1lbnRzJyB3aWxsIGhhdmUgdG8gZG8gdGhlIG1pbmltYWwgYW1vdW50IG9m
IHdvcmsgd2hlbgorLy8gdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHRvIGhvbGQgdGhlIGFyZ3VtZW50
cywgc28gaWYgeW91IGFyZSBsb2FkaW5nIG1vc3QgYXJndW1lbnRzIGZyb20gbWVtb3J5CisvLyBh
bnl3YXksIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB5aWVsZHMgdGhlIHNtYWxsZXN0IGNvZGUgcmVx
dWlyZWQgZm9yIGEgY2FsbC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBBcmdOdW0+Citjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgorcHJlZmVycmVkQXJndW1l
bnRHUFIoKQoreworICAgIHJldHVybiBQcmVmZXJyZWRBcmd1bWVudEltcGw6OnByZWZlcnJlZEFy
Z3VtZW50R1BSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKTsKK30KKworLy8gU2VlIHByZWZlcnJl
ZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIHZlcnNp
b24gcmV0dXJucyBhIEpTVmFsdWVSZWdzCisvLyBpbnN0ZWFkIG9mIGEgR1BSLCB3aGljaCBvbiBK
U1ZBTFVFNjQgYXJlIGVxdWl2YWxlbnQsIGJ1dCBvbiBKU1ZBTFVFMzJfNjQgYSBKU1ZhbHVlUmVn
cyBpcworLy8gcmVxdWlyZWQgdG8gaG9sZCBhIDY0LWJpdCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50
LCBzbyB1c2UgdGhpcyBpbiBwYXJ0aWN1bGFyIHdoZW4gcGFzc2luZyBhCisvLyBKU1ZhbHVlL0Vu
Y29kZWRKU1ZhbHVlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIEpTVkFMVUU2NCBhbiBKU1ZB
TFVFMzJfNjQgcGxhdGZvcm1zLCBhbmQgdXNlCisvLyBwcmVmZXJyZWRBcmd1bWVudEdQUiB3aGVu
IHBhc3NpbmcgaG9zdCBwb2ludGVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBBcmdOdW0+Citjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25U
cmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CitwcmVm
ZXJyZWRBcmd1bWVudEpTUigpCit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6
cHJlZmVycmVkQXJndW1lbnRKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCiAjZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMDMwZjNmMzZmNmVlZmQ4NzkwZGE4OTQ1NzhjOTRhYWEyMGM1
OTk3Zi4uM2UwNDdhM2U3MGJmZDcyMWVhNzVmYTgzYzY1MjUwY2IxNzlhOGMyNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQ
KCkKICNkZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7
IFwKICAgICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsg
XAotICAgICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAgICAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAgIH0gXAogICAgICAgICBORVhUX09QQ09E
RV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwxNSArMTkwLDE1IEBAIHZvaWQgSklUOjpy
ZXNldFNQKCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuYW1lKSBcCiAgICAg
Y2FzZSBvcF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0
cnVjdGlvbiwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgZW1pdFNsb3dDYXNl
Q2FsbChpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAogICAgICAgICBicmVhazsgXAogICAgIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1Bh
dGhGdW5jdGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1Yik7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
CkBAIC02NTgsOSArNjU4LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Aoc3RyaWN0ZXEpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVfc2NvcGUpCi0jZW5kaWYKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkpCiAgICAgICAgIGRlZmF1bHQ6CkBAIC04
NTcsOSArODU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmco
SklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRy
eUxhYmVsOyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZpeHVwLgogCiAgICAgQVNTRVJUKG1fam1w
VGFibGUuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCk7Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNz
ZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1
bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTExLDEyICs5MDYsMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQog
ICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYg
KCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1f
ZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxl
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAo
IW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpCiAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2Vu
ZGlmCiAKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fbmVhckp1bXBzKSB7CiAgICAgICAgIGlm
IChyZWNvcmQudGFyZ2V0KQpAQCAtMTAzNywzNSArMTAzMCw2IEBAIENvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9u
RWZmb3J0CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWluVGhyZWFkKGNvZGVCbG9jayk7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENh
bGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAg
ICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBh
c3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigm
dm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwo
T3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25M
b29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSkpOwotICAgICAgICBqdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVj
a3MuZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0g
ICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCku
dG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJl
Y29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpKTsKLSAgICAgICAganVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi19Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUo
KQogewogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0
ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWluZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9u
cyBmb3Igb3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZmYzODg3
NDMzYzNkNWQxY2NmMzY4YzZmM2VlOWUxYThhODg0NzY5OC4uOTc2NTVkMmViZjk4MDE4MmYwYThk
NjViMzMwMDdlNmEzMmQyYTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNzYsOCAr
Mjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dp
dGhDYWxsRnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygp
OwotCiAgICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKICAgICAgICAgdm9p
ZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CiAgICAgICAgIHZvaWQgc2V0
RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcgKzU1MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9u
VHlwZT4KLSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25z
dCBJbnN0cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7
CisgICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgT3Bj
b2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
dW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApA
QCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRT
bG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhG
dW5jdGlvbik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBlbWl0
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYyMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0
SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQg
ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhB
Y2Nlc3NUeXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9p
ZCBlbWl0TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjU4LDM5ICs2NTYs
MjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNlbGluZUdlbmVyYXRvcihWTSYpOwogCiAg
ICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgLy8gVGh1
bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsK
LSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVw
YXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVs
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Io
Vk0mKTsKLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2VudGVyX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19o
YW5kbGVyR2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRo
dW5rSXNVc2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBiZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNp
ZW50IHRvIGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1bmsuCi0gICAgICAgICAgICAvLyBSZXNv
bHZlZENsb3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNhdXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0
eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAgICAgICAgICAgcmV0dXJuICEocmVzb2x2
ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IFJlc29sdmVkQ2xvc3VyZVZhciB8
fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVy
YXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2
YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3Jlc29sdmVfc2NvcGVH
ZW5lcmF0b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0
ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOwor
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1
ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mKTsKIAogICAg
ICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiAgICAgICAgIHsKQEAgLTcxOCw5ICs3MDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICB2b2lkIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyk7Ci0jaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
Nl82NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+KTsKLSNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxs
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICB2b2lkIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQpOwpAQCAtNzYzLDcgKzc0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSBy
ZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgogICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChpczY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
UmVzdWx0VHlwZT46OnZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAg
ICAgICAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9u
KTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICByZXR1cm4gY2Fs
bDsKICAgICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDY5OWVhZmNi
NzI5ZWNhNDE0MDc1ZWMxMGNjYzkyNjIyMGJkNDU0NzUuLjQ0NDJhODg5YjU0MjhkNWE1ZGJkYjBl
ZjAwOTA1MjAxMTU0OTgxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcApAQCAtNDUxLDE5ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21v
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjpl
bWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3Bvdyk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfcG93KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgp
LmVtcHR5KCkpOwogICAgICAgICBBU1NFUlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgp
KTsKLSAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9kaXYpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9kaXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2Nj
NDc4ZmY0N2ZhZGE3MWVjOWRjMThmYWQxZDM0NTU0NTY5YjUuLmM2OGU0N2VlOWM4OGIxNmU4MTYx
NGZkYzhkY2EwYzYwYzQyYzI4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNl
bGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3Bv
aW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWVTaHVmZmxlci5oIgpAQCAtMTUzLDcgKzE1NCw3IEBAIEpJVDo6Y29tcGlsZVNl
dHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlKQogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5j
aDMyKEFib3ZlLCByZWdUMywgcmVnVDIpOwogICAgIHN0b3JlMzIocmVnVDIsIEFkZHJlc3MocmVn
VDAsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
KSk7CiAgICAgbm90QmlnZ2VzdC5saW5rKHRoaXMpOwotICAgIAorCiAgICAgLy8gSW5pdGlhbGl6
ZSAndGhpcycuCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBqc1JlZ1QxMDsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwgdGhpc0pTUik7CkBAIC0xOTYs
MTEgKzE5NywxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogCiAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwog
Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
ZWVKU1IsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSLCByZWdUMykpOwot
ICAgIGxvYWRWYWx1ZShBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0
ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwg
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IsIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7CisgICAgbG9hZFZhbHVl
KEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJh
bWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKTsKICAgICBsb2FkR2xvYmFsT2JqZWN0KHJlZ1QzKTsK
LSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6
Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2Jh
bE9iamVjdCgqbV92bSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIENh
bGxNb2RlOjpSZWd1bGFyKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBlbWl0VmlydHVh
bENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgcmVzZXRT
UCgpOwogfQogCkBAIC0yMTMsMTggKzIxNCwxOCBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxs
KGNvbnN0IE9wJiwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCkKIHRlbXBsYXRlPD4K
IGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVu
bGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7Ci0gICAg
bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRh
ZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
TGlua0luZm9HUFIpOwotICAgIEp1bXBMaXN0IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1p
dFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9H
UFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50
b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlu
a0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7Cisg
ICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNG
YXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXls
b2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNj
b3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNo
dWZmbGVEYXRhID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTElu
dFRhaWxDYWxsKGJ5dGVjb2RlLCBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
OwogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBzaHVmZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0
YSB9OwotICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bExpbmtJbmZvR1BSKTsKKyAgICAgICAgc2h1ZmZsZXIubG9ja0dQUihCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICAgICAgc2h1ZmZsZXIucHJlcGFyZUZv
clRhaWxDYWxsKCk7CiAgICAgfSkpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKICAg
ICBhdXRvIGRvbmVMb2NhdGlvbiA9IGxhYmVsKCk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZv
W2NhbGxMaW5rSW5mb0luZGV4XS5kb25lTG9jYXRpb24gPSBkb25lTG9jYXRpb247Ci0gICAgCisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjYyLDggKzI2Myw4IEBAIHZvaWQgSklUOjpjb21w
aWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExp
bmtJbmZvSW5kCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJp
dHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBU
YWdPZmZzZXQpKTsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7Ci0gICAgc3RvcmVWYWx1ZShCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2Fs
bGVlLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKTsKKyAgICBzdG9yZVZh
bHVlKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IsIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlm
IChjb21waWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNzEsMTcg
KzI3MiwxNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgLy8gV2UgbmVlZCB0aGlzIG9uIEpTVkFMVUUzMl82NCBvbmx5IGFzIG9uIEpTVkFMVUU2
NCBhIHBvaW50ZXIgY29tcGFyaXNvbiBpbiB0aGUgRGF0YUlDIGZhc3QKICAgICAvLyBwYXRoIGNh
dGNoZXMgdGhpcy4KLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwoQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsZWVKU1IpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwo
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUikpOwogI2VuZGlmCiAKICAgICBp
ZiAoY29tcGlsZVRhaWxDYWxsKGJ5dGVjb2RlLCBpbmZvLCBjYWxsTGlua0luZm9JbmRleCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01l
dGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMpIHsKLSAgICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0lu
Zm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExp
bmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0geworICAgICAgICBhdXRvIHNsb3dQ
YXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgp
PihbJl0gewogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAg
ICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdyhCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUik7CisgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICB9KSk7CiAgICAgICAg
IGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFi
ZWwoKTsKQEAgLTI4OSw3ICsyOTAsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVt
aXREYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1Iu
cGF5bG9hZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Cisg
ICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRhSUNGYXN0UGF0aCgqdGhp
cywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgIGF1dG8gZG9u
ZUxvY2F0aW9uID0gbGFiZWwoKTsKICAgICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwogCkBAIC0z
NzgsNyArMzc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKIHsKICAgICBjb21waWxlQ2Fs
bEV2YWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOwogfQotIAorCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
Y29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwg
aXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKQEAgLTM5MywxMiArMzk0LDEyIEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0CiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENh
bGxGb3J3YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CiB9Ci0gICAgCisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3Rf
dmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2Fz
ZTxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKIH0KLSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVj
dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENv
bnN0cnVjdD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4Kysp
OwpAQCAtNDE2LDcgKzQxNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RG
dW5jdGlvbik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0
RnVuY3Rpb24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAt
NDI3LDkgKzQyOCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJldHVyblZhbHVlSlNSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBzdHViSW5mb0dQUikpOwogICAg
IHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVKU1IgPT0gYmFzZUpTUik7IC8vIE90aGVyd2lzZSB3
aWxsIG5lZWQgbW92ZShyZXR1cm5WYWx1ZUpTUiwgYmFzZUpTUikKQEAgLTQ2OSw3ICs0NzAsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludChqdW1wKCkpOwogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLSAgICBKU1ZhbHVl
UmVncyBpdGVyYXRvckpTUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAg
ICBKU1ZhbHVlUmVncyBpdGVyYXRvckpTUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpiYXNlSlNSOwogICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAgICBub3RPYmplY3QuYXBwZW5k
KGJyYW5jaElmTm90Q2VsbChpdGVyYXRvckpTUikpOwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJh
bmNoSWZOb3RPYmplY3QoaXRlcmF0b3JKU1IucGF5bG9hZEdQUigpKSk7CkBAIC00NzgsNyArNDc5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRl
bnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOwogCiAgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKKwogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAgICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CkBAIC01MTgsMTYgKzUxOSwx
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKICAgICAgICAgfQogICAgIH0pKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250
Q2xvYmJlckpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJl
ckpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIG5leHRKU1IgPSBiYXNl
SlNSOyAvLyBVc2VkIGFzIHRlbXBvcmFyeSByZWdpc3RlcgogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBuZXh0SlNSKTsKICAgICBKdW1wIGdlbmVyaWNDYXNlID0g
YnJhbmNoSWZOb3RFbXB0eShuZXh0SlNSKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
SXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNjE2LDggKzYxNyw4IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVt
aXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwogCi0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgaXRlckNhbGxSZXN1bHRKU1IgPSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRl
eCBjNjdiY2UwOWZmYmM2MGUyNDMzZTYyMmUzNzgyNzhjZjIwNzRiNGJlLi5mMjczZjQyYjk0NjQ2
MDBiYjJkOTZhMzg1NzA0MDViNmEwOWZhMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgi
CiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKQEAgLTE0OSw5ICsxNTAsOSBAQCB2
b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChK
SVQmIGppdCwgdW5zaWduZWQgc3R1YgogCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8s
IHN0dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTE4NSw5ICsxODYs
OSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURh
dGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZwogCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgp
OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3Vs
dEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpG
YXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0
dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTIxNSwxMCArMjE2LDEw
IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQ
YXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJ
bmZvLCBzdHViSW5mb0dQUik7CiAKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaDJHUFI7CiAKICAgICBqaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlSlNSLnBheWxvYWRHUFIoKSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgYXV0byBkb0lubGluZUFj
Y2VzcyA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUoKSkpOwpAQCAtNDA1LDkgKzQwNiw5IEBAIHZvaWQg
SklUSW5CeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBq
aXQsIHVuc2lnbmVkIHN0dWJJCiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHVi
SW5mb0dQUik7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbkJ5SWQ6OnNjcmF0Y2hHUFI7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaAppbmRleCA2MjkyOWMwYzI0ODRmYjljYTBlYzY2MWJiN2MwYTdkZTY0OWZjOThjLi41
MjRmOWIwNDllMGYzZjMxYzI5NmRjNGQ0ZjcyZTc2OGJlZWUzYjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC00OCwx
OTAgKzQ4LDYgQEAgc3RydWN0IFVubGlua2VkU3RydWN0dXJlU3R1YkluZm87CiBlbnVtIGNsYXNz
IEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50OF90OwogCi1u
YW1lc3BhY2UgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxV
RTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owot
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBH
UFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BS
SW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlJZFJl
Z2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0
dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNl
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OwotI2VuZGlmCi19Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotbmFtZXNwYWNlIEJhc2Vs
aW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzIHsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1zdGF0aWMgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLXN0YXRpYyBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gR1BSSW5mbzo6cmVnVDI7Ci0vLyBXZSByZWx5IG9uIHRo
aXMgd2hlbiBsaW5raW5nIGEgQ29kZUJsb2NrIGFuZCBpbml0aWFsaXppbmcgcmVnaXN0ZXJzIGZv
ciBhIEdldEJ5VmFsIFN0dWJJbmZvLgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci1zdGF0aWNfYXNzZXJ0
KHJlc3VsdEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IpOwotc3Rh
dGljX2Fzc2VydChzdHViSW5mb0dQUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUik7Ci0KLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gR1BSSW5mbzo6
cmVnVDM7Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEdQUkluZm86OnJlZ1Q0
Owotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBHUFJJbmZvOjpyZWdUNTsKLX0K
LSNlbmRpZgotCi1uYW1lc3BhY2UgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzIHsKLSNpZiBV
U0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86
OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjphcmd1
bWVudEdQUjIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEdQUkluZm86OmFy
Z3VtZW50R1BSMyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OmFy
Z3VtZW50R1BSMSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86Om5v
bkFyZ0dQUjAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpub25B
cmdHUFIxIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdz
IHJlc3VsdEpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Ci0jaWYgQ1BVKE1JUFMpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86
OmFyZ3VtZW50R1BSMiB9OwotI2Vsc2UKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7
IEpTUkluZm86OmpzUmVnVDMyIH07Ci0jZW5kaWYKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90
b0pTUiB7IEpTUkluZm86OmpzUmVnVDU0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBHUFJJ
bmZvOjpyZWdUNiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJl
Z1Q3IH07Ci0jZW5kaWYKLXN0YXRpY19hc3NlcnQoQXNzZW1ibHlIZWxwZXJzOjpub092ZXJsYXAo
dmFsdWVKU1IsIHByb3RvSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
KSk7Ci19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnMgewotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiAgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChw
cm9wZXJ0eUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19
Ci0KLW5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0j
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6
cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07Ci0jZW5kaWYKLXN0YXRpY19hc3NlcnQoQXNzZW1ibHlI
ZWxwZXJzOjpub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRD
bG9iYmVySlNSKSk7Ci19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
MyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFj
ZSBCYXNlbGluZUluQnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUiB9OwotY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpzY3JhdGNoR1BSIH07Ci19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJ
bmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owot
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IGJh
c2VKU1IudGFnR1BSKCkgfTsgLy8gUmV1c2luZyByZWdUMSBmb3IgYmV0dGVyIGNvZGUgc2l6ZSBv
biBBUk1fVEhVTUIyCi0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNCB9OwotY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
LSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwotY29u
c3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKLSNlbmRpZgotfQot
Ci1uYW1lc3BhY2UgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnMgewotI2lmIFVTRShKU1ZB
TFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7
IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci0jZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpT
UiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQo
YnJhbmRKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwotfQot
CiBjbGFzcyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CiBwcm90ZWN0ZWQ6CiAgICAgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggNTg2NDEyYmM0N2VlNmJiNzQwZWYxNTIwODRlZjJjYTIxYTZiMTU5Yi4uOGY4ZWNm
MjczMzg2ZjZmMTU5MDUwYTMyZWNlNDFmN2Y0ZWI5YTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTEzMywxNiArMTMzLDYgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzIGZ1bmN0aW9uKQogICAg
IGV4Y2VwdGlvbkNoZWNrKCk7CiB9CiAKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQot
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBmdW5jdGlvbikKLXsKLSAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5
cGUoZnVuY3Rpb24pOwotICAgIGV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgcmV0dXJuIGNhbGw7Ci19
Ci0jZW5kaWYKLQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVu
ZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogewogICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOyAv
LyBUaGUgY2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRvcENhbGxGcmFtZSB0byB0
aGVpciBjYWxsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGI5YWVmY2FlNmZjZTQwYjY3YmI0NzU4NmMzN2FmODBjYWFiZjFiODcuLmE1YWE0MGRiNWRmNWRm
YjkwODg3MGZiOGRjNDI2NGI4NzhiZTg1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShKSVQpCiAjaW5jbHVk
ZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUg
IkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC0xNTIsMTIgKzE1MywxMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcHJvdG8gPSBieXRlY29kZS5tX3Byb3RvdHlwZTsKIAotICAgIHVzaW5nIEJhc2Vs
aW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5z
dGFuY2VvZlJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9m
UmVnaXN0ZXJzOjpwcm90b0pTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6
c2NyYXRjaDFHUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3Jh
dGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cmVz
dWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJvdG9K
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNo
MUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c2NyYXRj
aDJHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm90bywgcHJvdG9KU1IpOwpAQCAtMjA1LDkgKzIw
Niw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSk7CiAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAwPigpOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVyczo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
c3RhbmNlb2Y6OnZhbHVlSlNSOwogICAgIHN0YXRpY19hc3NlcnQodmFsdWVKU1IgPT0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKSk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5zdGFuY2VvZjo6cHJvdG9KU1I7CiAgICAgLy8gT24gSlNWQUxVRTMyXzY0LCAncHJv
dG8nIHdpbGwgYmUgcGFzc2VkIG9uIHN0YWNrIGFueXdheQogICAgIHN0YXRpY19hc3NlcnQocHJv
dG9KU1IgPT0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKSB8fCBpczMy
Qml0KCkpOwogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIHZhbHVlSlNSLCBwcm90b0pTUikpOwpAQCAtNDUxLDI0ICs0NTIsMTMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfamZhbHNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKZmFsc2U+
KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCi0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlID0ganNSZWdUMTA7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkpGYWxzZTo6
dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0
aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
ID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsK
LSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBn
bG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElmRmFsc2V5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJl
Z1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNl
eUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlz
IGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVj
YXVzZQpAQCAtNDc3LDMxICs0NjcsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVn
VDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1Qx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1ZUpTUjsgLy8gSW5jb21pbmcKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSID0gcmVnVDE7CisgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMkdQUiA9IHJlZ1Q1OworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcmVnVDQ7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWVKU1IsIHNjcmF0Y2gx
R1BSLCBzY3JhdGNoMkdQUiwgZ2xvYmFsT2JqZWN0R1BSKSk7CisKICAgICBjb25zdGV4cHIgYm9v
bCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcmVnVDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFs
T2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXkodm0sIEpTVmFs
dWVSZWdzKHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAo
KTsKLQotICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMy
KDEpLCByZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc0ZhbHNleSA9
IGppdC5icmFuY2hJZkZhbHNleSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQ
UiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwor
ICAgIGlzRmFsc2V5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
VGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNGYWxzZXkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY1MywyNCArNjM5LDEzIEBAIHZvaWQg
SklUOjplbWl0X29wX2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdHJ1ZT4oKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUg
PSBqc1JlZ1QxMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZhbHVl
SlNSOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwg
dmFsdWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJl
Z1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFs
T2JqZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgYWRkSnVtcChicmFuY2hJZlRydXRoeSh2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IGdsb2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlSlNSKTsKICAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bSgpLmdldENUSVN0dWIodmFsdWVJc1RydXRoeUdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCks
IHRhcmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5l
cmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5j
dGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UK
QEAgLTY3OSwzMSArNjU0LDI3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjp2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5w
YXlsb2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkpUcnVlOjp2YWx1ZUpTUjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gxR1BSID0gcmVnVDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHJlZ1Q1OworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVn
VDQ7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUiwgZ2xvYmFsT2JqZWN0R1BSKSk7CisKICAgICBjb25zdGV4cHIgYm9vbCBzaG91
bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwogCiAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVn
VDM7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OwotICAgIGF1dG8gaXNUcnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIEpTVmFsdWVSZWdz
KHZhbHVlKSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgSnVtcCBkb25lID0gaml0Lmp1bXAoKTsKLQot
ICAgIGlzVHJ1dGh5LmxpbmsoJmppdCk7CiAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUMCk7Ci0KLSAgICBkb25lLmxpbmsoJmppdCk7CisgICAgYXV0byBpc1RydXRoeSA9IGppdC5i
cmFuY2hJZlRydXRoeSh2bSwgdmFsdWVKU1IsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgZnBS
ZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxP
YmplY3RHUFIpOworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOworICAgIGlz
VHJ1dGh5LmxpbmsoJmppdCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmsp
OwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiB2YWx1ZUlzZmFsc2V5Iik7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHZhbHVlSXNUcnV0aHkiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAKQEAgLTczNCw1NyArNzA1LDQ3IEBAIHZv
aWQgSklUOjplbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHZvaWQgSklUOjplbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUaHJvdz4oKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJlZ1QwID09IHJldHVyblZhbHVlR1BSKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb3B5Q2FsbGVlU2F2ZXNUb0Vu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJh
dGlvblRocm93LCBnbG9iYWxPYmplY3RHUFIsIHZhbHVlSlNSKTsKLSAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVH
UFIgPSBhcmd1bWVudEdQUjE7Ci0KICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpU
aHJvdzo6dGhyb3duVmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRo
cm93OjpieXRlY29kZU9mZnNldEdQUjsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV92YWx1ZSwgdGhyb3duVmFsdWVKU1IpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdGhyb3duVmFsdWVHUFIpOwogICAgIGVtaXROYWtlZE5l
YXJKdW1wKHZtKCkuZ2V0Q1RJU3R1YihvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BS
MTsKLSAgICAKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlRocm93OjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsgLy8gSW5jb21pbmcKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJ
bmNvbWluZwogCiAjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAg
aml0LmxvYWRQdHIoJnZtLnRvcEVudHJ5RnJhbWUsIGFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LmNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKGFyZ3VtZW50R1BSMCk7
CisgICAgeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSBnbG9iYWxPYmpl
Y3RHUFI7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHNjcmF0Y2hHUFIsIHRocm93
blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiksICJTaG91bGQgbm90IGNsb2JiZXIgaW5jb21p
bmcgcGFyYW1ldGVycyIpOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwg
c2NyYXRjaEdQUik7CisgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcihzY3JhdGNoR1BSKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlR1BSKTsKLSAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpOwogICAg
IENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKwogICAgIGppdC5q
dW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblRocm93KSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93X2hhbmRsZXIiKTsKIH0K
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAKQEAgLTEyNTEsNzcgKzEyMTIsNzQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24qKQogICAgIC8vIEV2ZW4gdGhvdWdoIENUSSBkb2Vzbid0IHVzZSB0aGVtLCB3
ZSBpbml0aWFsaXplIG91ciBjb25zdGFudAogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUg
cG9pbnRlcnMsIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwogICAgIC8vIG9iamVj
dCBsaWZldGltZSBhbmQgaW5jcmVhc2luZyBHQyBwcmVzc3VyZS4KLSAgICBzaXplX3QgY291bnQg
PSBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHNpemVfdCBmaXJzdCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwotICAgIGlmIChmaXJzdCA8IGNvdW50KQot
ICAgICAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIGpzUmVnVDEwKTsKLSAgICBm
b3IgKHNpemVfdCBqID0gZmlyc3Q7IGogPCBjb3VudDsgKytqKQotICAgICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGopLCBqc1JlZ1QxMCk7CiAKLSAg
ICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwot
ICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDApOwotCi0gICAgZW1pdEVudGVyT3B0aW1pemF0aW9u
Q2hlY2soKTsKLSNlbHNlCiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSA9PSAw
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFyZ3VtZW50R1BSMDsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0gYXJndW1lbnRHUFI0Owot
Ci0gICAgdW5zaWduZWQgbG9jYWxzVG9Jbml0ID0gY291bnQgLSBDb2RlQmxvY2s6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICBzaXplX3QgY291
bnQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1WYXJzKCk7CisgICAgdWludDMyX3QgbG9jYWxz
VG9Jbml0ID0gY291bnQgLSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKTsKICAgICBSRUxFQVNFX0FTU0VSVChsb2NhbHNUb0luaXQgPCBj
b3VudCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIobG9jYWxzVG9Jbml0ICogc2l6ZW9mKFJlZ2lz
dGVyKSksIGxvY2Fsc1RvSW5pdEdQUik7CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RW50ZXI6OmNhbkJlT3B0aW1pemVkR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpFbnRlcjo6bG9jYWxzVG9Jbml0R1BSOworCiAgICAgbW92ZShUcnVzdGVkSW1tMzIoY2Fu
QmVPcHRpbWl6ZWQoKSksIGNhbkJlT3B0aW1pemVkR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0z
Mihsb2NhbHNUb0luaXQpLCBsb2NhbHNUb0luaXRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtKCkuZ2V0Q1RJU3R1YihvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCi0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVn
aXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIp
OwotI2VuZGlmCi0gICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0IDAu
Ci0gICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9n
dWUoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRH
UFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyB1bmRlZmluZWRHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKIAotICAgIHNpemVfdCBzdGFydExv
Y2FsID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
c3RhcnRMb2NhbCkub2Zmc2V0KCk7Ci0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zm
c2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICBqaXQuc3ViNjQoaXRl
cmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RW50ZXI6OmNhbkJlT3B0aW1pemVkR1BSOyAvLyBJbmNvbWluZwogCi0gICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHVu
ZGVmaW5lZEdQUik7Ci0gICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOwotICAgIEp1bXAg
aW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5k
R1BSKTsKICAgICB7Ci0gICAgICAgIGppdC5zdG9yZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUluZGV4
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpdGVyYXRvckdQUiwgVGltZXNPbmUpKTsKLSAg
ICAgICAgaml0LnN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JH
UFIpOwotICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpFbnRlcjo6bG9jYWxzVG9Jbml0R1BSOyAvLyBJbmNvbWluZworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gcmVnVDQ7CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZW5kR1BSID0gcmVnVDU7CisgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB1
bmRlZmluZWRKU1IgPSBqc1JlZ1QzMjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
bG9jYWxzVG9Jbml0R1BSLCBjYW5CZU9wdGltaXplZEdQUiwgaXRlcmF0b3JHUFIsIHVuZGVmaW5l
ZEpTUikpOworCisgICAgICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJsb2NrOjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgICAgIGludCBz
dGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9jYWwpLm9mZnNldCgp
OworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gMCk7CisgICAgICAgIGppdC5zdWJQdHIo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIFRydXN0ZWRJbW0zMigtc3RhcnRPZmZzZXQgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAgICAgICBqaXQubXVsMzIoVHJ1c3Rl
ZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRHUFIsIGxvY2Fsc1RvSW5pdEdQ
Uik7CisgICAgICAgIGppdC5zdWJQdHIoaXRlcmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQUiwgZW5k
R1BSKTsKKyAgICAgICAgaml0Lm1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdW5kZWZp
bmVkSlNSKTsKKworICAgICAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7CisgICAgICAg
IEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQ
UiwgZW5kR1BSKTsKKyAgICAgICAgeworICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUodW5kZWZp
bmVkSlNSLCBBZGRyZXNzKGl0ZXJhdG9yR1BSKSk7CisgICAgICAgICAgICBqaXQuc3ViUHRyKFRy
dXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOworICAgICAgICAgICAg
aml0Lmp1bXAoaW5pdExvb3ApOworICAgICAgICB9CisgICAgICAgIGluaXREb25lLmxpbmsoJmpp
dCk7CiAgICAgfQotICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAKICAgICAvLyBlbWl0V3JpdGVC
YXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChjYW5CZU9w
dGltaXplZEdQUiwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpKTsKICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7CiAg
ICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0s
IGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKTsKIAotICAgIGppdC5tb3ZlKGNhbkJlT3B0aW1p
emVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7IC8vIHNhdmUuCi0gICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZt
LCBhcmd1bWVudEdQUjEpOworICAgIC8vIG9wX2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9m
ZnNldCAwLgorICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKKworICAgIC8vIHNhdmUgY2FuQmVPcHRpbWl6ZWRHUFIgKGFyZ3VtZW50
cyB0byBjYWxsIGJlbG93IGFyZSBpbiByZWdpc3RlcnMgb24gYWxsIHBsYXRmb3Jtcywgc28gb2sg
dG8gc3RhY2sgdGhpcykuCisgICAgLy8gTm90ZTogd2Ugd2lsbCBkbyBhIGNhbGwsIHNvIGNhbid0
IHVzZSBwdXNoVG9TYXZlLCBhcyBpdCBkb2VzIG5vdCBtYWludGFpbiBBQkkgc3RhY2sgYWxpZ25t
ZW50LgorICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICBqaXQuc3RvcmVQdHIoY2FuQmVPcHRpbWl6ZWRHUFIsIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpKTsKKworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKICAgICBDYWxs
IG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwog
Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVk
R1BSKTsgLy8gcmVzdG9yZS4KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVt
YmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIFJlc3Rv
cmUgY2FuQmVPcHRpbWl6ZWRHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBz
dGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorCiAgICAgb3du
ZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC0xMzM2LDExICsxMjk0LDMwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICAgICAgc2tp
cE9wdGltaXplLmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoT3B0
aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckVudHJ5KCkpLCBBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVEV4ZWN1dGVDb3VudGVyKCkpKSk7CiAKICAg
ICAgICAgaml0LmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVy
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0KLSAgICAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk9wdGltaXplKT4oJnZtLCBU
cnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
CisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gT24gV2luZG93cywg
cmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1w
bGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAgICAgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBh
bmQgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgc2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3Bh
Y2UgZm9yIHRoaXMuCisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNsb3dQYXRoUmV0dXJu
VHlwZSkgPT0gMTYsICJBc3N1bWVkIGJ5IGdlbmVyYXRlZCBjYWxsIHNpdGUgYmVsb3ciKTsKKyAg
ICAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgdm1Qb2ludGVyQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRH
UFIxIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVJbmRleEJpdHNBcmdHUFIg
eyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKKyNlbHNlCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgdm1Qb2ludGVyQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIwIH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVJbmRleEJpdHNBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVu
dEdQUjEgfTsKKyNlbmRpZgorICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKCZ2bSksIHZt
UG9pbnRlckFyZ0dQUik7CisgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgYnl0ZWNv
ZGVJbmRleEJpdHNBcmdHUFIpOworCiAgICAgICAgIG9wZXJhdGlvbk9wdGltaXplQ2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0
KQorICAgICAgICBqaXQucG9wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsgLy8gdGFyZ2V0UEMK
KyAgICAgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOyAvLyBkYXRhQnVmZmVy
ICh1bnVzZWQsIGJ1dCBuZWVkcyBwb3BwaW5nIHRvIHJlc3RvcmUgc3RhY2spCisjZW5kaWYKKwog
ICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHJldHVy
blZhbHVlR1BSKSk7CiAgICAgICAgIGppdC5mYXJKdW1wKHJldHVyblZhbHVlR1BSLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKQEAgLTEzNDgsMTEgKzEzMjUsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cihWTSYgdm0pCiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNl
bmRpZgorICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAog
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtMTM2Myw3ICsxMzM2LDYgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5l
cmF0b3IoVk0mIHZtKQogI2VuZGlmCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTc0
LDU3ICsxNTQ2LDQyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25I
YW5kbGVUcmFwcywgYXJndW1lbnRHUFIwKTsKLSNlbHNlCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAorICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDaGVja1RyYXBzOjpieXRlY29kZU9mZnNldEdQUjsKKworICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihvcF9jaGVja190cmFwc19oYW5kbGVyR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdp
c3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7
Ci0jZW5kaWYKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNoZWNrVHJhcHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgY29kZUJs
b2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICAKLSAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9iYWxP
YmplY3RHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYnl0ZWNvZGVP
ZmZzZXRHUFIsIGdsb2JhbE9iamVjdEdQUikpOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQu
cG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFp
cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5y
ZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFuZGxlVHJhcHMpKTsKLSAgICBh
dXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXIiKTsKIH0KLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4
cChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0NDFlNzVmNzU2
YjBmYzg0NTEzNWE2NDA2MjEwZmM2ZmU4YzQwNzYxLi4yOWIxZTBhNDljODI5OGQzZGY2MTBhNzJj
YjVhZWIwNzM1Zjc5NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShKSVQpCiAjaW5j
bHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1
ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCkBAIC01MiwxMSArNTMsMTEgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpz
Y3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFz
dFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKQEAgLTEwMSw1MSArMTAyLDIyIEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nh
c2UoY29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAgICAgaWYg
KCFoYXNBbnlTbG93Q2FzZXMoaXRlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRC
eVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmczSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnNEpTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBzdGF0aWNf
YXNzZXJ0KCFCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLm92ZXJsYXBzKGFyZzRK
U1IpKTsKLSAgICBtb3ZlVmFsdWVSZWdzKEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSLCBhcmc0SlNSKTsKLSAgICBtb3ZlVmFsdWVSZWdzKEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IsIGFyZzNKU1IpOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEo
Ynl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBw
cm9maWxlR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BS
LCBhcmczSlNSLCBhcmc0SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZh
bEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0Owog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8g
YXJnMSBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotICAgIHN0YXRpY19hc3NlcnQoQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDApOwot
ICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
cGF5bG9hZEdQUigpID09IHJlZ1QxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9p
bnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtMTU1
LDggKzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgZ2VuZXJhdGVHZXRCeVZh
bFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKSwgaXRlcik7CiB9
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQog
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2NCwzNSAr
MTM1LDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpi
YXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVy
dHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0
aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRp
b24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQ
UiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1
bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVy
YXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0
YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBh
cmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1
YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAg
IGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRh
aWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNr
ID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dl
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
QEAgLTIwMSwxMCArMTcyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9w
ZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKQEAgLTIzMCw1NSArMjAxLDI5IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0
SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxz
W21fZ2V0QnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
KyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFk
eSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0
aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzMSwzNCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6Omdsb2Jh
bE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChw
cm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnNldHVwQXJndW1l
bnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0
YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBh
cmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1
YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAg
IGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRh
aWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNr
ID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBz
bG93X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CkBAIC0zMjEsOSArMjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0
ZUJyYW5kOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OmJyYW5kSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJh
bmRKU1IpOwpAQCAtMzU0LDQ2ICsyOTksMjEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9w
cml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKIHsK
ICAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNl
dFByaXZhdGVCcmFuZD4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNl
SlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5k
SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpT
Uik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJp
dmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBicmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNl
R1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJy
YW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBl
KG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVl
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmCisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KQEAgLTQwNCw5ICszMjQsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJy
YW5kID0gYnl0ZWNvZGUubV9icmFuZDsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFu
ZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5k
OjpicmFuZEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5k
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNS
KTsKQEAgLTQyOCw0OSArMzQ4LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNr
UHJpdmF0ZUJyYW5kPigpOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZSk7Ci0KLSAgICBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNb
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3By
aXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFu
ZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4K
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBicmFuZEdQ
UiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBl
cywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KQEAgLTQ4MywxOSArMzc3LDIwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1
ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlB1dEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvcGVydHksIHByb3BlcnR5SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCB2YWx1ZUpTUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwotICAgIGVtaXRB
cnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCks
IHByb2ZpbGVHUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29k
ZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKKwor
ICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXls
b2FkR1BSKCksIC8qIHNjcmF0Y2hHUFI6ICovIHN0dWJJbmZvR1BSKTsKIAogICAgIEpJVFB1dEJ5
VmFsR2VuZXJhdG9yIGdlbigKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLApAQCAtNTI5LDc2ICs0MjQsMjcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3Ry
dWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBi
b29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9i
eV92YWxfZGlyZWN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwotICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBbJl0oYXV0
byBieXRlY29kZSkgewotICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgICAgICBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwotICAgIH07
Ci0KLSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFB1dEJ5VmFsRGlyZWN0PigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWQoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDU+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpLCBPcFB1dEJ5
VmFsRGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
Ci0gICAgZWxzZQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0YTo6b2Zm
c2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNS
LCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21f
cHV0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3QgcGF0aCBhbmQgbm90IGNsb2Ji
ZXJlZC4KLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICAvLyBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgLy8gY29uc3RleHByIEdQ
UlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQ
UiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1
dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5r
IGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQg
LyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0
IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KQEAgLTYwNiwzOSArNDUyLDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0Owog
Ci0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAg
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRvaW4gPSBk
ZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZh
bHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxl
R1BSOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKLSAg
ICB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHVzZWQoYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVl
R1BSLCBwcm9maWxlR1BSKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q0KSk7
Ci0gICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNSkpOwotICAgIH0KKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAorICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAg
ICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9i
YWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBD
b2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0g
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwg
c3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGly
ZWN0Q2FsbDxTbG93T3BlcmF0b2luPihzdHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5jYWxsKEFk
ZHJlc3Mobm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwi
KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY0NywxMCArNDkwLDEwIEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5
SlNSKTsKQEAgLTY3OSw1NiArNTIyLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRl
X25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3Jp
dGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIFVOVVNFRF9QQVJBTShjdXJyZW50
SW5zdHJ1Y3Rpb24pOwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlW
YWxzW21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0K
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBj
YWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9H
UFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1tt
X3B1dEJ5VmFsSW5kZXgrK107CiAKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBy
ZWdUMDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAg
Ly8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1
YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTczNiwzNCArNTUw
LDM5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
Ojpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
IAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk+KGds
b2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQ
UiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgLy8gTG9hZGluZyBudWxscHRyIHRvIHRo
aXMgcmVnaXN0ZXIgaXMgbmVjZXNzYXJ5IGZvciBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2Fs
bAorICAgIC8vIHRvIG5vdCBjbG9iYmVyIGdsb2JhbE9iamVjdEdQUiBvbiBBUk1fVEhVTUIyLCBh
bmQgaXMgb3RoZXJ3aXNlIGhhcm1sZXNzLgorICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVs
bHB0ciksIHByb2ZpbGVHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2Fs
bDxTbG93T3BlcmF0aW9uPihzdHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5jYWxsKEFkZHJlc3Mo
bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5r
RXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsK
KyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC04NDEsMTAgKzY2MCwx
MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZURl
bEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBh
dGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAg
LTg3NSw2MiArNjk0LDM2IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVs
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKLQorICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVsQnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpOwotCiAgICAgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxC
eUlkc1ttX2RlbEJ5SWRJbmRleCsrXTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRl
bGV0ZUJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OmVjbWFNb2Rl
R1BSOwogCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9k
ZS52YWx1ZSgpKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVj
bWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BS
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQ
UiA9PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICB1
c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwg
cmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsK
KyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0p
CiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5
IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1h
a2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxh
YmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTkzOCwzMyArNzMxLDM2IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlw
ZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUp
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9i
amVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BS
MzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAg
ICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9i
YWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2Rl
QmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21h
TW9kZUdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0
LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2gg
dG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJl
dHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFn
KTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBp
bG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAg
ICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAg
IHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CkBAIC05NzMsMTEgKzc2OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVz
dWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6
OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1Ip
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTEw
MTAsNjMgKzgwNiwzNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKLQorICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RGVsQnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpT
bG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5t
X2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxv
YWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAot
ICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0SlNSKTsKLSAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
ZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODQzLDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMg
aml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xv
Z3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1
bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOworICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxT
bG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9u
IHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OworICAgIGppdC5ib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAK
LSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRf
YnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTExMDks
OSArODgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VW
UmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwg
YmFzZVZSZWcpOwpAQCAtMTEzOCw0OSArOTEwLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9n
ZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRC
eUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0
QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShKSVQ6OlRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0
YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICpp
ZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJ
ZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTE5MSw5ICs5NDEs
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2Vk
Q29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpy
ZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcs
IGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNl
VlJlZyk7CkBAIC0xMjE5LDQ5ICs5NjksMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1tt
X2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2Vk
Q29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMt
PnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0
ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BHZXRCeUlkRGlyZWN0PigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwor
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KT46OnZhbHVlKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAt
MTI3MiwxNSArMTAwMCwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZS
ZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpy
ZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpT
UiwgYmFzZVZSZWcpOwotICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworCisgICAgaWYgKCppZGVudCA9
PSB2bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
ICAgICAgICAgbG9hZDhGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wR2V0QnlJZDo6TWV0YWRhdGE6
Om9mZnNldE9mTW9kZU1ldGFkYXRhKCkgKyBHZXRCeUlkTW9kZU1ldGFkYXRhOjpvZmZzZXRPZk1v
ZGUoKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJh
bmNoMzIoTm90RXF1YWwsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlk
TW9kZTo6QXJyYXlMZW5ndGgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbCgKQEAgLTEzMTIsNTEgKzEwNDAsNjYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlk
SW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlv
bjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ss
ICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+
KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRo
Ojpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLQogICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRl
ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGlu
ZSBKSVQgYmVjYXVzZQorICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdo
dCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KKyAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhl
ciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCisgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgdXNpbmcgU2xvd09wZXJh
dGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgp
OworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0
byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Cisg
ICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uIik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKQEAg
LTEzNjUsMTAgKzExMDgsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdp
c3RlciB0aGlzVlJlZyA9IGJ5dGVjb2RlLm1fdGhpc1ZhbHVlOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0
aGlzSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhp
czo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhU
aGlzOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRX
aXRoVGhpczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlz
VlJlZywgdGhpc0pTUik7CkBAIC0xMzk1LDk2ICsxMTM4LDMyIEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJlc3VsdEpTUik7CiB9
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cihWTSYgdm0pCi17Ci0gICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQotICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICAvLyBERkcvRlRM
IG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3
aGljaCBtYXkgbm90IG1hdGNoCi0gICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAgICBD
Q2FsbEhlbHBlcnMgaml0OwotCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQu
c3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQotICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKLQotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2Fs
bCIpOwotfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwotICAgIAotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dGhpc0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAg
ICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOworICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dp
dGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
V2l0aFRoaXM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5
IGluIHVzZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyB0aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1Iu
cGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRpY19h
c3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8g
VGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0
aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRp
b25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE0OTIsMzUgKzExNzEsMzUgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93
UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhp
c0dQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQog
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQot
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNP
cHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIs
IHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIp
OwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwg
Ik5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAg
IGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwor
ICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4
Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0
aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBA
IC0xNTM0LDEwICsxMjEzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIHRvIGp1c3QgYWZ0ZXIgdGhl
IGFyZ3VtZW50cyBoYXZlIGJlZW4gbG9hZGVkIGludG8gcmVnaXN0ZXJzICdob3RQYXRoQmVnaW4n
LCBhbmQgd2UgZ2VuZXJhdGUgY29kZQogICAgIC8vIHN1Y2ggdGhhdCB0aGUgU3RydWN0dXJlICYg
b2Zmc2V0IGFyZSBhbHdheXMgYXQgdGhlIHNhbWUgZGlzdGFuY2UgZnJvbSB0aGlzLgogCi0gICAg
dXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZh
c3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJl
ZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVZSZWcsIHZhbHVl
SlNSKTsKQEAgLTE1NjEsNyArMTI0MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHJlc2V0U1AoKTsgLy8g
V2UgbWlnaHQgT1NSIGV4aXQgaGVyZSwgc28gd2UgbmVlZCB0byBjb25zZXJ2YXRpdmVseSByZXNl
dCBTUAogICAgIGFkZFNsb3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAg
ICAKKwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFy
cmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CkBA
IC0xNTcwLDU2ICsxMjQ5LDMwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luKHRoaXMpOwotICAgIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
cHV0QnlJZHNbbV9wdXRCeUlkSW5kZXgrK107Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3Bl
cmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0g
dGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0g
bV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRCeUlkSW5kZXgrK107CisK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4o
dGhpcyk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYWxyZWFkeSBpbiB1
c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
LCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBU
aGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRo
ZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlv
bnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTYyNywzNSArMTI4MCwzNSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3Vl
KCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNv
ZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVu
dEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIw
IHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9i
amVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUdQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0
aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwgcHJv
cGVydHlHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGlj
X2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3Vt
ZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5m
byIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0
LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBj
YWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRp
b25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNjY0LDkgKzEz
MTcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNl
bGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpzdHViSW5mb0dQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xNjkxLDUxICsx
MzQ0LDI5IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKLSAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9
IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlu
a2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRJ
bkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOworCisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3Rh
dGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAg
IGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1Yklu
Zm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlk
ZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAg
IC8vIHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJl
J3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0
IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKQEAgLTE3NDYsMTEgKzEzNzcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5l
SW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9w
ZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTc3Nyw2NCArMTQwOCwzNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0KLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDQ+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlWYWw6Ok1l
dGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlK
U1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBKSVRJbkJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93
UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BS
ID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQ
cm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xv
d19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8g
cG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlm
ZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3Bl
cmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0
ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JC
cmFuZCwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlWYWw6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3Bl
cnR5T3JCcmFuZCwgcHJvcGVydHlKU1IpOwpAQCAtMTg1OCw1MSArMTQ2MiwyNyBAQCB2b2lkIEpJ
VDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJh
c2UsIFZpcnR1YWxSZWdpcwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRK
U1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBi
YXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUgdHlwZSkKK3ZvaWQgSklU
OjplbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBlKQogewotICAgIFVOVVNFRF9QQVJB
TShiYXNlKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvcGVydHkpOwogICAgIEFTU0VSVF9VTlVTRUQo
dHlwZSwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSB8fCB0eXBlID09IEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiAKLSAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0
aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAg
ICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwor
ICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgr
K107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRo
OjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5T3JCcmFuZEdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
cGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAg
fHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eU9yQnJhbmRHUFIgPT0g
YXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSksIGRlY2x0eXBl
KG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGlt
aXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKQEAgLTE5MTIsMTIgKzE0OTIsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNv
ZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZSk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5MjYsMTIgKzE1MDQsMTAgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9i
YXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xv
dyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVCcmFuZCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVC
cmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5NDEsNyArMTUxNyw2IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKIAotICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CiAgICAgQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0
aW9uQXQobV9ieXRlY29kZUluZGV4KSA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwpAQCAtMTk0OSwx
NCArMTUyNCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gSWYgd2UgcHJvZmlsZSBjZXJ0YWlu
IHJlc29sdmUgdHlwZXMsIHdlJ3JlIGd1YXJhbnRlZWQgYWxsIGxpbmtlZCBjb2RlIHdpbGwgaGF2
ZSB0aGUgc2FtZQogICAgIC8vIHJlc29sdmUgdHlwZS4KIAotICAgIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IE1vZHVsZVZhcikgCisgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9k
dWxlVmFyKQogICAgICAgICBsb2FkUHRyRnJvbU1ldGFkYXRhKGJ5dGVjb2RlLCBPcFJlc29sdmVT
Y29wZTo6TWV0YWRhdGE6Om9mZnNldE9mTGV4aWNhbEVudmlyb25tZW50KCksIHJldHVyblZhbHVl
R1BSKTsKICAgICBlbHNlIHsKICAgICAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3Vu
bGlua2VkQ29kZUJsb2NrLT5tZXRhZGF0YSgpLm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29k
ZSk7CiAKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1QyOwotICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSID0gcmVnVDA7Ci0gICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKKyAgICAgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6bWV0YWRhdGFHUFI7CisgICAgICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OnNjb3BlR1BSOworICAgICAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsKIAogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyUGF5bG9hZChzY29wZSwgc2NvcGVH
UFIpOwogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1ldGFkYXRhT2Zmc2V0KSwgc19tZXRh
ZGF0YUdQUiwgbWV0YWRhdGFHUFIpOwpAQCAtMTk2NCwyMyArMTUzOSwyMyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjb2Rl
OwogICAgICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQotICAgICAg
ICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENs
b3N1cmVWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVP
cFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXI+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmls
ZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAg
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZt
KCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlw
ZSA9PSBHbG9iYWxWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0
ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0o
KS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKICAg
ICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSkKLSAg
ICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVu
azxHbG9iYWxQcm9wZXJ0eT4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsKICAgICAgICAgZWxz
ZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICAg
ICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2Jh
bExleGljYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJh
dGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKICAgICAgICAgZWxzZSBp
ZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
KQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNv
ZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAg
ICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0g
dm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNv
bHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAg
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2Jh
bFZhcj4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVz
b2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAKICAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwo
Y29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIH0KQEAgLTIwMDAsMTIgKzE1NzUs
MTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IHVzaW5nIE1ldGFkYXRhID0gT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsgLy8gaW5jb21pbmcKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHNjb3BlR1BSID0gcmVnVDA7IC8vIGluY29taW5nCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOyAvLyBpbmNvbWluZyAtIHBhc3MgdGhydSB0byBz
bG93IHBhdGguCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6
bWV0YWRhdGFHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlJlc29sdmVTY29wZTo6c2NvcGVHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5n
IC0gcGFzcyB0aHJvdWdoIHRvIHNsb3cgcGF0aC4KICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgPSByZWdUNTsgLy8gbG9jYWwgdGVtcG9yYXJ5CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUdQ
UiwgbWV0YWRhdGFHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNl
dEdQUiwgc2NyYXRjaEdQUikpOwogICAgIHN0YXRpY19hc3NlcnQoc2NvcGVHUFIgPT0gcmV0dXJu
VmFsdWVHUFIpOyAvLyBlbWl0UmVzb2x2ZUNsb3N1cmUgYXNzdW1lcyB0aGlzCiAKICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwpAQCAtMjEzNiw0NCArMTcxMSwyNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJh
dG9yKFZNJiB2bQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotICAgIC8vIFRoZSBmYXN0IHBhdGggYWxyZWFkeSBwdXNoZWQgdGhlIHJldHVy
biBhZGRyZXNzLgotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQp
Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwot
I2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBy
ZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVk
IG9uIHBsYXRmb3JtIgotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsK
LSAgICBqaXQuc3RvcmUzMihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21p
bmcKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgPSByZWdUMjsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGluY29taW5nQnl0ZWNv
ZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BS
KSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0
Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CiAKICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwog
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNz
KHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkp
LCBpbnN0cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0
R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOwogCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlv
bkdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkg
fHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0
LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0j
ZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpUaHVuayk7CkBAIC0yMTkwLDM4ICsxNzQ4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAgICBSZXNvbHZlVHlw
ZSBwcm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9wcm9maWxlZENvZGVC
bG9jaykubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0
KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3Bl
R1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJl
Z1QzOwotCiAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3VubGlua2VkQ29kZUJsb2Nr
LT5tZXRhZGF0YSgpLm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29kZSk7CiAKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29wZUdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7
CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIs
IG1ldGFkYXRhR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY29kZTsKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQot
ICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8
Q2xvc3VyZVZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNv
bHZlVHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29k
ZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIpCi0g
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxH
bG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0g
dm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVy
YXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSkKLSAg
ICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEds
b2JhbFByb3BlcnR5Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVP
cEdldEZyb21TY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgZWxzZSBpZiAocHJvZmls
ZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOwor
ICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVu
azxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9
PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzPik7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOwog
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CkBAIC0yMjM1
LDkgKzE3OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgLy8gREZHL0ZUTCBtYXkg
aW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2gg
bWF5IG5vdCBtYXRjaAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgdXNpbmcg
TWV0YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSBy
ZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7IC8v
IFVzZWQgb25seSBvbiBzbG93IHBhdGgKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0
R1BSOyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwg
bWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOwpA
QCAtMjI1Niw3ICsxODE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgIGppdC5s
b2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0
LCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNsb3dD
YXNlLmFwcGVuZChqaXQuYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNoR1BSLCBXYXRjaHBv
aW50U2V0OjpvZmZzZXRPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsK
ICAgICB9OwotICAgIAorCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVz
b2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNl
IEdsb2JhbFByb3BlcnR5OgpAQCAtMjM3MSw2OCArMTkyOSw0MiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRv
cihWTSYgdgogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnAp
OwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0g
ICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2Vs
aWYgQ1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1
cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9u
IHBsYXRmb3JtIgotI2VuZGlmCi0KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0RnJvbVNjb3Bl
OjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDQ7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0g
ICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21p
bmcKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwotICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBpbmNvbWluZ0J5dGVjb2RlT2Zm
c2V0R1BSLCBzY3JhdGNoR1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7Cisg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BS
LCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAobWV0YWRhdGFHUFIsIHJldHVyblZhbHVlR1BSKSk7CiAKLSAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwotICAg
IGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNj
cmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBp
bnN0cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BS
LCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKLSAg
ICAvLyBQcmVzZXJ2ZSBtZXRhZGF0YSBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KLSNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlcjsKLSAgICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgp
IHsKLSAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gc19tZXRhZGF0YUdQUjsKLSAg
ICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzX21ldGFkYXRhR1BSKTsKLSAg
ICAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzX21ldGFkYXRhR1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mTWV0YWRhdGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgfTsKLSNlbmRpZgotICAg
IEFTU0VSVChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKG1ldGFk
YXRhQ1NSKSk7Ci0gICAgaml0Lm1vdmUobWV0YWRhdGFHUFIsIG1ldGFkYXRhQ1NSKTsKLQotICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9i
YWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGluc3RydWN0aW9uR1BSKTsKKyAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGluc3RydWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
R2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoaW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2lu
dGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQ
UiwgaW5zdHJ1Y3Rpb25HUFIpOworCisgICAgLy8gc2F2ZSBtZXRhZGF0YUdQUiAoYXJndW1lbnRz
IHRvIGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0
byBzdGFjayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3Qg
dXNlIHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1l
bnQuCisgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgIGppdC5zdG9yZVB0cihtZXRhZGF0YUdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3RlcikpOworCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2Vw
dGlvbkNoZWNrKHZtKTsKIAotICAgIGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRy
ZXNzKG1ldGFkYXRhQ1NSLCBNZXRhZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2Zp
bGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwotICAgIHJlc3RvcmVIaWphY2tlZENTUigpOwor
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBtZXRhZGF0YUdQ
Uik7IC8vIFJlc3RvcmUgbWV0YWRhdGFHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIo
MTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorICAg
IGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBNZXRh
ZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNr
ZXQoKSkpOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJw
KTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQot
ICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2Vs
aWYgQ1BVKE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVy
bkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24g
cGxhdGZvcm0iCi0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBq
aXQucmV0KCk7CiAKICAgICBleGNlcHRpb25DaGVjay5saW5rKCZqaXQpOwotICAgIHJlc3RvcmVI
aWphY2tlZENTUigpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBKdW1wIGp1bXBU
b0hhbmRsZXIgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBA
IC0yNTkwLDI3ICsyMTIyLDIwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHBy
b2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5r
ZWQgQ29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3Mg
YXJlIGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9y
KTsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKLSAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOwogICAgICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25BdChtX2J5dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29k
ZU9mZnNldEdQUjsKIAotICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOworICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
CiAgICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0
b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlv
biBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAg
LTI2MTksNDMgKzIxNDQsMzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2
XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50
R1BSMzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BS
MDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNl
dEdQUjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFy
Z3VtZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKKyAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSLCBieXRlY29k
ZU9mZnNldEdQUiwgY29kZUJsb2NrR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9n
dWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBjb2RlQmxvY2tHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2Nr
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwogICAgIGppdC5h
ZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKLQogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BV
KEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0
ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1
bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZt
LmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVy
YXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKQEAgLTI2NjMsNyArMjE3OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2Fy
Z3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJn
dW1lbnRzID0gYnl0ZWNvZGUubV9hcmd1bWVudHM7CiAgICAgaW50IGluZGV4ID0gYnl0ZWNvZGUu
bV9pbmRleDsKLSAgICAKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGFyZ3Vt
ZW50cywgcmVnVDApOwogICAgIGxvYWRWYWx1ZShBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVu
dHM6OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpLCBqc1JlZ1QxMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwganNS
ZWdUMTApOwpAQCAtMjc0Myw3ICsyMjU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3Bl
cnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlz
KTsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMp
OwpAQCAtMjgwNiw3ICsyMzIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25D
YXNlcy5saW5rKHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4
dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAg
LTI4MjQsMTMgKzIzMzksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlz
dCBkb25lQ2FzZXM7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5l
RW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxp
bmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDEgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6
c2NyYXRjaDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lRW51bWVy
YXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gzID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gzOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVu
dW1lcmF0b3JHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFs
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6cHJvcGVydHlKU1Iu
cGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JH
ZXRCeVZhbDo6c2NyYXRjaDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gyOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdl
dEJ5VmFsOjpzY3JhdGNoMzsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihtb2RlLCBzY3JhdGNoMyk7CkBAIC0y
OTA2LDcgKzI0MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotdm9pZCBK
SVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5j
dGlvblR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9w
ZXJ0eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBn
ZW5lcmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTM2LDcg
KzI0NTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmso
dGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBk
b25lLmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNDU5LDMxIEBAIHZvaWQgSklUOjplbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7
CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92
YWwpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1l
cmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJ
bXBsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCks
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25l
eHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
c2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dl
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9n
ZXRfYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3df
cGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9
CiAKQEAgLTI5NzcsMTUgKzI0OTIsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUUKICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVy
YXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikK
IHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5MDFkZjU2YWZi
MTNiNDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3MDM2NmIzNTBl
MjM5N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0x
NzEsOCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRU
aHVua3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQ
YXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2Vf
Y2FzdDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEsOCArMTc5LDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNs
b3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5U2VhcmNoZXIg
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYga2V5KSB7
IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQogICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNvbnN0IEhvc3RG
dW5jdGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjplcXVhbChh
LCBiKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggODQ3Y2UyNTAy
ZTQwMThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZlMGRiNTdmY2Q4
YTBjYTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBA
IC02Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1
bmtQdHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAogICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRodW5rR2VuZXJh
dG9yKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiwgU2xvd1Bh
dGhGdW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlv
blN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9z
dEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5j
dGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklU
OjpTaWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlmOTdjYjA3NDdh
MGE0ZTEzZDcyOGIuLjMyZjA1YjgzZjUyOWU4OTVkYmQ4ZTYyZDlmN2NjMjUwNDMyMDhjMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
K25hbWVzcGFjZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEpJ
VDo6YXJndW1lbnRHUFIzOworfQogCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CkBA
IC00NCw5ICs0Niw3IEBAIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2Rl
SW5kZXgpOwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAgbV9qaXQt
Pm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJl
Zyk7CisgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0
dWJzLT5jdGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogfQogCkBAIC01NCw0NiArNTQsNDkgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1
bmsoVk0mIHZtLCBTbG8KIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwotCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxI
ZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIp
OwotI2VuZGlmCi0KLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywgQ0NhbGxIZWxw
ZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
LQotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRl
cigpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJn
dW1lbnRHUFIxID09IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBqaXQubW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBPUyhX
SU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMg
bGFyZ2VyIHRoYW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIg
cGFzc2VkIGFzCisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3Vt
ZW50cyBhcmUgc2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQg
YnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgIGppdC5zdWJQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1l
QXJnR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNB
cmdHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBjYWxsRnJhbWVBcmdHUFIsIHBjQXJnR1BSLCBieXRl
Y29kZU9mZnNldEdQUikpOworI2Vsc2UKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFy
Z0dQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJn
R1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGNhbGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZW5kaWYK
KyAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lQXJnR1BS
KTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgcGNBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhwY0FyZ0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50
ZXIoKSksIHBjQXJnR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBwY0Fy
Z0dQUik7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVt
aXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAg
IGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5w
b3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6
bGlua1JlZ2lzdGVyKTsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIGppdC5w
b3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBwYworICAgIGppdC5wb3AoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIyKTsgLy8gY2FsbEZyYW1lCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAK
LSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNB
bmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEND
YWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgK
aW5kZXggODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNh
NmU4MjY1MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1Nsb3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJ
VCogaml0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhG
dW5jdGlvbikKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24g
c2xvd1BhdGhGdW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93
UGF0aEZ1bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7
CiAgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0K
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmso
Vk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVw
ZGF0ZVRvcENhbGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAg
ICAgIG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShN
YWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsK
LSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVu
dEdQUjEpOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJ
VDo6YXJndW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklU
OjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAg
ICAgSklUOjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24p
OwotCi0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChK
SVQ6OnJlZ1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNh
bGxGcmFtZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEg
PT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5l
eGNlcHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAg
ICBTbG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVj
dGlvbiogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1NzFhNmNiNTdlODI0ZGNjOWUx
Y2EyMzVlNGRiZGVhMzA5MzNiMC4uYTk5ZTQ0MjAxZDg1N2Q5ZDA4MjgyMDQ0MzliNjgwN2IxYmI3
MGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cApAQCAtNDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9w
ZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhj
ZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5
LDggKzU3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsMjAgKzczLDEzIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9
CiAKLSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZS
ZWdpc3RlcnM6OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoUklTQ1Y2NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAg
ICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1w
bGVtZW50ZWQgb24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7Cisj
aWYgQ1BVKFg4Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVz
IHRoZSByZXR1cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVy
czo6ZXNwKTsKICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9
IGppdC5qdW1wKCk7CkBAIC0xMDEsMzIgKzkwLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
cG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSAgICAgICAgLy8gRXhjZXB0aW9uIGZ1
enppbmcgY2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0byBwcmVzZXJ2
ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaGVyZS4KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBqaXQu
cHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIGppdC5w
dXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICB9CisgICAgLy8gRXhjZXB0aW9uIGZ1enppbmcg
Y2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgaGVyZS4KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkKKyAgICAgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlRXhjZXB0aW9uID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkgewotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhl
bHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7
Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSkpCisgICAgICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQo
KTsKIAogICAgIGF1dG8gaGFuZGxlckdlbmVyYXRvciA9IE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSA/IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ig
OiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3I7CkBAIC0xNDMsOCArMTIwLDYgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYg
dm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZvaWQgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFnVHlw
ZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApp
bmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUxLi4xMDU0OTEwNGVm
NjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVudW0gY2xhc3MgQ2Fs
bE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKIGNs
YXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFu
ZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRI
YW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0m
KTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCA2
NjRiMGUyOWY2YmEzY2U0ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3NDA5YmM5YWU4NmMz
NDI4ZTYyZWMyMGE0NTBhZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTgz
OSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05fVkFMSURBVElPTiAx
CiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYmICFPUyhXSU5ET1dT
KSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2FuIHVzZSB1cCB0byA2
IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02NCBsaWtlIGZlYXR1
cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0Zm9ybXMKLSAgIHRo
YXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4KLSovCi0jZGVmaW5l
IEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUgRU5BQkxFX0JJTkRJ
TkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="474258"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448407</attachid>
            <date>2022-01-05 10:43:26 -0800</date>
            <delta_ts>2022-01-06 03:01:41 -0800</delta_ts>
            <desc>Xcode build fix [hopefully]</desc>
            <filename>bug-233822-20220105184324.patch</filename>
            <type>text/plain</type>
            <size>279136</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTExMDkwNDQwNDE1ZmU0NDg4NGIxOGZiZjkwMTBiY2FhNjc1MjA5Li41YTBlMGRkYWFiZGM3YTA5
ZDQzZWMxZjM1MzllN2Y3ZjRkZWNhZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMjItMDEtMDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUAorCisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3Rlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRp
YWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVB
bmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAgICAgICAqIGpp
dC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgpOgor
ICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2pm
YWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJh
cHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5lcmF0ZUdldEJ5
VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChK
U0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
bnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNf
cHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGppdC9KSVRUaHVu
a3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpnZW5l
cmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAgICAgIChKU0M6
OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUwOTZkZGZmOTdlYjExN2Q4OWEuLmE3NjAzNzA5ODY4MDRj
OTE3ZjhjYTI2ZWI0ZTZiMzIwMGRjYWZjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEt
MDMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBF
WFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjEt
MTItMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZXBsYWNlIFVESVM4NiB3aXRoIFp5ZGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggYjk4NzEyMTc1YzlhN2Q5ZTQ0MzdmZjM1NzI5YTg0YzQxZWU4YzY0Zi4uMjUxYjll
NDU5OTZiM2YyMTA3Mjc5NTc2YTU0ZTE5MjhmMWY0MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtODQzLDYgKzg0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0
L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAg
ICBqaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5oCiAgICAgaml0L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMDUyNjNmZTYwNzE2OWJjZDJkOTcx
MDk5OGM0ZGMyOTIwNThhNzdlLi4wNTEyOTQ0OGJjNWMzMDIyNTNkMjgzYmJiMWYxZjg2NmVjMjMx
MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAK
IAkJNzIxMzFCRkEyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzEx
NENGIC8qIEpJVFBsYW5TdGFnZS5oICovOyB9OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0Yg
LyogSklUV29ya2xpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxp
bmVzLmggKi87IH07CiAJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBs
YW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5
OEY1MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAw
RjcyODJEQkNEQjEwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2
N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZCOTFCMDI2NTgxNjUzMDA4RTZGODIgLyogSklUV29y
a2xpc3RUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNkI5MUE4MjY1ODE2NTIwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovOyB9
OwogCQk3MjZCOTFCMzI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2NTgx
NjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2RjgyIC8q
IEpJVFBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNkI5MUFGMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi87IH07CkBAIC00MTgyLDYg
KzQxODMsNyBAQAogCQk3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2
N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJhc2VsaW5lSklUUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThG
NjI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VsaW5lSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJl
Z2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFJl
Z2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBODI2NTgxNjUy
MDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUV29ya2xpc3RUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI2QjkxQUEyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25Nb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDM0LDYgKzY0MzYsNyBAQAogCQkJCTUy
REQwMDA2MjZFMDM5QjMwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCAqLywKIAkJCQk3MjM5
OThGNjI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLywKIAkJCQk3MjM5
OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8sCisJCQkJNzI0MDA5
RjUyNzhEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEY2
NEIyNkYxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCiAJCQkJMEY2NEIy
NzAxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovLAogCQkJCTY1QjgzOTJEMUJB
Q0E5RDMwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8sCkBAIC05NzY4LDYgKzk3NzEs
NyBAQAogCQkJCTBGMkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVK
SVRQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyog
QmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEw
MDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTM1RTg5RkQyNUM1MEY4NzAwNzFFRTFFIC8qIEJpZ0ludDY0QXJy
YXkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGJmNmZiZTMwNWIzZmQ0ZDU2YWFhODUyODljZTMxMzE1
YTg3MzViZTUuLmYxZmY2Mzk0YzlmNGVlZDUxYzEwMGM1ZTRjMjdlZjY4ZjBkYjViNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAg
LTY3NCwxMiArNjc0LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVz
dCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0
LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmln
aHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwg
ZGVzdCk7CkBAIC0xMDA3LDEyICsxMDE3LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1
YjY0KHNyYywgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJ
RCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1t
LCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3Vi
NjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJ
bW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVk
SW1tNjQoaW1tKSwgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGNkMTI5ZjZkOWE4N2UwNjlhZWNmYTQy
NGFmZTcwZjBmMTE1Y2QxNDUuLjEzNjZkZDUxMmJiMTYyMzQzOGM3ZjlmZWFkOWVjMmY2MmM0NzMy
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2lu
ZyBBc3NlbWJsZXIgPSBUQVJHRVRfQVNTRU1CTEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFS
TXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6
OmlwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVy
ID0gQVJNUmVnaXN0ZXJzOjpyNjsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3Rl
cklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxp
bmUgY29uc3RleHByIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVy
czo6cjY7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdp
c3RlcklEIGZwVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5s
aW5lIGNvbnN0ZXhwciBBUk1SZWdpc3RlcnM6OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdp
c3RlciA9IEFSTVJlZ2lzdGVyczo6ZDc7CiAgICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5n
bGVSZWdpc3RlcklEIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3Rl
cnM6OmFzU2luZ2xlKGZwVGVtcFJlZ2lzdGVyKTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIg
aW5zdHJ1Y3Rpb24gc2V0LCBpbnN0cnVjdGlvbnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJz
IHIwLXI3IGNhbiBvZnRlbgpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBG
T1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNp
emUoKTsKICN1bmRlZiBEVU1NWV9SRUdJU1RFUl9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRj
aFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRk
cmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAg
IDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIx
NTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAxZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2
ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92
YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUo
YSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGltbSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBz
dWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaAppbmRleCAwMGE1NTQ5N2ZkNjNhZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0
MGQyLi43N2U0YTZlOWVmM2Y4YWM3MmE1ZGQwYzc4MjhhMGJkY2VjMzVkNmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxNb2RlLmgi
CiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCkBAIC00NywxNCArNDgsNiBAQCBlbnVtIE9wY29k
ZUlEIDogdW5zaWduZWQ7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5s
aW5rZWRDYWxsTGlua0luZm87CiAKLSNpZiBFTkFCTEUoSklUKQotbmFtZXNwYWNlIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5m
bzo6anNSZWdUMTAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKLX0KLSNlbmRpZgotCiBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2Vu
dGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CkBAIC00NjIsOSArNDU1LDkgQEAgcHVibGljOgogICAgIH0KIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkg
eyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVHUFI7IH0KLSAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUjsgfQotICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BS
KEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BS
ID09IEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsZWVHUFI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxs
TGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExp
bmtJbmZvR1BSOyB9CisgICAgdm9pZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikgeyBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm9HUFIgPT0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7IH0KICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
aW5kZXggNGI5YTQ5NTlmZDhmZjM1MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4Mzdh
MWFmOWU3MjVkMjUyNGY0ZWZlNjhkNjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIz
MywxMiBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9u
SGFuZGxlcigpCiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRF
eGNlcHRpb25IYW5kbGVyLCBvcmlnaW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAg
ICB9KTsKICAgICB9IGVsc2UgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgp
OwogICAgICAgICBWTSogdm0gPSAmbV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAg
ICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAg
IGxpbmtCdWZmZXIubGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgICAgICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbihtX3ZtKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXJDYWxsID0gaml0LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGpp
dC0+YWRkTGlua1Rhc2soCi0gICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKLSAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxl
ckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0
aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0
aW9uSGFuZGxlcihtX3ZtKTsKLSNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQx
NzQyYmQ0OTViNjZlY2E0NTA4ZDczYjhkMzhjYWNmZjE1Yy4uZjQxZWZlNjI3NTM4ODc1NGJjNmVh
YzhhZTNjNGYzODdiYmY2NGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUg
IkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCIKLSNpbmNsdWRlICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogCkBAIC00MjksNyAr
NDI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0
cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBl
ID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4
LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3Qg
Y2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVz
ZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1Ip
OworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vz
c1R5cGUpIHsKQEAgLTUyNiw3OCArNTI2LDc4IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86Omlu
aXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAg
ICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZh
bDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VH
UFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigp
OworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZh
bDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigp
OwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6
cHJvcGVydHlKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9w
ZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICBo
YXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAg
ICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFz
dFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1Iu
dGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICBo
YXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnBy
b3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJl
c3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJl
Z3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5
SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRh
Z0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwot
ICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
Ui50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAg
ICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRK
U1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpJbnN0YW5jZU9mOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAg
ICAgICAgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVyczo6cHJvdG9KU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BS
ID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2Fk
R1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNl
b2Y6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsK
KyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9m
OjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BS
ID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpT
Ui50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pT
Ui50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlTmFtZTogCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAog
ICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
IHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3Rl
cnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAg
ICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3Bl
cnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFz
ZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFs
dWVUYWdHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsK
KyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNl
SlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAg
ICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9
IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5
SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
KyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAg
ICAgdi50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJh
c2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnRh
Z0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5
SWQ6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6CkBAIC02MDUsNjUgKzYwNSw2NSBAQCB2b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29k
ZUJsb2NrKiwgVW5saQogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZDoKICAgICAgICAgaGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxp
ZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0g
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNS
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRh
Z0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAg
ICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdH
UFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGhhc0Nv
bnN0YW50SWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVl
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVn
aXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkV2l0aFRoaXM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MudGhpc0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnRoaXNU
YWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIo
KTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0
aFRoaXM6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAg
ICB2LnRoaXNUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0
aGlzSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6UHV0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAg
ICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZh
bHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6
OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFs
aWRHUFJSZWc7Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlk
UmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIo
KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFs
OgogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0
YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1Iu
cGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3Bl
cnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
VmFsOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAgICAg
ICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCi0gICAgICAgICAgICBt
X2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7
CisgICAgICAgICAgICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNl
VGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAg
ICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnBy
b3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpT
Ui50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OnZhbHVlSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6
Q2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNl
OwogICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAg
IHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFu
ZEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IudGFn
R1BSKCk7Ci0gICAgICAgIHYuYnJhbmRUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LmJy
YW5kVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1Iu
dGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlYjIwY2U2NDVhZjBiYjU4NDU1
ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2ODBjNWI0YmYxNzBlOTVkYTM5
ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAg
ICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZl
KTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsK
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNr
c1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxl
ZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsK
LQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZy
YW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGgu
c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgICAgICBhcHBlbmRDYWxs
KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotCi0gICAg
ICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4
Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmso
dGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
ICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAgICAgIGFwcGVuZENhbGwob3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsK
ICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0
cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
ICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIu
bGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHVi
KGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAg
ICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKQog
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9s
bGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsgPSB2bSgpLmdldENUSVN0dWIo
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAgYXV0byB0YXJnZXQgPSBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRodW5rLmNvZGUoKSk7CkBAIC0z
ODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxh
dGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsK
ICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2lu
KCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JF
eGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVj
ZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBl
bmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5k
bGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50
cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCmluZGV4IDQ5OTdiZDRiYjkwZTU5MzcyMjkwYzBlYWIyODY4YjZjMTgx
MjlhN2EuLmE3MjhlZmQ4NzEyZWM1ZTA5YzZkNzU2MWY0Mjk1Zjg4NzNkZDIyNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTMxMyw3ICszMTMsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7CiAgICAgCiAgICAgdm9pZCBl
eGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5
Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIGxpbmtP
U1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA5Yjk4ZDU0NzYzMTgzODZhZmIy
ZmVjZjhlZTFkMjYwMmFhZmFkZWU3Li40OGExODBiNzQwYWFjZTNmYTAzMTkzNzFlNWUwYmM0ZmM5
YzgyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEy
OCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxl
ci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5sYWJlbCgpOwotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVyID0gaml0
Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0LmFkZExpbmtUYXNrKAogICAg
ICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAg
ICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
dm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAg
ICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgc3RhdGUu
ZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBhNmFmZmUzNTlh
OTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1
NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAg
LTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwog
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAg
ICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGpp
dC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAg
IGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BF
bnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
TG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0g
ICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAg
ICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpy
ZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlua0J1ZmZl
ci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2Rl
QmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBv
cGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
ICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZWxzZQotICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21D
YWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGxp
bmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFn
Pih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAg
ICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
bik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCmluZGV4IDk4MmU0NWFhYWU1NmIyNmQxZjg1OWVlNzI4ZjZiZDcyN2YzMjMzNDMuLjYyYmI0
YWE2OTIyZDQyN2FiZDY2YjQ5OTdlOWRmZTM1ZmMzMDYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTk0NSw0OSArMTk0NSw2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0SW5zdGFuY2VOZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKIAotICAgIC8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBs
aXN0IG9mIEdQUlJlZ3MgYW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBp
biBzdGF0aWMKLSAgICAvLyBhc3NlcnRpb25zIHRvIGVuc3VyZSB0aGF0IHJlZ2lzdGVyIGFsaWFz
ZXMgbGl2ZSBhdCB0aGUgc2FtZSBwb2ludCBkbyBub3QgbWFwIHRvIHRoZSBzYW1lCi0gICAgLy8g
YXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4K
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1
cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEJhc2Ug
Y2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAv
LyBHUFJSZWcgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIFJlZ2lzdGVySUQg
Z3ByLCBBcmdzLi4uIGFyZ3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVy
bGFwSW1wbFJlZ01hc2soZ3ByKTsKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFz
aywgYXJncy4uLik7Ci0gICAgfQotCi0gICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJs
YXBJbXBsKHVpbnQ2NF90IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQotICAg
IHsKLSAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXls
b2FkR1BSKCkpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIG1hc2sgfD0gbm9PdmVy
bGFwSW1wbFJlZ01hc2soanNyLnRhZ0dQUigpKTsKLSNlbmRpZgotICAgICAgICBpZiAodXNlZCAm
IG1hc2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJs
YXBJbXBsKHVzZWQgfCBtYXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG5vT3ZlcmxhcEltcGxSZWdNYXNrKFJlZ2lzdGVySUQgZ3ByKQotICAgIHsK
LSAgICAgICAgaWYgKGdwciA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgcmV0dXJuIDBV
TEw7Ci0gICAgICAgIHVuc2lnbmVkIGJpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihncHIpOwot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXQgPCBzaXplb2YodWludDY0X3QpICogQ0hBUl9CSVQp
OwotICAgICAgICByZXR1cm4gMVVMTCA8PCBiaXQ7Ci0gICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BS
UmVnIGNhbGxlZVNhdmVzQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMDY0NDcyZTRhMTVlODJjODRm
YjA5Y2I0YjgyN2EzZDgxOGNhOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgKQEAgLTAsMCArMSw0NTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJhc2VsaW5l
SklUUmVnaXN0ZXJzIHsKKworbmFtZXNwYWNlIENhbGwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBjYWxsZWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNh
bGxMaW5rSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Cit9CisKK25hbWVzcGFjZSBDaGVja1Ry
YXBzIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gR1BSSW5mbzo6
bm9uQXJnR1BSMDsKK30KKworbmFtZXNwYWNlIEVudGVyIHsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGNhbkJlT3B0aW1pemVkR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgY29uc3RleHByIEdQUlJl
ZyBsb2NhbHNUb0luaXRHUFIgPSBHUFJJbmZvOjpyZWdUMTsKK30KKworbmFtZXNwYWNlIEluc3Rh
bmNlb2YgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJl
c3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07CisgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpT
UkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsK
KyNpZiBDUFUoTUlQUykKKyAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIKKyNlbHNlCisgICAgICAgIEpTUkluZm86OmpzUmVnVDMyCisjZW5kaWYKKyAg
ICB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEpTUkluZm86OmpzUmVn
VDU0IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qx
IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q3IH07Cisj
ZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKK30KKworbmFtZXNwYWNlIEpG
YWxzZSB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNS
ZWdUMzIgfTsKK30KKworbmFtZXNwYWNlIEpUcnVlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgVGhyb3cg
eworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpLCAwPigpOworICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyB0aHJvd25WYWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPGRlY2x0eXBlKG9w
ZXJhdGlvblRocm93KSwgMT4oKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh0
aHJvd25WYWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8g
Q1RJIHRodW5rIik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BS
LCB0aHJvd25WYWx1ZUpTUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIp
OworfQorCituYW1lc3BhY2UgUmVzb2x2ZVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1l
dGFkYXRhR1BSID0gR1BSSW5mbzo6cmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQ
UiA9IEdQUkluZm86OnJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBHUFJJbmZvOjpyZWdUMzsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0
YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworfQorCituYW1lc3BhY2UgR2V0RnJvbVNjb3BlIHsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgY29uc3RleHByIEdQ
UlJlZyBzY29wZUdQUiA9IEdQUkluZm86OnJlZ1QyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBHUFJJbmZvOjpyZWdUMzsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQorCituYW1lc3BhY2UgUHV0VG9TY29wZSB7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEdQUkluZm86OmFyZ3VtZW50
R1BSMjsKK30KKworbmFtZXNwYWNlIEdldEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9u
IGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKworICAgIC8vIEZhc3Qg
cGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QxIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7
IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUklu
Zm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRDbG9iYmVySlNSKSwgIlJlcXVpcmVk
IGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMK
KyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJv
cGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7
CisgICAgfQorfQorCituYW1lc3BhY2UgR2V0QnlJZFdpdGhUaGlzIHsKKyAgICAvLyBSZWdpc3Rl
cnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1Qx
IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dGhpc0pTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
UiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9u
bHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQ
UkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBD
VEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhp
c0pTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBH
ZXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBh
dGhzCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVy
blZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9
OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVn
VDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5h
bWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNS
LCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERh
dGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5h
bWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BS
LCBwcm9maWxlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBz
bG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworI2lmIFVTRShKU1ZBTFVFNjQpCituYW1lc3Bh
Y2UgRW51bWVyYXRvckdldEJ5VmFsIHsKKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgLy8g
V2UgcmVseSBvbiB0aGlzIHdoZW4gbGlua2luZyBhIENvZGVCbG9jayBhbmQgaW5pdGlhbGl6aW5n
IHJlZ2lzdGVycyBmb3IgYSBHZXRCeVZhbCBTdHViSW5mby4KKyAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VKU1IgPT0gR2V0QnlWYWw6OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlK
U1IgPT0gR2V0QnlWYWw6OnByb3BlcnR5SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpT
UiA9PSBHZXRCeVZhbDo6cmVzdWx0SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFIpOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDEgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMyB7IEdQUkluZm86OnJlZ1Q1IH07Cit9CisjZW5kaWYKKwor
bmFtZXNwYWNlIFB1dEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9
OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3Bh
Y2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdH
UFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVN
QjIKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1
ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFs
dWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiksICJSZXF1aXJlZCBm
b3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisg
ICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZW5kaWYKKyAgICAgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0
R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJ
IHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVl
SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJl
ZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIFB1
dEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0
aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBH
UFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGgg
b25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxl
R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAg
Ly8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIy
KQorICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhIGJpdCBzaG9ydCBvbiByZWdpc3RlcnMgb24g
QVJNX1RIVU1CMiwgYnV0IHdlIGNhbiBqdXN0IGFib3V0IGdldCBhd2F5IHdpdGggdGhpcworICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3RlcigpCisjZWxz
ZSAvLyBPdGhlciBKU1ZBTFVFMzJfNjQKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUOAor
I2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwg
dmFsdWVKU1IsIHByb2ZpbGVHUFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAiUmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFj
ZSBJbkJ5SWQgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR2V0QnlJZDo6
YmFzZUpTUiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
ZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBHZXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OworfQorCituYW1lc3Bh
Y2UgSW5CeVZhbCB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VKU1IgPT0gR2V0QnlWYWw6OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlK
U1IgPT0gR2V0QnlWYWw6OnByb3BlcnR5SlNSKTsKK30KKworbmFtZXNwYWNlIERlbEJ5SWQgewor
ICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZh
c3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpT
UiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5k
aWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNs
b3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Qw
IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFN
b2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07Cisj
ZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBl
Y21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAg
IH0KK30KKworbmFtZXNwYWNlIERlbEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBi
b3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86
OmpzUmVnVDMyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1QyIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIg
eyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsK
KyAgICB9Cit9CisKK25hbWVzcGFjZSBQcml2YXRlQnJhbmQgeworICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR2V0QnlWYWw6OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hh
cmVkIHNsb3cgcGF0aCB0aHVuaworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7
IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRo
IHRodW5rCisKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBE
YXRhSUMiKTsKKyAgICB9CisKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR2V0QnlWYWw6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIGJ5dGVjb2Rl
T2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsi
KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJzCisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmVi
MWM1ZDNjZjA0MDk4Mjg5MzVlLi42ZDYyYzU0MzczYzI2MDU1ZjU1YzMwNTEwZTM3YWM5YjdjZDZl
YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIK
KyNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MiBAQCB2b2lk
IENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0lu
dGVybmFsUHRyVGFnPiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJU
YWcsIGRlc2NyaXB0aW9uKTsKIH0KIAorc3RhdGljX2Fzc2VydCghKChtYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbCArIDIqc2l6ZW9mKENQVVJlZ2lzdGVyKSkgJSAxNiksICJTdGFjayBtdXN0
IGJlIGFsaWduZWQgYWZ0ZXIgQ1RJIHRodW5rIGVudHJ5Iik7CisKK3ZvaWQgQ0NhbGxIZWxwZXJz
OjplbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpCit7CisgICAgLy8gU3Rhc2ggZnJhbWUgcG9pbnRlciBh
bmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgIHB1c2goWDg2UmVnaXN0ZXJz
OjplYnApOyAvLyByZXR1cm4gYWRkcmVzcyBwdXNoZWQgYnkgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24K
KyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcHVzaFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwdXNo
UGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNl
CisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorICAgIC8v
IE1ha2UgZW5vdWdoIHNwYWNlIG9uIHRoZSBzdGFjayB0byBwYXNzIGFyZ3VtZW50cyBpbiBhIGNh
bGwKKyAgICBpZiBjb25zdGV4cHIgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAg
ICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRo
dW5rRXBpbG9ndWUoKQoreworICAgIC8vIFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByICht
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0z
MihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BV
KFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOyAvLyBSZXR1cm4gYWRkcmVzcyBs
ZWZ0IG9uIHN0YWNrCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAgIHBv
cFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0
ZXIpOworI2Vsc2UKKyMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGFmYzVkY2M4OTllNzU2
MzM5YTgxMTYzNGUyM2MyMTdiZGExY2NmNjQuLmU3YjhkZDFiNWNlZjc3MmRiMjYxOTVlZmY0NTBi
OTJjZDdkZjViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApA
QCAtODUzLDE0NSArODUzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1pdEpJVENv
ZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2Nv
cGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKLXByaXZhdGU6
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4K
LSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9w
ZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzaXplb2YodHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxBcmdOdW0+KTsKLSAgICB9Ci0KLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEFyZ3Mu
Li4gcmVzdCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bSAtIEluZGV4PigpIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUg
bGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KQotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgZmlyc3QgfTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8g
Y29uc3RleHByCi0gICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdO
dW0sIEluZGV4IC0gMT4ocmVzdC4uLik7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAg
IHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJl
ZyBzZWNvbmQsIEdQUlJlZyB0aGlyZCwgQXJncy4uLiByZXN0KQotICAgIHsKLSAgICAgICAgY29u
c3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUs
IEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRB
cmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAg
ICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRml0cyBpbiBzaW5n
bGUgR1BSCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lz
ZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0o
dGhpcmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0g
R1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykg
ewotICAgICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMg
dG8gc3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyB0aGlyZCwgc2Vjb25kIH07Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBh
biBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBz
dGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAg
ICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgotICAgICAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4
IC0gMT4oc2Vjb25kLCB0aGlyZCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZp
cnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BSSW5mbzo6YXJndW1l
bnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAg
ICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8gc3RhcnQgd2l0aCBl
dmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEsIGJ1dCByZXVzZSBpdCBs
YXRlcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051
bSwgSW5kZXggLSAxPihmaXJzdCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlz
IGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0
dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
LCBJbmRleCAtIDE+KHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBB
cmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0
YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJlZyBz
ZWNvbmQpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcg
PSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFu
ZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgYW5k
ICdzZWNvbmQnIGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQg
b24gdGhlIHN0YWNrIGFueXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewotICAg
ICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAg
ICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRv
IGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoZmlyc3QpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4
cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0s
IEluZGV4IC0gMT4oc2Vjb25kKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJlZ2lzdGVy
cyIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1l
Li4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJl
ZyBmaXJzdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFy
ZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBo
YW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBp
cyBuZXZlciBhbiBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQgb24gdGhlIHN0
YWNrIGFueXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKLSAgICB9Ci0jZW5kaWYKLQotcHVibGljOgotICAg
IC8vIFNlZSBwcmVmZXJyZWRBcmd1bWVudEdQUiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5j
dGlvbi4gVGhpcyB2ZXJzaW9uIHJldHVybnMgYSBKU1ZhbHVlUmVncwotICAgIC8vIGluc3RlYWQg
b2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFM
VUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCi0gICAgLy8gcmVxdWlyZWQgdG8gaG9sZCBhIDY0LWJp
dCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50LCBzbyB1c2UgdGhpcyBpbiBwYXJ0aWN1bGFyIHdoZW4g
cGFzc2luZyBhCi0gICAgLy8gSlNWYWx1ZS9FbmNvZGVkSlNWYWx1ZSBiZSBjb21wYXRpYmxlIHdp
dGggYm90aCBKU1ZBTFVFNjQgYW4gSlNWQUxVRTMyXzY0IHBsYXRmb3JtcywgYW5kIHVzZQotICAg
IC8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRp
b25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KLSAgICBwcmVmZXJyZWRBcmd1
bWVudEpTUigpCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0jaWYgIU9TKFdJTkRPV1MpCi0g
ICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAg
ICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjQsIEdQUkluZm86OmFyZ3VtZW50R1BSNSk7Ci0jZWxzZQotICAgICAgICBy
ZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50
R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6bm9uQXJn
R1BSMCwgICBHUFJJbmZvOjpub25BcmdHUFIxKTsKLSNlbmRpZgotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSNpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLy8gVGhlIGxhc3QgcmVnaXN0ZXIg
aXMgZ3VhcmFudGVlZCB0byBiZSBwdXNoZWQgb250byB0aGUgc3RhY2sgZm9yIGNhbGxzLCBzbyB3
ZSBjYW4gdXNlCi0gICAgICAgIC8vIHRoZSBsaW5rIHJlZ2lzdGVyIGFzIGEgdGVtcG9yYXJ5Lgot
ICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAg
ICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5m
bzo6cmVnVDcsICAgICAgICBHUFJJbmZvOjpyZWdUNiwKLSAgICAgICAgICAgIEdQUkluZm86OnJl
Z1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBBUk1SZWdpc3RlcnM6OmxyKTsKLSNl
bGlmIENQVShNSVBTKQotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdO
dW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6cmVnVDIsICAgICAgICBHUFJJbmZvOjpyZWdUMywKLSAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBHUFJJbmZv
OjpyZWdUNik7Ci0jZW5kaWYKLSNlbmRpZgotICAgIH0KLQotICAgIC8vIENvbXB1dGVzIChzdGF0
aWNhbGx5LCBhdCBjb21waWxhdGlvbiB0aW1lKSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIg
YW4gYXJndW1lbnQgc2hvdWxkIGJlCi0gICAgLy8gbG9hZGVkIGludG8gZm9yIGEgZnVuY3Rpb24g
Y2FsbC4gVGhpcyB5aWVsZHMgdGhlIEFCSSBzcGVjaWZpYyBhcmd1bWVudCByZWdpc3RlcnMgZm9y
IHRoZQotICAgIC8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRh
YmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKLSAgICAvLyBhcmd1bWVu
dHMuIFRoZSBpZGVhIGlzIHRoYXQgJ3NldHVwQXJndW1lbnRzJyB3aWxsIGhhdmUgdG8gZG8gdGhl
IG1pbmltYWwgYW1vdW50IG9mIHdvcmsgd2hlbgotICAgIC8vIHVzaW5nIHRoZXNlIHJlZ2lzdGVy
cyB0byBob2xkIHRoZSBhcmd1bWVudHMsIHNvIGlmIHlvdSBhcmUgbG9hZGluZyBtb3N0IGFyZ3Vt
ZW50cyBmcm9tIG1lbW9yeQotICAgIC8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlp
ZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+Ci0gICAgcHJlZmVycmVkQXJndW1lbnRHUFIoKQotICAg
IHsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFy
ZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkgPD0gNCwgIkFyZ3VtZW50IGRvZXMgbm90IGZpdCBp
biBHUFIiKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gcHJlZmVycmVkQXJndW1lbnRKU1I8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtPigpLnBheWxvYWRHUFIoKTsKLSAgICB9CisgICAgdm9pZCBlbWl0
Q1RJVGh1bmtQcm9sb2d1ZSgpOworICAgIHZvaWQgZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAppbmRleCAzZGQ2ZTBjYjFiZjU3N2I5MzQzNDBiNDEx
N2E2NTU4YTkxMjk1MWM5Li4xZDNmZjU4Nzk1YjViZDEzZTZiNTlkZjIwYzQwNTJkYTU5MjQ1MmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVE
YXRhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUg
IkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIK
QEAgLTEwMCw5ICsxMDEsOSBAQCBDYWxsRnJhbWVTaHVmZmxlRGF0YSBDYWxsRnJhbWVTaHVmZmxl
RGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoY29ucwogICAgICAgICAgICAg
ICAgIERhdGFGb3JtYXRKUyk7CiAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc2h1ZmZs
ZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJz
OjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOworICAgIHNodWZmbGVEYXRh
LmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOwogI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBhaXIo
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVl
ID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
ZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5
bG9hZEdQUigpKTsKICNlbmRpZgogICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lz
dGVycygmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0
ZXJzKCkpOwogICAgIHNodWZmbGVEYXRhLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNjMmNjYjky
MjYuLjgyYWY3MTY5MzA5ZDdjOTAwYWM4ZjBlNTVkNmI1NzdhYTYxMmI2MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvblRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTc2LDYgKzk3OCwyMTEgQEAgaW5saW5l
IE5vUmVzdWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRUYWcpIHsgcmV0dXJuIE5vUmVzdWx0
OyB9CiAvLyBXZSB1c2UgdGhpcyBoYWNrIHRvIGdldCB0aGUgR1BSSW5mbyBmcm9tIHRoZSBHUFJS
ZWcgdHlwZSBpbiB0ZW1wbGF0ZXMgYmVjYXVzZSBvdXIgY29kZSBpcyBiYWQgYW5kIHdlIHNob3Vs
ZCBmZWVsIGJhZC4uCiBjb25zdGV4cHIgR1BSSW5mbyB0b0luZm9Gcm9tUmVnKEdQUlJlZykgeyBy
ZXR1cm4gR1BSSW5mbygpOyB9CiAKK2NsYXNzIE5vT3ZlcmxhcEltcGwgeworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soR1BSUmVnIGdwcikKKyAgICB7
CisgICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHJldHVybiAw
VUxMOworICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3ByKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgY291bnRPZkJpdHM8dWludDY0X3Q+KTsKKyAg
ICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OworICAgIH0KKworICAgIC8vIEJhc2UgY2FzZQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5v
T3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIEdQUlJlZyBj
YXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBHUFJSZWcgZ3ByLCBBcmdzLi4uIGFy
Z3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2so
Z3ByKTsKKyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7Cisg
ICAgfQorCisgICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3Qg
dXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBheWxvYWRHUFIoKSk7CisjaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbWFzayB8PSBub092ZXJsYXBJbXBsUmVnTWFzayhq
c3IudGFnR1BSKCkpOworI2VuZGlmCisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1h
c2ssIGFyZ3MuLi4pOworICAgIH0KKworcHVibGljOgorICAgIC8vIEVudHJ5IHBvaW50CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVu
dHJ5KEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQor
fTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1
ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0YXRpYworLy8gYXNzZXJ0aW9ucyB0
byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8g
bm90IG1hcCB0byB0aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KK3RlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJn
cykgeyByZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50cnkoYXJncy4uLik7IH0KKworY2xhc3MgUHJl
ZmVycmVkQXJndW1lbnRJbXBsIHsKKyAgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
dGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBB
cmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZW9m
KHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVu
dFR5cGU8QXJnTnVtPik7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRl
eCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFs
dWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCisgICAgeworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4o
KSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVn
cyB7IGZpcnN0IH07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZp
cnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3QuLi4p
OworICAgICAgICB9CisgICAgfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRl
eCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFs
dWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQs
IEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3Vy
cmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhv
dyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUlu
ZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkg
eworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3Rl
eHByCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdh
cm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAm
JiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBX
aWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdp
c3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCisgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhp
cyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1h
dHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3Qg
fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0
ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRzIGlu
IHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhl
cndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBp
Y2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQsIHJl
c3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVu
dEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBh
c3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNv
IHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3QsIHJl
c3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBp
cyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hl
ZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJl
dHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwgcmVz
dC4uLik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9
IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQorICAgIHsKKyAgICAgICAg
Y29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5
cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJl
bnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsK
KyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJn
dW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAg
ICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNl
Y29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmly
c3QgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZD
dXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAv
LyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0
dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0s
IHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCisgICAgeworICAgICAg
ICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3Vy
cmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIp
OworICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVn
aXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYg
Y29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJz
Iik7CisgICAgfQorI2VuZGlmCisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpl
bmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVt
KSwgSlNWYWx1ZVJlZ3M+CisgICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorI2lmICFPUyhXSU5ET1dTKQorICAgICAgICByZXR1cm4gcGlja0pTUjxP
cGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAg
ICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjUpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJ
bmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9uQXJn
R1BSMSk7CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisjaWYgQ1BVKEFSTV9USFVN
QjIpCisgICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVz
aGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQorICAgICAgICAvLyB0
aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAgICAgR1BSSW5m
bzo6cmVnVDYsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJl
Z1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Qy
LCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAg
ICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOworI2VuZGlmCisjZW5k
aWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgorICAgIHBy
ZWZlcnJlZEFyZ3VtZW50R1BSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQs
ICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJu
IHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BS
KCk7CisgICAgfQorfTsKKworLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0IGNvbXBpbGF0aW9u
IHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVudCBzaG91bGQgYmUK
Ky8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkg
c3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKKy8vIGluaXRpYWwgYXJndW1lbnRz
IGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRo
ZSByZW1haW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVu
dHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Ygd29yayB3aGVuCisvLyB1
c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJl
IGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKKy8vIGFueXdheSwgdXNpbmcgdGhl
c2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxs
LgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2Nv
bnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CitwcmVmZXJyZWRBcmd1bWVudEdQUigpCit7CisgICAg
cmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJndW1lbnRHUFI8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtPigpOworfQorCisvLyBTZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9y
IHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNW
YWx1ZVJlZ3MKKy8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1
aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCisvLyByZXF1aXJl
ZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGlu
IHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUgdG8g
YmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9y
bXMsIGFuZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBv
aW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KK3ByZWZlcnJlZEFyZ3VtZW50SlNS
KCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJbXBsOjpwcmVmZXJyZWRBcmd1bWVu
dEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVNT
RU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCAwMzBmM2YzNmY2ZWVmZDg3OTBkYTg5NDU3OGM5NGFhYTIwYzU5OTdmLi4zZTA0N2EzZTcw
YmZkNzIxZWE3NWZhODNjNjUyNTBjYjE3OWE4YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogI2RlZmluZSBERUZJ
TkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAgICAgICBpZiAo
bV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBcCi0gICAgICAgICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RFX0lOX01BSU4ob3BfIyNu
YW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogCiAjZGVm
aW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTog
eyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBz
bG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGl0ZXIsIHNsb3df
cGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTY1OCw5ICs2NTgs
NiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRfcHJvdG90
eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgREVGSU5FX1NM
T1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09Q
KHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg1Nyw5ICs4NTQsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVm
Zm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5TGFiZWw7IC8vIE5ldmVy
IHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBUYWJsZS5pc0VtcHR5KCkp
OwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLSAgICAKKwog
ICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9m
Q29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVt
KGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7
CkBAIC05MTEsMTIgKzkwNiwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgIH0KICAgICB9
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3Ms
IENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25DaGVj
a3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFi
ZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5kaWYKIAogICAgIGZvciAo
YXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYgKHJlY29yZC50YXJnZXQp
CkBAIC0xMDM3LDM1ICsxMDMwLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29t
cGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25FZmZvcnQKICAgICByZXR1
cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVt
cHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2su
bGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVu
dCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAg
ICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcp
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
dm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0g
ICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxl
ZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsK
LQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBv
bmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0
aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkp
OwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLX0KLQogdm9pZCBK
SVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAgICAgLy8gVGhp
cyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRp
b24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBvcF9wcm9maWxl
X3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmZjM4ODc0MzNjM2Q1ZDFjY2YzNjhj
NmYzZWU5ZTFhOGE4ODQ3Njk4Li45NzY1NWQyZWJmOTgwMTgyZjBhOGQ2NWIzMzAwN2U2YTMyZDJh
NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsyNzYsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxi
YWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0KICAgICAgICAgdm9p
ZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1Rv
SG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBv
aW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotICAgICAgICB2
b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiwg
Y29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgdm9pZCBl
bWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNvZGVUeXBlJiwgU2xvd1Bh
dGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jf
aGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBAIC02MTQsNyArNjEyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKKyAgICAg
ICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
LCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9y
X29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1
YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNs
b3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNz
VHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29t
bW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1NiwyOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAgICBwcml2YXRlOgotI2lm
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVuayBnZW5lcmF0b3JzLgot
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOwotCi0gICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3Ry
YXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOwog
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF90
aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3Io
Vk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1bmtJc1VzZWRGb3JPcEdl
dEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZW1pdCBpbmxp
bmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29sdmVkQ2xvc3VyZVZhciBh
bmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5cGVzIHdpdGggb3BfZ2V0
X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZlVHlwZSA9PSBHbG9iYWxW
YXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09
IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNU
cnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
KyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9t
X3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYpOwog
ICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhW
TSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVU
aHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAgICAgIEp1bXAgZ2V0U2xv
d0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICAgICAgewpA
QCAtNzE4LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhBZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwotI2VuZGlm
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CkBA
IC03NjMsNyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8geDY0IFdp
bmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxh
cmdlciB0aGFuIDY0IGJpdHMuCiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBl
PHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFs
dWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAgICAgICAgICB1cGRhdGVU
b3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAgICAgICAgICAg
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAj
ZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNjk5ZWFmY2I3MjllY2E0MTQwNzVlYzEw
Y2NjOTI2MjIwYmQ0NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1YTVkYmRiMGVmMDA5MDUyMDExNTQ5ODEy
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00
NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwg
anNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Bv
dyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcG93KTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9wb3cpOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVtcHR5KCkpOwotICAgICAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5
ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJj
Mjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJz
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZm
bGVyLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBP
cCYgYnl0ZWNvZGUpCiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1Qz
LCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdUMCwgQ2FsbExpbmtJbmZv
OjpvZmZzZXRPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpKTsKICAgICBub3RCaWdn
ZXN0LmxpbmsodGhpcyk7Ci0gICAgCisKICAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KICAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9IGpzUmVnVDEwOwogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCB0aGlzSlNSKTsKQEAgLTE5NiwxMSArMTk3LDExIEBAIHZv
aWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVy
T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNh
bGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUiwgQmFzZWxpbmVD
YWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7Ci0gICAgbG9hZFZhbHVlKEFk
ZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUNhbGxSZWdp
c3RlcnM6OmNhbGxlZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6
OmNhbGxMaW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAgICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1Bv
aW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAt
IHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpj
YWxsZWVKU1IpOwogICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOwotICAgIG1hdGVyaWFsaXpl
UG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNl
dE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BS
KTsKLSAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBC
YXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIp
OworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZh
bDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgIGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3Zp
bmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlu
a0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICByZXNldFNQKCk7CiB9CiAKQEAgLTIx
MywxOCArMjE0LDE4IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3AmLCBVbmxp
bmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkKQogdGVtcGxhdGU8PgogYm9vbCBKSVQ6OmNvbXBp
bGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0lu
Zm8qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKIHsKLSAgICBtYXRlcmlhbGl6ZVBvaW50
ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNh
bGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0g
ICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNG
YXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQ
UigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRh
PHZvaWQoKT4oWyZdIHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNv
ZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93
UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQo
KT4oWyZdIHsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxs
RnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNv
ZGUsIG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAgICAgICAgIENhbGxG
cmFtZVNodWZmbGVyIHNodWZmbGVyIHsgKnRoaXMsIHNodWZmbGVEYXRhIH07Ci0gICAgICAgIHNo
dWZmbGVyLmxvY2tHUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwor
ICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
TGlua0luZm9HUFIpOwogICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKICAg
ICB9KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKIAogICAgIGF1dG8gZG9uZUxvY2F0
aW9uID0gbGFiZWwoKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5k
ZXhdLmRvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICB1
aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0
cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCi0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6
Y2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVl
SlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOworICAgIHN0b3JlVmFsdWUoQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKGNvbXBpbGVDYWxsRXZh
bChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MSwxNyArMjcyLDE3IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWdu
ZWQgY2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAvLyBXZSBuZWVk
IHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0IGEgcG9pbnRlciBjb21w
YXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0Y2hlcyB0aGlzLgotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxl
ZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb21waWxlVGFpbENh
bGwoYnl0ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRh
dGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExp
bmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUs
IE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cykgewotICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxs
RGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBh
eWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3Bl
ZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJ
bmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAg
ICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFp
bENhbGxTbG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAg
ICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6
OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIH0pKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoc2xv
d1BhdGhzKTsKICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwpAQCAtMjg5LDcg
KzI5MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRo
KCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBhdXRvIHNsb3dQYXRo
cyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJl
bCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKQEAgLTM3OCw3ICszNzksNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1
cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CiB9Ci0gCisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9j
YWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xv
d0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5r
SW5mb0luZGV4KyspOwpAQCAtMzkzLDEyICszOTQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3QKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVu
dHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0K
LSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0VmFy
YXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwog
fQotICAgIAorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50
SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CkBAIC00MTYsNyArNDE3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgpOwogCi0gICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1
YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVp
bnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC00MjcsOSArNDI4LDkgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmV0dXJuVmFsdWVKU1Ip
OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChy
ZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJl
dHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDCiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAK
ICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNS
ID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIEpTVmFsdWVSZWdzIGl0
ZXJhdG9ySlNSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CiAgICAg
SnVtcExpc3Qgbm90T2JqZWN0OwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxs
KGl0ZXJhdG9ySlNSKSk7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChp
dGVyYXRvckpTUi5wYXlsb2FkR1BSKCkpKTsKQEAgLTQ3OCw3ICs0NzksNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93QwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVy
dHlOYW1lcy0+bmV4dC5pbXBsKCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAorCiAgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CiAKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKTsKQEAgLTUxOCwxNiArNTE5LDE2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAg
ICAgICB9CiAgICAgfSkoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAK
ICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMg
dGVtcG9yYXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X25leHQsIG5leHRKU1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5
KG5leHRKU1IpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0
cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAg
ICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljKSkpOwogCkBAIC02MTYsOCArNjE3LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MK
ICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KGp1bXAoKSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRD
bG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1
bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRo
Ojpkb250Q2xvYmJlckpTUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJl
c3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYw
ZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0YmUuLmYyNzNmNDJiOTQ2NDYwMGJiMmQ5NmEzODU3MDQw
NWI2YTA5ZmEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
SklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDQ2Fs
bEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTQ5LDkgKzE1MCw5IEBAIHZvaWQgSklUR2V0QnlJZEdl
bmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25l
ZCBzdHViCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
Y3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3Jh
dGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwog
ICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMTg1LDkgKzE4Niw5IEBAIHZvaWQgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklU
JiBqaXQsIHVuc2lnCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzY3JhdGNo
R1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAg
IGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBz
Y3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE1LDEwICsyMTYsMTAgQEAgdm9pZCBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVu
c2lnbmVkIHN0dWIKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BS
KTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6
RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZSgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1
YkkKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAg
IHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRS
ZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpy
ZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c2NyYXRj
aEdQUjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDYy
OTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUyNGY5YjA0OWUwZjNmMzFj
Mjk2ZGM0ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5MCArNDgsNiBAQCBzdHJ1
Y3QgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGlu
dDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5hbWVzcGFjZSBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBK
U1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BS
SW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
LSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9Owot
I2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0j
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBH
UFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJl
Z1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYK
LX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxpbmVFbnVtZXJhdG9yR2V0
QnlWYWxSZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcg
YSBDb2RlQmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1
YkluZm8uCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJ
bmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKLQotc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdUMzsKLXN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7Ci1zdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQotI2VuZGlmCi0KLW5hbWVz
cGFjZSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OwotY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKLSNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07
Ci0jZWxzZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MzIgfTsKLSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5mbzo6
anNSZWdUNTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1j
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgot
c3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9K
U1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKLX0KLQotbmFtZXNw
YWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVz
dWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSICB7IEdQUkluZm86
OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQotbmFtZXNwYWNlIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6
cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zlcmxh
cChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKLX0K
LQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lm
IFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1Qx
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlk
UmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIg
fTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9
OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKLSNl
bmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVycyB7Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1Qx
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9Owot
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4
cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBH
UFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHBy
b2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNl
bGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpy
ZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDMs
IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFuZEpTUiA9PSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0KIGNsYXNzIEpJVElubGlu
ZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA1ODY0MTJi
YzQ3ZWU2YmI3NDBlZjE1MjA4NGVmMmNhMjFhNmIxNTliLi44ZjhlY2YyNzMzODZmNmYxNTkwNTBh
MzJlY2U0MWY3ZjRlYjlhNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aApAQCAtMTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAgZXhjZXB0aW9uQ2hlY2so
KTsKIH0KIAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNs
b3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0
aW9uKQotewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShmdW5jdGlvbik7Ci0g
ICAgZXhjZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLSNlbmRpZgotCiBBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
ZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8vIFRoZSBjYWxsZWUgaXMg
cmVzcG9uc2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRoZWlyIGNhbGxlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjlhZWZjYWU2ZmNlNDBi
NjdiYjQ3NTg2YzM3YWY4MGNhYWJmMWI4Ny4uYTVhYTQwZGI1ZGY1ZGZiOTA4ODcwZmI4ZGM0MjY0
Yjg3OGJlODVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2lu
Y2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b24uaCIKQEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9
IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJz
Ojp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3Rv
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7
Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3JhdGNoMUdQUjsKLSAg
ICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gxR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNoMkdQUjsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2LDkgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVK
U1I7CiAgICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnM6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9m
Ojpwcm90b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90bycgd2lsbCBiZSBwYXNz
ZWQgb24gc3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90b0pTUiA9PSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJCaXQoKSk7CiAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVK
U1IsIHByb3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
ZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJn
ZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1ZUpTUjsKIAotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikp
OwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1
bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdU
MCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmpl
Y3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwot
I2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEg
KzQ2NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFs
dWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9
IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigp
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpKRmFsc2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVn
VDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
LCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVC
bG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0
byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBz
Y3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1t
MzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxz
ZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQot
ICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFs
c2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJl
Z1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7
CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGlu
aygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
dmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRy
dWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRh
cmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExh
YmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7CiAKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZSk7Ci0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBy
ZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxPYmplY3RHUFIpKTsKLSAg
ICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVl
OwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhZGRKdW1wKGJy
YW5jaElmVHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZw
UmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BS
KSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1Yih2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
ICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSNlbmRp
ZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdv
cmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtNjc5LDMxICs2NTQs
MjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNU
cnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWUgPSByZWdU
MDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBheWxvYWRHUFIoKSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRy
dWU6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFH
UFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9i
YWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1Ry
dXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNo
MSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGlu
aygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRv
bmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZt
LCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBz
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0
KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJ
c1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
am5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVt
aXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAg
IHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2Jh
bE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7
Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVu
dEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BS
MTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0
aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRD
VElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5k
bGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIAotICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
VGhyb3c6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
VGhyb3c6OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICNpZiBO
VU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBqaXQubG9hZFB0cigmdm0u
dG9wRW50cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsKKyAgICB7CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVjdEdQUjsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWluZyBwYXJhbWV0ZXJzIik7
CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNj
cmF0Y2hHUFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGds
b2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgQ2FsbCBvcGVyYXRpb24g
PSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZm
ZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
VGhyb3cpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MSw3NyAr
MTIxMiw3NCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAg
ICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3Vy
IGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZv
aWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBp
bmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2Rl
QmxvY2stPm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6
ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVz
dGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBm
aXJzdDsgaiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFy
cmllcihyZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UK
ICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBs
b2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRD
b2RlQmxvY2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAt
IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3Zl
KFRydXN0ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9J
bml0R1BSKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVP
cHRpbWl6ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2Nh
bHNUb0luaXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwg
Y2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCks
IGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHVi
KG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVz
aFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICAv
LyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KLSAgICBqaXQuc3RvcmUz
MihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5l
ZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVk
R1BSID0gYXJndW1lbnRHUFI0OwogCi0gICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBp
bnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZz
ZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGppdC5zdWI2NChpdGVyYXRvckdQUiwgbG9jYWxz
VG9Jbml0R1BSLCBlbmRHUFIpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRl
cjo6Y2FuQmVPcHRpbWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBqaXQubW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAg
ICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5i
cmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAg
ICAgICAgaml0LnN0b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAgICAgICBqaXQuc3ViNjQo
VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGpp
dC5qdW1wKGluaXRMb29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVu
dGVyOjpsb2NhbHNUb0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIg
PSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpz
UmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIs
IGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAg
ICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZl
U3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VS
VChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3Rlcikp
LCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJl
Z2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BSKTsKKyAgICAgICAgaml0
LnN1YlB0cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgICAgICBq
aXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAg
ICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9
IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAg
ICAgICB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3Mo
aXRlcmF0b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVv
ZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQuanVtcChpbml0TG9v
cCk7CisgICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsKICAgICB9Ci0gICAg
aW5pdERvbmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxv
Y2spLgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1
bWVudEdQUjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNS
ZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBh
cmd1bWVudEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7
CisgICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0IDAuCisgICAgaml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
CisgICAgLy8gc2F2ZSBjYW5CZU9wdGltaXplZEdQUiAoYXJndW1lbnRzIHRvIGNhbGwgYmVsb3cg
YXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFjayB0aGlzKS4K
KyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1c2hUb1NhdmUs
IGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisgICAgaml0LnN1
YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5z
dG9yZVB0cihjYW5CZU9wdGltaXplZEdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlcikp
OworCisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmll
clNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVC
YXJyaWVyQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQubW92ZShH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3Jl
LgotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciksIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gUmVzdG9yZSBjYW5CZU9wdGltaXpl
ZEdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBvd25lcklzUmVtZW1iZXJlZE9y
SW5FZGVuLmxpbmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEzMzYsMTEgKzEy
OTQsMzAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2Vu
dGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5k
KGppdC5icmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAgICBqaXQuY29weUxM
SW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7
CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dT
KSAmJiBDUFUoWDg2XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxh
cmdlciB0aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBh
c3NlZCBhcworICAgICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJn
dW1lbnRzIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFz
c3VtZWQgYnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiB9OworI2Vsc2UKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdH
UFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworI2VuZGlm
CisgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKSwgdm1Qb2ludGVyQXJnR1BSKTsK
KyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBieXRlY29kZUluZGV4Qml0c0FyZ0dQ
Uik7CisKICAgICAgICAgb3BlcmF0aW9uT3B0aW1pemVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKIAorI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGppdC5w
b3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyB0YXJnZXRQQworICAgICAgICBqaXQucG9w
KEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7IC8vIGRhdGFCdWZmZXIgKHVudXNlZCwgYnV0IG5l
ZWRzIHBvcHBpbmcgdG8gcmVzdG9yZSBzdGFjaykKKyNlbmRpZgorCiAgICAgICAgIHNraXBPcHRp
bWl6ZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpKTsKICAg
ICAgICAgaml0LmZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKIApAQCAtMTM0OCwxMSArMTMyNSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5w
b3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWly
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CkBAIC0xMzYzLDcgKzEzMzYsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAj
ZW5kaWYKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1NzQsNTcgKzE1NDYsNDIgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGUKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJn
dW1lbnRHUFIwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1
bWVudEdQUjApOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNo
ZWNrVHJhcHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNr
X3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNo
UGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9j
a0dQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hl
Y2tUcmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwotICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIAotICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3Bl
cmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZt
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFs
T2JqZWN0R1BSKSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJz
OjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5l
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMp
PihnbG9iYWxPYmplY3RHUFIpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3Vl
KCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVt
cCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZt
LmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVy
YXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogb3BfY2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYy
MTBmYzZmZThjNDA3NjEuLjI5YjFlMGE0OWM4Mjk4ZDNkZjYxMGE3MmNiNWFlYjA3MzVmNzk3N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAor
I2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRl
bnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKQEAgLTUyLDExICs1MywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHBy
b3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVz
dWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsx
MDIsMjIgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVU
eXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNl
cyhpdGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFs
SW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAz
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVW
YWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1Ip
OwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwg
YXJnM0pTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2Rl
VHlwZTo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRK
U1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29k
ZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFk
eSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BS
ID09IGFyZ3VtZW50R1BSMSk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0g
cmVnVDEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRh
KGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwg
cHJvZmlsZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihz
bG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1
bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5l
ZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGpp
dC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAg
IGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2Vw
dGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3Zh
bF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjAxLDEwICsxNzIs
MTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJv
cGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9w
ZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMjMwLDU1ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VSVCho
YXNBbnlTbG93Q2FzZXMoaXRlcikpOwotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4
KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3Bl
cnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAg
ICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3Ry
dWN0aW9uKTsKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFs
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0
YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRo
dW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJ
bnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFi
b3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KQEAgLTI4NiwzNCArMjMxLDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQot
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFy
Z3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
R2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlv
bj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5l
ZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGpp
dC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAg
IGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2Vw
dGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2
YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTMyMSw5ICsyNjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVj
b2RlLm1fYnJhbmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6
YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0zNTQs
NDYgKzI5OSwyMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9QQVJB
TShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigp
OwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZh
dGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
cmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAg
ICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9m
ZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5l
cmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJ
bmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFy
ZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5l
UHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5k
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1l
bnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUp
Pjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA0LDkg
KzMyNCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5t
X2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpzdHVi
SW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5ICsz
NDgsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMu
YXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2Jy
YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vz
c0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFj
Y2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jh
c2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFu
ZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBK
SVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2
YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19h
c3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0
czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlw
ZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDgzLDE5ICsz
NzcsMjAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92
YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKKyAg
ICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6
b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CiAKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgcHJvZmlsZUdQUik7Ci0g
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6
Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOworCisgICAgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyogc2Ny
YXRjaEdQUjogKi8gc3R1YkluZm9HUFIpOwogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBudWxscHRyLCBudWxscHRyLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFj
Y2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCkBAIC01MjksNzYgKzQyNCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2Rp
cmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRfb3Bf
cHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGJvb2wgaXNEaXJlY3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5Owot
ICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFN
b2RlOjpzdHJpY3QoKTsKLQotICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7Ci0g
ICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKLSAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAg
ICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci0gICAgfTsKLQotICAgIGlmIChpc0Rp
cmVjdCkKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJl
Y3Q+KCkpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
UHV0QnlWYWw+KCkpOwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlW
YWxzW21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0K
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxl
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgNT4oKTsKLQotICAgIGxv
YWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBpZiAoaXNE
aXJlY3QpCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCksIE9wUHV0QnlWYWxEaXJlY3Q6Ok1ldGFk
YXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlWYWw+KCksIE9wUHV0QnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmls
ZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBw
cm9maWxlR1BSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBK
SVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBhcmUg
Y29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8vIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0g
cmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRo
aXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBi
ZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2Jh
bE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAt
NjA2LDM5ICs0NTIsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdG9pbiA9IGRlY2x0eXBlKG9wZXJhdGlv
blB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSByZWdUNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmls
ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwotICAgIHsKLSAgICAgICAgUmVn
aXN0ZXJTZXQgdXNlZChiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHByb2ZpbGVHUFIp
OwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDQpKTsKLSAgICAgICAgQVNTRVJU
KCF1c2VkLmNvbnRhaW5zKHJlZ1Q1KSk7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
IAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJv
ZmlsZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVy
YXRvaW4+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHBy
b3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIw
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtNjQ3LDEwICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2
ICs1MjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwg
U2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0K
LSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbElu
ZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlW
YWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0
cihudWxscHRyKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAg
SklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsr
XTsKIAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BS
UmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTAsMzkgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxk
T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJv
cGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6
Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpKTsKKyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBu
ZWNlc3NhcnkgZm9yIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90
IGNsb2JiZXIgZ2xvYmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2Ug
aGFybWxlc3MuCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQ
Uik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+
KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5
SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UK
LSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0MSwxMCArNjYwLDEwIEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVz
aW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1LDYyICs2OTQsMzYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZElu
ZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpi
YXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRl
bEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNl
bHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVs
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBh
eWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwog
Ci0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3MzEsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJv
bG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFy
Z3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8
U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJv
cGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlv
biB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFn
KTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwog
Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAg
ICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAg
ICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAg
Ly8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9u
Q2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGlu
ayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29w
X2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTk3MywxMSArNzY5LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyArODA2LDM2IEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLQogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CiAKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjplY21hTW9k
ZUdQUjsKKwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUpTUiwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUo
KSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQ
UiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cHJvcGVydHlHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUu
dmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09IEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0
dWIoc2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihy
ZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQg
YnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUg
SklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQg
Z2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CkBAIC0xMDc0LDMzICs4NDMsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6
ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8v
IENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVH
UFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCBlY21hTW9k
ZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRH
UFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7
CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJv
b2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBl
eGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmso
ZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTEwOSw5ICs4ODEsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNl
OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0x
MTM4LDQ5ICs5MTAsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
dHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFRyeUdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQot
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOworICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlH
UFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNl
R1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
LCBwcm9wZXJ0eUdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
b3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
KworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3Vs
dEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xMTkxLDkgKzk0MSw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTks
NDkgKzk2OSwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZERpcmVjdD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+
KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRo
Ojpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2Vy
dChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0
aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOworICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKKworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xMjcyLDE1ICsxMDAwLDE1
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c2Ny
YXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1Ip
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7Ci0g
ICAgCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hv
dWxkRW1pdFByb2ZpbGluZygpKSB7CisKKyAgICBpZiAoKmlkZW50ID09IHZtKCkucHJvcGVydHlO
YW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBsb2FkOEZy
b21NZXRhZGF0YShieXRlY29kZSwgT3BHZXRCeUlkOjpNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0
YWRhdGEoKSArIEdldEJ5SWRNb2RlTWV0YWRhdGE6Om9mZnNldE9mTW9kZSgpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2gzMihOb3RFcXVhbCwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0
aCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxs
KApAQCAtMTMxMiw1MSArMTA0MCw2NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0
QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAK
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+
KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRp
Zmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRz
KCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRl
Y29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRC
eUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNf
YXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJu
VmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2Fs
bCgpKTsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJiB2bSkKK3sKKyAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rp
b24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisg
ICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBi
ZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9G
VEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMs
IHdoaWNoIG1heSBub3QgbWF0Y2gKKyAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAg
IENDYWxsSGVscGVycyBqaXQ7CisKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3Bl
cnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9u
IHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwg
dG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5q
dW1wKCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwpAQCAtMTM2NSwxMCArMTEwOCwx
MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNWUmVnID0g
Ynl0ZWNvZGUubV90aGlzVmFsdWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0
aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBi
YXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWUmVnLCB0aGlzSlNSKTsK
QEAgLTEzOTUsOTYgKzExMzgsMzIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKLXsKLSAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCi0gICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5j
dGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0
Y2gKLSAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIENDYWxsSGVscGVycyBqaXQ7
Ci0KLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRH
UFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwot
ICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7Ci19Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRf
YnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZFdpdGhUaGlzPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQot
ICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhUaGlz
W21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3RoaXNWYWx1ZSwgdGhpc0pTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5
SWRXaXRoVGhpcz4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0
QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlk
V2l0aFRoaXNJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0
YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtMTQ5MiwzNSArMTE3MSwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQ
UjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gcmVnVDE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0
YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwog
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwor
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFu
Y2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRo
dW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3By
ZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1MzQsMTAgKzEyMTMs
MTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gdG8ganVzdCBhZnRlciB0aGUgYXJndW1lbnRzIGhhdmUg
YmVlbiBsb2FkZWQgaW50byByZWdpc3RlcnMgJ2hvdFBhdGhCZWdpbicsIGFuZCB3ZSBnZW5lcmF0
ZSBjb2RlCiAgICAgLy8gc3VjaCB0aGF0IHRoZSBTdHJ1Y3R1cmUgJiBvZmZzZXQgYXJlIGFsd2F5
cyBhdCB0aGUgc2FtZSBkaXN0YW5jZSBmcm9tIHRoaXMuCiAKLSAgICB1c2luZyBCYXNlbGluZVB1
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hH
UFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3
ICsxMjQwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1IgZXhp
dCBoZXJlLCBzbyB3ZSBuZWVkIHRvIGNvbnNlcnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xv
d0Nhc2UoKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwotICAgIAorCiAgICAgLy8gSUMg
Y2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBp
cyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBC
YXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEyNDks
MzAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7
Ci0gICAgCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5
SWRJbmRleCsrXTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4o
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6
OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKKworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zm
c2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25zdGV4
cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRC
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZUdQ
UiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0
ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxp
bmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmln
aHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCkBAIC0xNjI3LDM1ICsxMjgwLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAg
aWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENh
bGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgdmFsdWVHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBy
ZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0Owot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+
KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0
LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9u
IGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfcHJl
cGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9j
YXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE2NjQsOSArMTMxNyw5IEBAIHZvaWQgSklU
OjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTE2OTEsNTEgKzEzNDQsMjkgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKLQotICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21faW5C
eUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248
U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
QVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7
CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEluQnlJZEdlbmVyYXRvciYg
Z2VuID0gbV9pbkJ5SWRzW21faW5CeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9w
ZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGlu
ZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSks
IHByb3BlcnR5R1BSKTsKLSAgICAvLyBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRf
YnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBj
cmVhdGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFt
ZS4KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdp
c3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
IApAQCAtMTc0NiwxMSArMTM3NywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBi
YXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpT
Uik7CkBAIC0xNzc3LDY0ICsxNDA4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wSW5CeVZhbD4oKTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBv
aW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdl
biA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpw
cm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZz
ZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFy
Z3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFp
c0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIx
KTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdp
bGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFj
dGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGlu
ZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQor
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lz
dGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxS
ZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBl
IHR5cGUpCiB7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlPckJyYW5kLCBwcm9w
ZXJ0eUpTUik7CkBAIC0xODU4LDUxICsxNDYyLDI3IEBAIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0
ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lz
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQg
SklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRl
U2xvdyhBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAgIFVO
VVNFRF9QQVJBTShwcm9wZXJ0eSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKIAotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9p
bkJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
LSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAg
ICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BS
ID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShv
cGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lz
dGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
IApAQCAtMTkxMiwxMiArMTQ5MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhhc1By
aXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0
eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZh
dGVOYW1lPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVj
b2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAgICBlbWl0SGFz
UHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQpAQCAtMTkyNiwxMiArMTUwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1f
YnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6
OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BI
YXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFz
ZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKyAgICBl
bWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTk0MSw3ICsxNTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2
ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGUgPSBieXRlY29kZS5tX3Njb3BlOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
ICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVjb2Rl
SW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xOTQ5LDE0ICsxNTI0LDE0IEBAIHZv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICAvLyBJZiB3ZSBwcm9maWxlIGNlcnRhaW4gcmVzb2x2ZSB0eXBlcywg
d2UncmUgZ3VhcmFudGVlZCBhbGwgbGlua2VkIGNvZGUgd2lsbCBoYXZlIHRoZSBzYW1lCiAgICAg
Ly8gcmVzb2x2ZSB0eXBlLgogCi0gICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxl
VmFyKSAKKyAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAg
IGxvYWRQdHJGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6
b2Zmc2V0T2ZMZXhpY2FsRW52aXJvbm1lbnQoKSwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVsc2Ug
ewogICAgICAgICB1aW50MzJfdCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2st
Pm1ldGFkYXRhKCkub2Zmc2V0SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKIAotICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDI7Ci0gICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NvcGVHUFIgPSByZWdUMDsKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IHJlZ1QzOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UmVzb2x2ZVNjb3BlOjptZXRhZGF0YUdQUjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlJlc29sdmVTY29wZTo6c2NvcGVHUFI7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCiAgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7CiAgICAgICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIobWV0YWRhdGFPZmZzZXQpLCBzX21ldGFkYXRhR1BSLCBtZXRhZGF0
YUdQUik7CkBAIC0xOTY0LDIzICsxNTM5LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVf
c2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNvZGU7CiAgICAgICAgIGlmIChw
cm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcj4pOworICAg
ICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1
bms8Q2xvc3VyZVZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09
IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZt
LmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdl
bmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcikK
LSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVU
aHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2Vu
ZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogICAgICAgICBlbHNlIGlmIChw
cm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5
Pik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJl
c29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOwor
ICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3Bl
VGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBj
b2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJ
U3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5n
ZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZt
LmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxWYXI+KTsKIAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbChjb2RlLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAgICAgfQpAQCAtMjAwMCwxMiArMTU3NSwxMiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRo
dW5rKFZNJiB2bSkKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgdXNpbmcgTWV0YWRhdGEg
PSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0
YUdQUiA9IHJlZ1QyOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIg
PSByZWdUMDsgLy8gaW5jb21pbmcKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDM7IC8vIGluY29taW5nIC0gcGFzcyB0aHJ1IHRvIHNsb3cgcGF0aC4KKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjptZXRhZGF0YUdQUjsgLy8g
SW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpz
Y29wZUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVz
b2x2ZVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcgLSBwYXNzIHRocm91Z2gg
dG8gc2xvdyBwYXRoLgogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1Q1OyAv
LyBsb2NhbCB0ZW1wb3JhcnkKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIpOwot
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlR1BSLCBtZXRhZGF0YUdQUiwg
Ynl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BS
KSk7CiAgICAgc3RhdGljX2Fzc2VydChzY29wZUdQUiA9PSByZXR1cm5WYWx1ZUdQUik7IC8vIGVt
aXRSZXNvbHZlQ2xvc3VyZSBhc3N1bWVzIHRoaXMKIAogICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CkBAIC0yMTM2LDQ0ICsxNzExLDI3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAg
Ly8gVGhlIGZhc3QgcGF0aCBhbHJlYWR5IHB1c2hlZCB0aGUgcmV0dXJuIGFkZHJlc3MuCi0jaWYg
Q1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUo
QVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVzaFBh
aXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdp
c3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0j
ZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOwotICAgIGppdC5zdG9yZTMy
KGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpS
ZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZworICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJl
Z1QyOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIw
OwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgc2Ny
YXRjaEdQUiAsIGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUiAsIGdsb2JhbE9i
amVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKIAogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7CiAgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhzY3JhdGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BS
KTsKLSAgICBqaXQuYWRkUHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9u
R1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7
CiAKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUmVzb2x2ZVNjb3Bl
Rm9yQmFzZWxpbmUpPihnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25Q
YXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5w
b3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1C
MikgfHwgQ1BVKFJJU0NWNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucG9wUGFpcihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3Ig
Ik5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1
bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKQEAg
LTIxOTAsMzggKzE3NDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c2NvcGUgPSBieXRlY29kZS5tX3Njb3BlOwogICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPSBieXRlY29kZS5tZXRhZGF0YShtX3Byb2ZpbGVkQ29kZUJsb2NrKS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKTsKIAotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAg
QVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9uQXQobV9ieXRlY29kZUluZGV4
KSA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0
YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdUMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0KICAgICB1aW50
MzJfdCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCkub2Zm
c2V0SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG1ldGFkYXRhT2Zmc2V0KSwgc19tZXRhZGF0YUdQUiwgbWV0YWRhdGFHUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjb2RlOwogICAg
IGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgIGNvZGUgPSB2
bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7Cisg
ICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5r
PENsb3N1cmVWYXI+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1
YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNl
IGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcikKLSAgICAgICAgY29kZSA9IHZt
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxH
bG9iYWxWYXI+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlIGlmIChw
cm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsK
KyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1
bms8R2xvYmFsUHJvcGVydHk+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09
IEdsb2JhbExleGljYWxWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxW
YXI+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsK
ICAgICBlbHNlCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbChjb2RlLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKQEAgLTIyMzUsOSArMTc5MiwxMCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZy
b21TY29wZVRodW5rKFZNJiB2bSkKICAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25z
IGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0
RnJvbVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0g
cmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gVXNlZCBvbmx5IG9uIHNs
b3cgcGF0aAorCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6
bWV0YWRhdGFHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEZyb21TY29wZTo6c2NvcGVHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5n
IC0gcGFzcyB0aHJvdWdoIHRvIHNsb3cgcGF0aC4KICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgPSByZWdUNTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBtZXRhZGF0YUdQUiwgc2Nv
cGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSKSk7CkBAIC0yMjU2LDcgKzE4MTQs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVP
cEdldEZyb21TY29wZVRodW5rKFZNJiB2bSkKICAgICAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhz
Y3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fdmFySW5qZWN0aW9u
V2F0Y2hwb2ludCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5i
cmFuY2g4KEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhdGNocG9pbnRTZXQ6Om9mZnNldE9m
U3RhdGUoKSksIFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSkpOwogICAgIH07Ci0gICAgCisK
ICAgICBhdXRvIGVtaXRDb2RlID0gWyZdIChSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkgewogICAg
ICAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CiAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6
CkBAIC0yMzcxLDY4ICsxOTI5LDQyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJiB2CiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAg
ICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rl
cik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5k
aWYKLQogICAgIHVzaW5nIE1ldGFkYXRhID0gT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLSAgICBqaXQuc3RvcmUzMihp
bmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9
IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1l
dGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBH
UFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAobWV0YWRhdGFHUFIsIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hH
UFIsIGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIGdsb2JhbE9iamVjdEdQ
UiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0
YUdQUiwgcmV0dXJuVmFsdWVHUFIpKTsKIAotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhzY3JhdGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9i
YWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsK
LSAgICBqaXQuYWRkUHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BS
KTsKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAotICAgIC8vIFByZXNlcnZlIG1l
dGFkYXRhIGluIGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLgotI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUNTUiA9IEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyOwotICAgIGF1dG8gcmVzdG9yZUhpamFja2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQu
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOwotICAgIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBzX21ldGFkYXRhR1BSOwotICAgIGF1dG8gcmVzdG9yZUhp
amFja2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayksIHNfbWV0YWRhdGFHUFIpOwotICAgICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKHNfbWV0YWRhdGFHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxl
KCkpLCBzX21ldGFkYXRhR1BSKTsKLSAgICB9OwotI2VuZGlmCi0gICAgQVNTRVJUKFJlZ2lzdGVy
U2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkuY29udGFpbnMobWV0YWRhdGFDU1IpKTsKLSAgICBq
aXQubW92ZShtZXRhZGF0YUdQUiwgbWV0YWRhdGFDU1IpOwotCi0gICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEZyb21TY29wZSk+KGdsb2JhbE9iamVjdEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpOworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoaW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhpbnN0cnVjdGlvbkdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0
aW9uR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQ
Uik7CisKKyAgICAvLyBzYXZlIG1ldGFkYXRhR1BSIChhcmd1bWVudHMgdG8gY2FsbCBiZWxvdyBh
cmUgaW4gcmVnaXN0ZXJzIG9uIGFsbCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpLgor
ICAgIC8vIE5vdGU6IHdlIHdpbGwgZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2UgcHVzaFRvU2F2ZSwg
YXMgaXQgZG9lcyBub3QgbWFpbnRhaW4gQUJJIHN0YWNrIGFsaWdubWVudC4KKyAgICBqaXQuc3Vi
UHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnN0
b3JlUHRyKG1ldGFkYXRhR1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSk7CisKICAg
ICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBl
eGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwog
Ci0gICAgaml0LnN0b3JlVmFsdWUocmV0dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFDU1Is
IE1ldGFkYXRhOjpvZmZzZXRPZlByb2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJz
dEJ1Y2tldCgpKSk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciksIG1ldGFkYXRhR1BSKTsgLy8gUmVzdG9yZSBt
ZXRhZGF0YUdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisgICAgaml0LnN0b3JlVmFsdWUo
cmV0dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE1ldGFkYXRhOjpvZmZzZXRPZlBy
b2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKLSNpZiBD
UFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFS
TTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAgaml0LnBvcFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAg
ICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRp
ZgorICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAg
IGV4Y2VwdGlvbkNoZWNrLmxpbmsoJmppdCk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7Cisg
ICAgaml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOyAv
LyBSZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwogICAgIEp1bXAganVtcFRvSGFuZGxlciA9IGppdC5q
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTI1OTAsMjcgKzIxMjIs
MjAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3IKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlw
ZSA9PSBNb2R1bGVWYXIpIHsKICAgICAgICAgLy8gSWYgYW55IGxpbmtlZCBDb2RlQmxvY2sgc2F3
IGEgTW9kdWxlVmFyLCB0aGVuIGFsbCBsaW5rZWQgQ29kZUJsb2NrcyBhcmUgZ3VhcmFudGVlZAog
ICAgICAgICAvLyB0byBhbHNvIHNlZSBNb2R1bGVWYXIuCi0gICAgICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3df
c3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9k
ZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiAgICAgfSBlbHNlIHsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAg
ICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRUb1Njb3BlLCBhcmd1bWVudEdQUjAsIGN1cnJlbnRJbnN0cnVjdGlvbik7
Ci0jZWxzZQotICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAg
ICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJ
bmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAgICAgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCi0g
ICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2Nv
cGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Cisg
ICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF90b19z
Y29wZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CiB9CiAKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAg
ICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsg
d2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjE0NCwz
MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9w
dXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1
c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1
cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5r
UmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWlu
ZworICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOyAvLyBP
bmx5IHVzZWQgYXMgc2NyYXRjaCByZWdpc3RlcgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBjb2Rl
QmxvY2tHUFIpKTsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8g
Q2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9j
a0dQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNS
YXdQb2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9m
ZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
ZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0
LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAg
ICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBU
YWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRj
aEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BU
aHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90
b19zY29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3Vt
ZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjY2Myw3
ICsyMTc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29k
ZS5tX2FyZ3VtZW50czsKICAgICBpbnQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIAor
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYXJndW1lbnRzLCByZWdUMCk7CiAg
ICAgbG9hZFZhbHVlKEFkZHJlc3MocmVnVDAsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIGpzUmVnVDEwKTsK
ICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCBqc1JlZ1QxMCk7CkBAIC0yNzQz
LDcgKzIyNTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5hcHBl
bmQoanVtcCgpKTsKIAogICAgIGdlbmVyaWNDYXNlcy5saW5rKHRoaXMpOwotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogCiAgICAgZG9uZUNhc2VzLmxpbmsodGhpcyk7CkBAIC0yODA2LDcgKzIz
MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsodGhpcyk7
CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMjgyNCwxMyArMjMzOSwx
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlW
YWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGlu
ZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRC
eVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MSA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdp
c3RlcnM6OnNjcmF0Y2gyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGlu
ZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaDM7CisgICAgY29uc3RleHByIEdQ
UlJlZyByZXN1bHRHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFs
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpF
bnVtZXJhdG9yR2V0QnlWYWw6OnN0dWJJbmZvR1BSOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDEgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzY3JhdGNo
MTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkVudW1lcmF0b3JHZXRCeVZhbDo6c2NyYXRjaDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMyA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gz
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKG1vZGUsIHNjcmF0Y2gzKTsKQEAgLTI5MDYsNyArMjQyMSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29k
ZSwgdHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJh
dG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFs
Q2FzZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBC
eXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewog
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjQ1MSw3IEBAIHZvaWQg
SklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5l
cmFsQ2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFs
Q2FzZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsK
QEAgLTI5NDQsMzEgKzI0NTksMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJv
cGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5C
eVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1l
cmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRv
ckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVy
dHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1l
cmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1l
cmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAK
LXZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVy
dHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBz
bG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVy
YXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSAr
MjQ5MiwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
ZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
ZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVy
dHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0
X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0g
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5
N2I4YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihW
TSYgdm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93
UGF0aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJh
dG9yPihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0
dWIoVk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRp
dmVFeGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7
IHJldHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2
M2JmNTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAg
cHVibGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50
ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNl
bmRpZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZN
JiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5jcHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uMzJm
MDViODNmNTI5ZTg5NWRiZDhlNjJkOWY3Y2MyNTA0MzIwOGMzNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorbmFtZXNwYWNlIHsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7
Cit9CiAKIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKQEAgLTQ0LDkgKzQ2LDcgQEAg
dm9pZCBKSVRTbG93UGF0aENhbGw6OmNhbGwoKQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBV
TlVTRURfVkFSSUFCTEUobV9wYyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dFJlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKLSAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0UmVnKTsKKyAgICBtX2ppdC0+
bW92ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKICAgICBtX2ppdC0+ZW1pdE5ha2VkTmVhckNhbGwodm0uaml0U3R1YnMtPmN0aVNsb3dQYXRo
RnVuY3Rpb25TdHViKHZtLCBtX3Nsb3dQYXRoRnVuY3Rpb24pLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiB9CiAKQEAgLTU0LDQ2ICs1NCw0OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayhWTSYgdm0sIFNsbwog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIGpp
dC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAs
IENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0gYnl0
ZWNvZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2lmIE9TKFdJTkRPV1MpICYmIENQVShY
ODZfNjQpCisgICAgLy8gT24gV2luZG93cywgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5
dGVzIGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAgICAv
LyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlmdGVk
IHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQgY2Fs
bCBzaXRlIGJlbG93Iik7CisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVBcmdHUFIgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBwY0FyZ0dQUiA9IEdQUkluZm86
OmFyZ3VtZW50R1BSMjsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChHUFJJbmZvOjphcmd1
bWVudEdQUjAsIGNhbGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7
CisjZWxzZQorICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BSID0gR1BSSW5mbzo6
YXJndW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIgPSBHUFJJbmZvOjph
cmd1bWVudEdQUjE7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FsbEZyYW1lQXJnR1BS
LCBwY0FyZ0dQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpKTsKKyNlbmRpZgorICAgIGppdC5tb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsRnJhbWVBcmdHUFIpOworICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBw
Y0FyZ0dQUik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBjQXJnR1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgcGNBcmdHUFIp
OworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIHBjQXJnR1BSKTsKIAogICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4
Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdp
c3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwor
I2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OyAvLyBjYWxsRnJhbWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsKIAotICAgIGF1dG8gaGFuZGxl
ciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcik7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBU
YWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1
bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihzbG93UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRleCA4OTlhMjkwMGZl
ZGUzN2RkMGVhNWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgyNjUyYTkzNmFlMDk2
NGIwNDQzZjYzNDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ns
b3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxs
LmgKQEAgLTM1LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xvd1Bh
dGhDYWxsIHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0IElu
c3RydWN0aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAgIEpJ
VFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9u
KQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRoRnVuY3Rpb24oc2xv
d1BhdGhGdW5jdGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAgICAgICAgYXNzZXJ0
SXNDRnVuY3Rpb25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYsIFNsb3dQYXRoRnVu
Y3Rpb24pOwogCi0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLSAgICBK
SVQ6OkNhbGwgY2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1l
KCk7Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPmFkZFB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+
bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAg
IG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjIp
OwotI2Vsc2UKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklU
Ojphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIo
bV9wYyksIEpJVDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBKSVQ6OkNhbGwgY2Fs
bCA9IG1faml0LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0KLSNpZiBDUFUoWDg2
XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDApOyAvLyB2
UEMKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZyYW1lIHJlZ2lzdGVy
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNoZWNrKCk7
Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNsb3dQYXRoRnVuY3Rp
b24gbV9zbG93UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX3BjOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5ZTFjYTIzNWU0ZGJkZWEzMDkz
M2IwLi5hOTllNDQyMDFkODU3ZDlkMDgyODIwNDQzOWI2ODA3YjFiYjcwZGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00OSw5ICs0OSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZt
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCArNTcsNiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxs
SGVscGVycyBqaXQ7CkBAIC03NywyMCArNzMsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmEK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJo
YW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0KIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZl
c0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigyICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsK
LSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAg
IGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVs
cGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wb3BQYWlyKEND
YWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRk
cmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0
Zm9ybSIKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKyNpZiBDUFUoWDg2XzY0KSAv
LyBPbiB0aGUgeDg2LCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSBsZWF2ZXMgdGhlIHJldHVybiBQQyBv
biB0aGUgc3RhY2suIERyb3AgaXQuCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgWDg2UmVnaXN0ZXJzOjplc3ApOwogI2VuZGlm
CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAoKTsKQEAg
LTEwMSwzMiArOTAsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBw
b3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNrUHJl
c2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhj
ZXB0aW9uRnV6eigpKSkgewotICAgICAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBh
IHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRk
cmVzcyBoZXJlLgotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVy
czo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVs
cGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsK
LSNlbmRpZgotICAgIH0KKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRp
bWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBo
ZXJlLgorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAg
ICAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAogICAgIENDYWxsSGVscGVyczo6SnVt
cCBoYW5kbGVFeGNlcHRpb24gPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZt
KTsKIAotICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKSB7Ci0j
aWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxp
ZiBDUFUoQVJNNjQpCi0gICAgICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSkKKyAgICAgICAg
aml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgYXV0byBo
YW5kbGVyR2VuZXJhdG9yID0gT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpID8gcG9wVGh1bmtT
dGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvciA6IGhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcjsKQEAgLTE0Myw4ICsxMjAsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJDaGVja0V4Y2VwdGlv
biIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHRlbXBsYXRl
PHR5cGVuYW1lIFRhZ1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlkYXRpb24oQ0Nh
bGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBlIHRhZykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4IGE5ZmVlZWE5MjRh
ZTAwNzhkODQ1MWUxNzJjNGM0OTQ1ZGYxZDVlZTEuLjEwNTQ5MTA0ZWY2MjBlNzgyOWYwYjRhYmNh
YmFlZGM0OTczNWEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuaApAQCAtMzgsMTMgKzM4LDggQEAgZW51bSBjbGFzcyBDYWxsTW9kZTsKIHRlbXBsYXRl
PFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xhc3MgVk07CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0m
KTsKLQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvcihWTSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRo
cm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSYpOwpAQCAtODIsOSArNzcs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5l
cmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3Vu
ZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYpOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDY2NGIwZTI5ZjZiYTNjZTQ4
MjZlNTEwOWQ3M2Y4NmNjOWJjNmFkZmQuLjVlYzc0MDliYzlhZTg2YzM0MjhlNjJlYzIwYTQ1MGFm
MmU3OGI0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysr
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODM5LDE0ICs4MzksNiBAQAog
I2RlZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgogCi0jaWYg
Q1BVKEFSTTY0KSB8fCAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKQotLyogVGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZXNlIHRodW5rcyBjYW4gdXNlIHVwIHRvIDYgYXJndW1lbnQgcmVnaXN0
ZXJzLCBhbmQKLSAgIG1ha2UgdXNlIG9mIEFSTTY0IGxpa2UgZmVhdHVyZXMuIEZvciBub3csIHdl
J2xsIG9ubHkgc3VwcG9ydCB0aGVtIG9uIHBsYXRmb3JtcwotICAgdGhhdCBoYXZlIDYgb3IgbW9y
ZSBhcmd1bWVudCByZWdpc3RlcnMgdG8gdXNlLgotKi8KLSNkZWZpbmUgRU5BQkxFX0VYVFJBX0NU
SV9USFVOS1MgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfQklORElOR19JTlRFR1JJ
VFkpICYmICFPUyhXSU5ET1dTKQogI2RlZmluZSBFTkFCTEVfQklORElOR19JTlRFR1JJVFkgMQog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448482</attachid>
            <date>2022-01-06 03:01:48 -0800</date>
            <delta_ts>2022-01-06 07:37:15 -0800</delta_ts>
            <desc>For review</desc>
            <filename>bug-233822-20220106110146.patch</filename>
            <type>text/plain</type>
            <size>278525</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTJmZjgzYmJiZDYzYzc1NDg3MDg5MmEwNjhhZGZkYjViOWQ3YmJjLi4wODdmOWVjMDA5OTc4YzU3
YmY3MDVhYjVkOWMyYjQ1MTdlYmMxNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMDYgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNh
dmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNl
bGluZUpJVERhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYWNmZTVkYTdiZWM3ZWE2ZjY1MmI2MDMzZWUxZDIzODk5ZTc2M2Y0
YS4uNmRiNmZjOWYzNWE4YTVkMzMxYjU2ZmMwZGJlN2I3MTU1ZGVhOWY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wMS0wNiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1F
bmFibGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJBX0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3
YXlzIG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIwMjItMDEtMDUgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIHZlcnNpb24gbnVtYmVyIGZvciBI
QVZFX1JTQV9QU1NfT0lECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjk4
NzEyMTc1YzlhN2Q5ZTQ0MzdmZjM1NzI5YTg0YzQxZWU4YzY0Zi4uMjUxYjllNDU5OTZiM2YyMTA3
Mjc5NTc2YTU0ZTE5MjhmMWY0MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODQzLDYgKzg0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAgICBqaXQvQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjZjA3M2VjZDA1YzQ3OTk0MDViNDYxZmY5ZmU1YWNlNDE4
NDQ3YjE1Li44YzM0NDcwMjllNzE2ZjE0Y2IzZDA4ODU2NzhjZmYwMGRkZWJjZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAKIAkJNzIxMzFCRkEy
NjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBs
YW5TdGFnZS5oICovOyB9OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xp
c3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi87IH07
CiAJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5OEY1MjY1REJDREIw
MDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAwRjcyODJEQkNEQjEw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjZCOTFCMDI2NTgxNjUzMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUE4
MjY1ODE2NTIwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovOyB9OwogCQk3MjZCOTFC
MzI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIg
LyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFGMjY1
ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi87IH07CkBAIC00MTgwLDYgKzQxODEsNyBAQAog
CQk3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklU
UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNjI2NURCQ0RCMDA1
Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2VsaW5lSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFJlZ2lzdGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyog
SklUV29ya2xpc3RUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklU
V29ya2xpc3RUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQUEy
NjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDMxLDYgKzY0MzMsNyBAQAogCQkJCTUyREQwMDA2MjZFMDM5
QjMwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCAqLywKIAkJCQk3MjM5OThGNjI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLywKIAkJCQk3MjM5OThGNTI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8sCisJCQkJNzI0MDA5RjUyNzhEQkNEQjAw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4NEJB
RjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCiAJCQkJMEY2NEIyNzAxQTc4NEJBRjAw
NkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovLAogCQkJCTY1QjgzOTJEMUJBQ0E5RDMwMDQ0RTgy
NCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8sCkBAIC05NzYzLDYgKzk3NjYsNyBAQAogCQkJCTBG
MkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyogQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4M0FDMEU2REI4
QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM1RTg5RkQyNUM1MEY4NzAwNzFFRTFFIC8qIEJpZ0ludDY0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IGJmNmZiZTMwNWIzZmQ0ZDU2YWFhODUyODljZTMxMzE1YTg3MzViZTUuLmYx
ZmY2Mzk0YzlmNGVlZDUxYzEwMGM1ZTRjMjdlZjY4ZjBkYjViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0
LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0x
MDA3LDEyICsxMDE3LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVz
dCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0
LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmln
aHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwg
ZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCmluZGV4IGNkMTI5ZjZkOWE4N2UwNjlhZWNmYTQyNGFmZTcwZjBmMTE1
Y2QxNDUuLjEzNjZkZDUxMmJiMTYyMzQzOGM3ZjlmZWFkOWVjMmY2MmM0NzMyNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIg
PSBUQVJHRVRfQVNTRU1CTEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpyNjsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVt
cFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhw
ciBBUk1SZWdpc3RlcnM6OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6ZDc7CiAgICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklE
IGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xl
KGZwVGVtcFJlZ2lzdGVyKTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24g
c2V0LCBpbnN0cnVjdGlvbnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBv
ZnRlbgpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9S
RUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9S
X0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRl
ZiBEVU1NWV9SRUdJU1RFUl9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkg
eyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdp
c3RlcjsgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVt
cFBhdGNoYWJsZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4
ZGNkNjMxODExOTcxMDAxZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVm
NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7
CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVk
SW1tNjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFs
dWUgPT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAppbmRleCAwMGE1NTQ5N2ZkNjNhZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0MGQyLi43N2U0YTZl
OWVmM2Y4YWM3MmE1ZGQwYzc4MjhhMGJkY2VjMzVkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWVTaHVmZmxlRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCkBAIC00NywxNCArNDgsNiBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlu
a0luZm87CiAKLSNpZiBFTkFCTEUoSklUKQotbmFtZXNwYWNlIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
cyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLX0KLSNlbmRp
ZgotCiBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CkBAIC00NjIsOSArNDU1LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShK
SVQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVHUFI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxMaW5rSW5mb0dQUjsgfQotICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxs
TGlua0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpj
YWxsZWVHUFI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIo
KSB7IHJldHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSOyB9
CisgICAgdm9pZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBS
RUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm9HUFIgPT0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxMaW5rSW5mb0dQUik7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5
NTlmZDhmZjM1MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUy
NGY0ZWZlNjhkNjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAg
ICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5k
bGVyLCBvcmlnaW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9
IGVsc2UgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBW
TSogdm0gPSAmbV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIu
bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJ
U3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwogICAgICAgICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbiht
X3ZtKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJD
YWxsID0gaml0LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rh
c2soCi0gICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlciht
X3ZtKTsKLSNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZl
Y2E0NTA4ZDczYjhkMzhjYWNmZjE1Yy4uZjQxZWZlNjI3NTM4ODc1NGJjNmVhYzhhZTNjNGYzODdi
YmY2NGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklU
UmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNp
bmNsdWRlICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGlj
QWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogCkBAIC00MjksNyArNDI5LDcgQEAgdm9p
ZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJ
bmZvKENvZGVCbG9jayosIFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5
cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQo
KSkgewogICAgICAgICAvLyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUg
ImRvbnRDbG9iYmVySlNSIiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1
c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6
OmRvbnRDbG9iYmVySlNSKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKQEAg
LTUyNiw3OCArNTI2LDc4IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgc3dpdGNoIChh
Y2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAg
aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5w
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpy
ZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICBy
ZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0
eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2
LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
dGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdH
UFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICBoYXNDb25zdGFudElk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9
IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElk
ZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsK
KyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFz
ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9m
OgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgcHJvdG90
eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6
cHJvdG9KU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi50YWdHUFIoKTsK
ICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi50YWdHUFIoKTsK
KyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5j
ZW9mOjpwcm90b0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZTogCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAogICAgICAgICBoYXND
b25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVy
dHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3Bl
cnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZh
bDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNl
SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigp
OworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0
YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJ
ZDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFn
R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAg
ICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpT
Ui50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQ6CkBAIC02MDUsNjUgKzYwNSw2NSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
Ojppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5s
aQogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVu
dGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
di50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdH
UFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnRh
Z0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlz
SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwor
ICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhp
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50
YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyAgICAgICAg
YmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnRhZ0dQ
UigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJ
ZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50
aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5
bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0g
ICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFn
R1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2
YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZh
bHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAgICAgICAgaWYgKGFjY2Vz
c1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCi0gICAgICAgICAgICBtX2FycmF5UHJvZmls
ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgICAgICAg
ICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJv
ZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQ
UigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZh
bHVlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsK
KyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZh
bHVlSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgICAgICB2
YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MuYnJh
bmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlByaXZhdGVCcmFuZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MuYnJhbmRH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJp
dmF0ZUJyYW5kOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BS
ID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAg
ICAgIHYuYnJhbmRUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRK
U1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHJpdmF0ZUJyYW5kOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LmJyYW5kVGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlYjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0
YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQw
ICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VO
VVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJh
bWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxG
cmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3Nl
ZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0o
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVy
T2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNr
cy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAgICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3Vw
RXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgp
KTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5r
IHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBA
IC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1f
ZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2Vw
dGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4
Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5r
QnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsgPSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAgYXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRodW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xv
d1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
LCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAot
ICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAg
IAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAt
NDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAg
bV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRD
b2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAg
IGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGlu
ZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCmluZGV4IDg5NDdjYmU5YTNjNTIxNzZhMmQ0NTM0Nzg4Mjk2MmU5NWMxZTM4ZjkuLmY3NmRh
MjIwYTM5ODc2Mzc5NzhmNmJkYjFmZTIwZjhhOTU3NWY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTMyMyw3ICszMjMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRp
dmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9p
ZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwog
ICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAzYjRjYTFkMTU3NWQ1MGJiZmUxYzRiN2FiODJmMTll
YWM5MDYyYjdmLi5hOTNhNmJhNDE2MTVlMDRhODM3YzliOWMxMzQ3OWU4NGY1MTE3OWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEy
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3Rh
dGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5sYWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAg
ICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5k
bGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNl
Ci0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZt
LnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGpp
dC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5i
M0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5
YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhj
ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBq
dW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1Ro
YW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigw
KSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsK
LSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0
aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBu
b0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCiAgICAgICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBq
aXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0x
MTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxs
QXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29u
c3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAg
bGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlu
a0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElT
dHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZl
ci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDIz
ZTA4NzE4ZGJmODIwNDIzNWUzOTlhYTY1Y2IwZDk5MDgyOTcxZTAuLjQ3YWIzZTgxNTJhNDM4Mjg5
MjA3YmM0ZTlkODE4MjhkZmMzYTM4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMTkxOSw0OSArMTkxOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0SW5zdGFuY2VOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCk7CiAjZW5kaWYKIAotICAgIC8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJl
Z3MgYW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKLSAg
ICAvLyBhc3NlcnRpb25zIHRvIGVuc3VyZSB0aGF0IHJlZ2lzdGVyIGFsaWFzZXMgbGl2ZSBhdCB0
aGUgc2FtZSBwb2ludCBkbyBub3QgbWFwIHRvIHRoZSBzYW1lCi0gICAgLy8gYXJjaGl0ZWN0dXJh
bCByZWdpc3Rlci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFw
SW1wbCgwLCBhcmdzLi4uKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEJhc2UgY2FzZQotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092
ZXJsYXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBHUFJSZWcgY2Fz
ZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIFJlZ2lzdGVySUQgZ3ByLCBBcmdzLi4u
IGFyZ3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01h
c2soZ3ByKTsKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7
Ci0gICAgfQotCi0gICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2
NF90IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BSKCkpOwot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1wbFJlZ01h
c2soanNyLnRhZ0dQUigpKTsKLSNlbmRpZgotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQg
fCBtYXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG5vT3ZlcmxhcEltcGxSZWdNYXNrKFJlZ2lzdGVySUQgZ3ByKQotICAgIHsKLSAgICAgICAgaWYg
KGdwciA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgcmV0dXJuIDBVTEw7Ci0gICAgICAg
IHVuc2lnbmVkIGJpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihncHIpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChiaXQgPCBzaXplb2YodWludDY0X3QpICogQ0hBUl9CSVQpOwotICAgICAgICBy
ZXR1cm4gMVVMTCA8PCBiaXQ7Ci0gICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNh
dmVzQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNl
bGluZUpJVFJlZ2lzdGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJ
VFJlZ2lzdGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMDY0NDcyZTRhMTVlODJjODRmYjA5Y2I0YjgyN2Ez
ZDgxOGNhOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jh
c2VsaW5lSklUUmVnaXN0ZXJzLmgKQEAgLTAsMCArMSw0NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9u
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJz
IHsKKworbmFtZXNwYWNlIENhbGwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QyIH07Cit9CisKK25hbWVzcGFjZSBDaGVja1RyYXBzIHsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gR1BSSW5mbzo6bm9uQXJnR1BSMDsK
K30KKworbmFtZXNwYWNlIEVudGVyIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1p
emVkR1BSID0gR1BSSW5mbzo6cmVnVDA7CisgICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0lu
aXRHUFIgPSBHUFJJbmZvOjpyZWdUMTsKK30KKworbmFtZXNwYWNlIEluc3RhbmNlb2YgeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQ
UkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BS
SW5mbzo6YXJndW1lbnRHUFIyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNS
IHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OmpzUmVn
VDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsKKyNpZiBDUFUoTUlQ
UykKKyAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIK
KyNlbHNlCisgICAgICAgIEpTUkluZm86OmpzUmVnVDMyCisjZW5kaWYKKyAgICB9OworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEpTUkluZm86OmpzUmVnVDU0IH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKK30KKworbmFtZXNwYWNlIEpGYWxzZSB7CisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKK30K
KworbmFtZXNwYWNlIEpUcnVlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgVGhyb3cgeworICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8ZGVjbHR5
cGUob3BlcmF0aW9uVGhyb3cpLCAwPigpOworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aHJv
d25WYWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
KSwgMT4oKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gR1BSSW5m
bzo6bm9uQXJnR1BSMDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh0aHJvd25WYWx1ZUpT
UiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7
CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1
ZUpTUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQorCituYW1l
c3BhY2UgUmVzb2x2ZVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0g
R1BSSW5mbzo6cmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IEdQUkluZm86
OnJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBHUFJJbmZv
OjpyZWdUMzsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVH
UFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIp
OworfQorCituYW1lc3BhY2UgR2V0RnJvbVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1l
dGFkYXRhR1BSID0gR1BSSW5mbzo6cmVnVDQ7CisgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQ
UiA9IEdQUkluZm86OnJlZ1QyOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBHUFJJbmZvOjpyZWdUMzsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0
YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworfQorCituYW1lc3BhY2UgUHV0VG9TY29wZSB7CisgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKK30KKwor
bmFtZXNwYWNlIEdldEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJ
bmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJl
Z2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJl
Z1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07
CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIGRvbnRDbG9iYmVySlNSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMi
KTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3Bh
Y2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7
IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBH
UFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGJhc2VKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAi
UmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5
R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQor
CituYW1lc3BhY2UgR2V0QnlJZFdpdGhUaGlzIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBi
b3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEpT
UkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lz
dGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChiYXNlSlNSLCB0aGlzSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJl
ZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJz
CisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBHZXRCeVZhbCB7Cisg
ICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5k
aWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0
UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNl
bmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpT
Uiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAg
IH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93
UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5m
bzo6cmVnVDQgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7
IEdQUkluZm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNS
LCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlv
biIpOworICAgIH0KK30KKworI2lmIFVTRShKU1ZBTFVFNjQpCituYW1lc3BhY2UgRW51bWVyYXRv
ckdldEJ5VmFsIHsKKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBH
UFJJbmZvOjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgLy8gV2UgcmVseSBvbiB0
aGlzIHdoZW4gbGlua2luZyBhIENvZGVCbG9jayBhbmQgaW5pdGlhbGl6aW5nIHJlZ2lzdGVycyBm
b3IgYSBHZXRCeVZhbCBTdHViSW5mby4KKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0
QnlWYWw6OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlW
YWw6OnByb3BlcnR5SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUiA9PSBHZXRCeVZh
bDo6cmVzdWx0SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEdldEJ5VmFs
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFIpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDEgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gyIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMyB7IEdQUkluZm86OnJlZ1Q1IH07Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFB1
dEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRo
cworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7
IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisK
KyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGgg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBS
ZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKKyNlbmRpZgor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJ
bmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7
CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNl
IFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5m
b0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0
byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIFB1dEJ5VmFsIHsKKyAg
ICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86
OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVn
VDIgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdU
NiwgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBH
UFJJbmZvOjpyZWdUNSB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5m
b0dQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRo
IG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgICAgICAg
ICAgICAgIC8vIFdlIGFyZSBhIGJpdCBzaG9ydCBvbiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwg
YnV0IHdlIGNhbiBqdXN0IGFib3V0IGdldCBhd2F5IHdpdGggdGhpcworICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3RlcigpCisjZWxzZSAvLyBPdGhlciBK
U1ZBTFVFMzJfNjQKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUOAorI2VuZGlmCisgICAg
ICAgIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9i
YWxPYmplY3RHUFIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHBy
b2ZpbGVHUFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNh
bGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBJbkJ5SWQgewor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR2V0QnlJZDo6YmFzZUpTUiB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeUlkOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
ZXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OworfQorCituYW1lc3BhY2UgSW5CeVZhbCB7
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZh
bHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QzLCBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0
QnlWYWw6OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlW
YWw6OnByb3BlcnR5SlNSKTsKK30KKworbmFtZXNwYWNlIERlbEJ5SWQgeworICAgIC8vIFJlZ2lz
dGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5
IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIp
LCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5
IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJ
bmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BS
SW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFt
ZXNwYWNlIERlbEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5k
IFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdU
MTAgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpT
UiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVx
dWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lz
dGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpy
ZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBieXRl
Y29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBj
YWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNl
SlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVH
UFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisK
K25hbWVzcGFjZSBQcml2YXRlQnJhbmQgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR2V0QnlWYWw6OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0
aCB0aHVuaworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdldEJ5VmFsOjpw
cm9wZXJ0eUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisKKyAg
ICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgYnJhbmRKU1IsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAg
ICB9CisKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
IH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBz
dHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJzCisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0MDk4
Mjg5MzVlLi43NGRjMjVkZGE0ZjBkNGNkNTMxMDIyNzJmMGRlNDY0MzgwN2Y3NmE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJN
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4u
aCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0MiBAQCB2b2lkIENDYWxsSGVscGVy
czo6ZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFn
PiB3aGVyZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2NyaXB0
aW9uKTsKIH0KIAorc3RhdGljX2Fzc2VydCghKChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCArIDIqc2l6ZW9mKENQVVJlZ2lzdGVyKSkgJSAxNiksICJTdGFjayBtdXN0IGJlIGFsaWduZWQg
YWZ0ZXIgQ1RJIHRodW5rIGVudHJ5Iik7CisKK3ZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpCit7CisgICAgLy8gU3Rhc2ggZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFk
ZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplYnApOyAvLyBS
ZXR1cm4gYWRkcmVzcyBwdXNoZWQgYnkgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24KKyNlbGlmIENQVShB
Uk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwdXNoUGFpcihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJyb3Ig
Ik5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorICAgIC8vIE1ha2UgZW5vdWdo
IHNwYWNlIG9uIHRoZSBzdGFjayB0byBwYXNzIGFyZ3VtZW50cyBpbiBhIGNhbGwKKyAgICBpZiBj
b25zdGV4cHIgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBzdWJQdHIo
VHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworfQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rRXBpbG9ndWUo
KQoreworICAgIC8vIFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVu
dEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBSZXN0
b3JlIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOyAvLyBSZXR1cm4gYWRkcmVzcyBsZWZ0IG9uIHN0YWNr
IGZvciByZXR1cm4gaW5zdHJ1Y3Rpb24KKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVN
QjIpCisgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNl
bGlmIENQVShNSVBTKQorICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFk
ZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxh
dGZvcm0iCisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZj
NWRjYzg5OWU3NTYzMzlhODExNjM0ZTIzYzIxN2JkYTFjY2Y2NC4uZTdiOGRkMWI1Y2VmNzcyZGIy
NjE5NWVmZjQ1MGI5MmNkN2RmNWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCkBAIC04NTMsMTQ1ICs4NTMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBlbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+
IHdoZXJlLCBTY29wZWRMYW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsK
IAotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtPgotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZB
cmcoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOwotICAgIH0K
LQotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4u
IEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBm
aXJzdCwgQXJncy4uLiByZXN0KQotICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZB
cmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93
IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5k
ZXgpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJu
aW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlv
blR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihyZXN0Li4uKTsKLSAgICAgICAgfQotICAgIH0KLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4u
IEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBm
aXJzdCwgR1BSUmVnIHNlY29uZCwgR1BSUmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCi0gICAgewot
ICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3Vt
ZW50cyIpOwotICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAgICAgaWYg
Y29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBG
aXRzIGluIHNpbmdsZSBHUFIKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsg
Ly8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTSh0aGlyZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYm
IHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIzKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4g
R1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFy
Z3VtZW50R1BSMQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBz
ZWNvbmQgfTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3Qg
aXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNo
ZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3MgeyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8
PSA0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCi0gICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNv
bnN0ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFy
Z051bSwgSW5kZXggLSAxPihzZWNvbmQsIHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBz
dGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0
IHJldXNlIGl0IGxhdGVyCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KGZpcnN0LCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0
ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBk
b2VzIG5vdCBtYXR0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25U
eXBlLCBBcmdOdW0sIEluZGV4IC0gMT4odGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJz
dCwgR1BSUmVnIHNlY29uZCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9m
Q3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93
IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwg
J2ZpcnN0JyBhbmQgJ3NlY29uZCcgYXJlIG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxs
IGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUlu
ZGV4KSB7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkg
ewotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2Fy
bmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAg
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVl
IHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5
cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNvbmQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQg
b2YgcmVnaXN0ZXJzIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051
bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBp
Y2tKU1IoR1BSUmVnIGZpcnN0KQotICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXpl
T2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4Pigp
OwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtu
b3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBjYXNl
LCAnZmlyc3QnIGlzIG5ldmVyIGFuIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hl
ZCBvbiB0aGUgc3RhY2sgYW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVu
dEFyZyA8PSA0KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShm
aXJzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJlZ2lzdGVycyIpOwotICAgIH0KLSNlbmRpZgotCi1w
dWJsaWM6Ci0gICAgLy8gU2VlIHByZWZlcnJlZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVycG9zZSBv
ZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIHZlcnNpb24gcmV0dXJucyBhIEpTVmFsdWVSZWdzCi0gICAg
Ly8gaW5zdGVhZCBvZiBhIEdQUiwgd2hpY2ggb24gSlNWQUxVRTY0IGFyZSBlcXVpdmFsZW50LCBi
dXQgb24gSlNWQUxVRTMyXzY0IGEgSlNWYWx1ZVJlZ3MgaXMKLSAgICAvLyByZXF1aXJlZCB0byBo
b2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRp
Y3VsYXIgd2hlbiBwYXNzaW5nIGEKLSAgICAvLyBKU1ZhbHVlL0VuY29kZWRKU1ZhbHVlIGJlIGNv
bXBhdGlibGUgd2l0aCBib3RoIEpTVkFMVUU2NCBhbiBKU1ZBTFVFMzJfNjQgcGxhdGZvcm1zLCBh
bmQgdXNlCi0gICAgLy8gcHJlZmVycmVkQXJndW1lbnRHUFIgd2hlbiBwYXNzaW5nIGhvc3QgcG9p
bnRlcnMuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFy
Z051bT4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgotICAgIHBy
ZWZlcnJlZEFyZ3VtZW50SlNSKCkKLSAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSNpZiAhT1Mo
V0lORE9XUykKLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigK
LSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQ
UjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKLSNlbHNl
Ci0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJ
bmZvOjpub25BcmdHUFIwLCAgIEdQUkluZm86Om5vbkFyZ0dQUjEpOwotI2VuZGlmCi0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUaGUgbGFz
dCByZWdpc3RlciBpcyBndWFyYW50ZWVkIHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3Ig
Y2FsbHMsIHNvIHdlIGNhbiB1c2UKLSAgICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0
ZW1wb3JhcnkuCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4o
Ci0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIzLCBHUFJJbmZvOjpyZWdUNywgICAgICAgIEdQUkluZm86OnJlZ1Q2LAotICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVy
czo6bHIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlv
blR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BS
SW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1Qz
LAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAg
ICAgIEdQUkluZm86OnJlZ1Q2KTsKLSNlbmRpZgotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gQ29t
cHV0ZXMgKHN0YXRpY2FsbHksIGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGlu
ZSByZWdpc3RlciBhbiBhcmd1bWVudCBzaG91bGQgYmUKLSAgICAvLyBsb2FkZWQgaW50byBmb3Ig
YSBmdW5jdGlvbiBjYWxsLiBUaGlzIHlpZWxkcyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJl
Z2lzdGVycyBmb3IgdGhlCi0gICAgLy8gaW5pdGlhbCBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUs
IHRoZW4gc3VpdGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVycyBmb3IgdGhlIHJlbWFpbmluZwotICAg
IC8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2
ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Ygd29yayB3aGVuCi0gICAgLy8gdXNpbmcgdGhl
c2UgcmVnaXN0ZXJzIHRvIGhvbGQgdGhlIGFyZ3VtZW50cywgc28gaWYgeW91IGFyZSBsb2FkaW5n
IG1vc3QgYXJndW1lbnRzIGZyb20gbWVtb3J5Ci0gICAgLy8gYW55d2F5LCB1c2luZyB0aGVzZSBy
ZWdpc3RlcnMgeWllbGRzIHRoZSBzbWFsbGVzdCBjb2RlIHJlcXVpcmVkIGZvciBhIGNhbGwuCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEdQUlJlZz4KLSAgICBwcmVmZXJyZWRBcmd1bWVu
dEdQUigpCi0gICAgewotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9l
cyBub3QgZml0IGluIEdQUiIpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBwcmVmZXJyZWRBcmd1
bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkucGF5bG9hZEdQUigpOwotICAgIH0KKyAg
ICB2b2lkIGVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4IDgxODBkNmFiYTU3NDA0
MDFhMmZjYWIyZDVhMWZkZDUzYzlhMjA2YTMuLjFjNzRmMWY5ODJmYzUwOTk2ZDhlMWZlZGIwMWZl
M2FiYmQ3YWQ4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQog
CisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0
cnVjdHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zm
c2V0TGlzdC5oIgpAQCAtOTUsOSArOTYsOSBAQCBDYWxsRnJhbWVTaHVmZmxlRGF0YSBDYWxsRnJh
bWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoY29ucwogICAg
ICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOworICAgIHNo
dWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOwogI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5
OjppblBhaXIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2Vs
aW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CisgICAgc2h1ZmZsZURh
dGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
ZWVKU1IucGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVl
U2F2ZVJlZ2lzdGVycygmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVT
YXZlUmVnaXN0ZXJzKCkpOwogICAgIHNodWZmbGVEYXRhLnNocmlua1RvRml0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4
NDNjMmNjYjkyMjYuLjgyYWY3MTY5MzA5ZDdjOTAwYWM4ZjBlNTVkNmI1NzdhYTYxMmI2MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvblRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTc2LDYgKzk3OCwyMTEg
QEAgaW5saW5lIE5vUmVzdWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRUYWcpIHsgcmV0dXJu
IE5vUmVzdWx0OyB9CiAvLyBXZSB1c2UgdGhpcyBoYWNrIHRvIGdldCB0aGUgR1BSSW5mbyBmcm9t
IHRoZSBHUFJSZWcgdHlwZSBpbiB0ZW1wbGF0ZXMgYmVjYXVzZSBvdXIgY29kZSBpcyBiYWQgYW5k
IHdlIHNob3VsZCBmZWVsIGJhZC4uCiBjb25zdGV4cHIgR1BSSW5mbyB0b0luZm9Gcm9tUmVnKEdQ
UlJlZykgeyByZXR1cm4gR1BSSW5mbygpOyB9CiAKK2NsYXNzIE5vT3ZlcmxhcEltcGwgeworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soR1BSUmVnIGdw
cikKKyAgICB7CisgICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IHJldHVybiAwVUxMOworICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZ3ByKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgY291bnRPZkJpdHM8dWludDY0
X3Q+KTsKKyAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OworICAgIH0KKworICAgIC8vIEJhc2Ug
Y2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8v
IEdQUlJlZyBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBHUFJSZWcgZ3ByLCBB
cmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1w
bFJlZ01hc2soZ3ByKTsKKyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJn
cy4uLik7CisgICAgfQorCisgICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwo
dWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBheWxvYWRHUFIo
KSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbWFzayB8PSBub092ZXJsYXBJbXBs
UmVnTWFzayhqc3IudGFnR1BSKCkpOworI2VuZGlmCisgICAgICAgIGlmICh1c2VkICYgbWFzaykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwo
dXNlZCB8IG1hc2ssIGFyZ3MuLi4pOworICAgIH0KKworcHVibGljOgorICAgIC8vIEVudHJ5IHBv
aW50CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGVudHJ5KEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdz
Li4uKTsgfQorfTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBh
bmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0YXRpYworLy8gYXNz
ZXJ0aW9ucyB0byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUg
cG9pbnQgZG8gbm90IG1hcCB0byB0aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4K
K3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFy
Z3MuLi4gYXJncykgeyByZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50cnkoYXJncy4uLik7IH0KKwor
Y2xhc3MgUHJlZmVycmVkQXJndW1lbnRJbXBsIHsKKyAgICBwcml2YXRlOgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCisgICAgeworICAgICAgICByZXR1
cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0
ZSBBcmd1bWVudFR5cGU8QXJnTnVtPik7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNp
Z25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCisgICAg
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0g
LSBJbmRleD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50
cyIpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlUmVncyB7IGZpcnN0IH07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAg
ICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+
KHJlc3QuLi4pOworICAgICAgICB9CisgICAgfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNp
Z25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJS
ZWcgdGhpcmQsIEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qg
c2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRl
eD4oKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24n
dCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRB
cmcgPD0gNCkgeworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUg
dG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3Ro
ZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChm
aXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGgg
ZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rl
ciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRv
ZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29u
ZCwgZmlyc3QgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAv
LyBGaXRzIGluIHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3Qp
OyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwg
dGhpcmQsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGly
ZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFy
Z3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBu
dW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4o
Zmlyc3QsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxs
IGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAg
ICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0
aGlyZCwgcmVzdC4uLik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25l
ZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQorICAgIHsK
KyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9w
ZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1
bWVudHMiKTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUg
bmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBh
bnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNl
Y29uZCwgZmlyc3QgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhw
cihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0o
Zmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNl
Y29uZCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCisgICAg
eworICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFy
Z3VtZW50cyIpOworICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJn
dW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAg
ICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2Yg
cmVnaXN0ZXJzIik7CisgICAgfQorI2VuZGlmCisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5
ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CisgICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2lmICFPUyhXSU5ET1dTKQorICAgICAgICByZXR1cm4g
cGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwK
KyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0
LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5m
bzo6bm9uQXJnR1BSMSk7CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisjaWYgQ1BV
KEFSTV9USFVNQjIpCisgICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQg
dG8gYmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQorICAg
ICAgICAvLyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIs
CisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAg
ICAgR1BSSW5mbzo6cmVnVDYsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQ
UkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7CisjZWxpZiBDUFUoTUlQUykK
KyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAg
ICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUklu
Zm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCisgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOworI2Vu
ZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZf
dDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVn
PgorICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
PigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7CisjZW5kaWYKKyAgICAg
ICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKS5w
YXlsb2FkR1BSKCk7CisgICAgfQorfTsKKworLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0IGNv
bXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVudCBz
aG91bGQgYmUKKy8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRz
IHRoZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKKy8vIGluaXRpYWwg
YXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3Rl
cnMgZm9yIHRoZSByZW1haW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhhdCAnc2V0
dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Ygd29yayB3
aGVuCisvLyB1c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBp
ZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKKy8vIGFueXdheSwg
dXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBm
b3IgYSBjYWxsLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFy
Z051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRp
b25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CitwcmVmZXJyZWRBcmd1bWVudEdQUigp
Cit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJndW1lbnRH
UFI8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCisvLyBTZWUgcHJlZmVycmVkQXJndW1l
bnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1
cm5zIGEgSlNWYWx1ZVJlZ3MKKy8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2
NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCisv
LyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVz
ZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFsdWUvRW5jb2RlZEpT
VmFsdWUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82
NCBwbGF0Zm9ybXMsIGFuZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2lu
ZyBob3N0IHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KK3ByZWZlcnJlZEFy
Z3VtZW50SlNSKCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJbXBsOjpwcmVmZXJy
ZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9CisKICNlbmRpZiAvLyBF
TkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCBjNjRkZGVmMjNkNGIyZDYyNGZiNzM0NTlmMDU0N2FmNTc4ODk0NjlmLi41
MTViNzk2YjhhYjM4OTdmZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogI2Rl
ZmluZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAg
ICAgICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBcCi0gICAg
ICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RFX0lOX01B
SU4ob3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJlc2V0U1Ao
KQogCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9w
XyMjbmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3RydWN0aW9u
LCBpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGl0
ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQogCi12b2lk
IEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0
aW9uIHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTY1
Nyw5ICs2NTcsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChn
ZXRfcHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9TTE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg2MCw5ICs4
NTcsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21w
aWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5TGFiZWw7
IC8vIE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBUYWJsZS5p
c0VtcHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsK
LSAgICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXIt
PnNldEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5h
cHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVP
cmlnaW4oKSk7CkBAIC05MTQsMTIgKzkwOSwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAg
IH0KICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhj
ZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRp
b25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5kaWYKIAog
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYgKHJlY29y
ZC50YXJnZXQpCkBAIC0xMDQwLDM1ICsxMDMzLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpw
cml2YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25FZmZvcnQK
ICAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJv
bGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1l
Um9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9u
ZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0o
KSk7Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRp
b25QdHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0
eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAg
Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRy
eUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlz
IHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNh
bGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5k
bGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLX0K
LQogdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAg
ICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUg
aW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBv
cF9wcm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4N2NlOWRjNTllMWQy
ZTY4Y2FmODc1YzE3NjVjYWM0OTUxMmI4MGQ0Li5jMjY1Y2NjMDQ3OTg3YmY5Yzc3NDc4ODI0MWJl
MDcyMWEwYTY1ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsyNzYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxG
cmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0KICAg
ICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRGYXN0UGF0
aFJlc3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgot
ICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKKyAgICAg
ICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNvZGVUeXBl
JiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
dW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBAIC02MTQs
NyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9f
YXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
cHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9u
KTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfaXRl
cmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2
YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFz
UHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSwgQWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5
cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXRO
ZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1NiwyOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAgICBwcml2
YXRlOgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVuayBnZW5l
cmF0b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2Rl
bF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYp
OwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9w
dXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
cHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOwot
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9w
X2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1bmtJc1Vz
ZWRGb3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8g
ZW1pdCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29sdmVkQ2xv
c3VyZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5cGVzIHdp
dGggb3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZlVHlwZSA9
PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8IHJlc29s
dmVUeXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZN
Jik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRv
cihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRGcm9tU2Nv
cGVUaHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BSZXNv
bHZlU2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0
aHlHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAgICAgIEp1
bXAgZ2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAg
ICAgICAgewpAQCAtNzE4LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVjayhBZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
QW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4p
OwotI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCk7CkBAIC03NjMsNyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
Ly8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0
eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlz
NjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRU
eXBlPjo6dmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAgICAgICAg
ICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAg
ICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAg
ICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNjk5ZWFmY2I3MjllY2E0
MTQwNzVlYzEwY2NjOTI2MjIwYmQ0NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1YTVkYmRiMGVmMDA5MDUy
MDExNTQ5ODEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KHJlc3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1p
dF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDExIEBAIHZvaWQgSklUOjpl
bWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
cG93KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9w
b3cpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBMaXN0KCkuZW1wdHko
KSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVtcHR5KCkpOwotICAg
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZWUzY2M0NzhmZjQ3
ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uMGUzZWNiOTgwZGQ1YmQ5NmJkZmMzMDMwZTIx
ZDcwODg3NjU0YzNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklU
UmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIK
ICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZVNodWZmbGVyLmgiCkBAIC0xOTYsMTEgKzE5NywxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNh
bGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0NhcwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihS
ZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bExpbmtJbmZvR1BSLCByZWdUMykpOwotICAgIGxvYWRWYWx1ZShBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1Ip
OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsZWVKU1IsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIs
IHJlZ1QzKSk7CisgICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKTsKICAgICBs
b2FkR2xvYmFsT2JqZWN0KHJlZ1QzKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygp
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgZW1pdFZpcnR1
YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92bSwgQmFzZWxpbmVDYWxsUmVnaXN0
ZXJzOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCpt
X3ZtLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBDYWxsTW9k
ZTo6UmVndWxhcik7CiAgICAgcmVzZXRTUCgpOwogfQogCkBAIC0yMTMsMTEgKzIxNCwxMSBAQCBi
b29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgVW5saW5rZWRDYWxsTGlua0luZm8q
LCB1bnNpZ25lZCkKIHRlbXBsYXRlPD4KIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3Qg
T3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5zaWduZWQgY2Fs
bExpbmtJbmZvSW5kZXgpCiB7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwotICAgIEp1bXBMaXN0IHNsb3dQ
YXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7Cisg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJ
bmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAg
IENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGE6
OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGJ5dGVjb2RlLCBtX3VubGlua2VkQ29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBzaHVm
ZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0YSB9OwotICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgc2h1ZmZsZXIu
bG9ja0dQUihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKICAg
ICAgICAgc2h1ZmZsZXIucHJlcGFyZUZvclRhaWxDYWxsKCk7CiAgICAgfSkpOwogICAgIGFkZFNs
b3dDYXNlKHNsb3dQYXRocyk7CkBAIC0yNjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0lu
Zm9JbmQKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyks
IEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09m
ZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbGVlSlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUs
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOworICAgIHN0b3JlVmFsdWUo
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKGNv
bXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MSwxNyArMjcy
LDE3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAvLyBXZSBuZWVkIHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0IGEg
cG9pbnRlciBjb21wYXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0Y2hl
cyB0aGlzLgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUNhbGxSZWdp
c3RlcnM6OmNhbGxlZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlmIChj
b21waWxlVGFpbENhbGwoYnl0ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29kZUlE
ID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50cykgewotICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6
ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6
Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0lu
Zm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgICAgIGF1dG8gc2xvd1BhdGhz
ID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsm
XSB7CiAgICAgICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICBw
cmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZv
R1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIH0pKTsKICAgICAgICAgYWRk
U2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgp
OwpAQCAtMjg5LDcgKzI5MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERh
dGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXls
b2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBh
dXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBkb25lTG9j
YXRpb24gPSBsYWJlbCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKQEAgLTQxNiw3
ICs0MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgfQogICAgIH0pKCk7CiAKLSAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihO
b3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTQyNyw5ICs0Mjgs
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZXR1cm5WYWx1
ZUpTUik7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgc3R1YkluZm9HUFIpKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHJldHVyblZhbHVlSlNSID09IGJhc2VKU1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBuZWVkIG1v
dmUocmV0dXJuVmFsdWVKU1IsIGJhc2VKU1IpCkBAIC00NjksNyArNDcwLDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgp
KTsKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0gICAgSlNWYWx1ZVJlZ3MgaXRlcmF0
b3JKU1IgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7CisgICAgSlNWYWx1ZVJl
Z3MgaXRlcmF0b3JKU1IgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsK
ICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5v
dENlbGwoaXRlcmF0b3JKU1IpKTsKICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2Jq
ZWN0KGl0ZXJhdG9ySlNSLnBheWxvYWRHUFIoKSkpOwpAQCAtNTE4LDE2ICs1MTksMTYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24pCiAgICAgICAgIH0KICAgICB9KSgpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBuZXh0SlNSID0gYmFzZUpTUjsgLy8g
VXNlZCBhcyB0ZW1wb3JhcnkgcmVnaXN0ZXIKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fbmV4dCwgbmV4dEpTUik7CiAgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElm
Tm90RW1wdHkobmV4dEpTUik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTYxNiw4ICs2MTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93QwogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsKICAgICBlbWl0SnVtcFNs
b3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOwogCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGl0
ZXJDYWxsUmVzdWx0SlNSID0gZG9udENsb2JiZXJKU1I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggYzY3YmNl
MDlmZmJjNjBlMjQzM2U2MjJlMzc4Mjc4Y2YyMDc0YjRiZS4uZjI3M2Y0MmI5NDY0NjAwYmIyZDk2
YTM4NTcwNDA1YjZhMDlmYTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1
ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC0xNDksOSArMTUwLDkgQEAgdm9pZCBKSVRH
ZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQs
IHVuc2lnbmVkIHN0dWIKIAogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJl
c3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBh
dGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5m
b0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIs
IGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7CkBAIC0xODUsOSArMTg2LDkgQEAgdm9p
ZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0
UGF0aChKSVQmIGppdCwgdW5zaWcKIAogICAgIG1fc3RhcnQgPSBqaXQubGFiZWwoKTsKIAotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6
OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQ
Uik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7CkBAIC0yMTUsMTAgKzIxNiwxMCBAQCB2b2lk
IEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQm
IGppdCwgdW5zaWduZWQgc3R1YgogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1
YkluZm9HUFIpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOwotICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5SWQ6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2gyR1BSOwogCiAgICAgaml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgIGF1dG8gZG9JbmxpbmVBY2Nlc3MgPSBq
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKQEAgLTQwNSw5ICs0MDYsOSBAQCB2b2lkIEpJVEluQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNp
Z25lZCBzdHViSQogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIp
OwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUluQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlk
OjpzY3JhdGNoR1BSOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
aW5kZXggNjI5MjljMGMyNDg0ZmI5Y2EwZWM2NjFiYjdjMGE3ZGU2NDlmYzk4Yy4uNTI0ZjliMDQ5
ZTBmM2YzMWMyOTZkYzRkNGY3MmU3NjhiZWVlM2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtNDgsMTkwICs0OCw2
IEBAIHN0cnVjdCBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvOwogZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90OwogZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdDsKIAotbmFtZXNwYWNl
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6
cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMg
ewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVl
SlNSIH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBK
U1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BS
SW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
LSNlbmRpZgotfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLW5hbWVzcGFjZSBCYXNlbGluZUVudW1l
cmF0b3JHZXRCeVZhbFJlZ2lzdGVycyB7Ci1zdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1zdGF0aWMgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1zdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IEdQUkluZm86OnJlZ1QyOwotLy8gV2UgcmVseSBvbiB0aGlzIHdoZW4g
bGlua2luZyBhIENvZGVCbG9jayBhbmQgaW5pdGlhbGl6aW5nIHJlZ2lzdGVycyBmb3IgYSBHZXRC
eVZhbCBTdHViSW5mby4KLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwotc3RhdGljX2Fzc2VydChyZXN1bHRK
U1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSKTsKLXN0YXRpY19hc3Nl
cnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFIp
OwotCi1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IEdQUkluZm86OnJlZ1QzOwot
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSBHUFJJbmZvOjpyZWdUNDsKLXN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gzID0gR1BSSW5mbzo6cmVnVDU7Ci19Ci0jZW5kaWYK
LQotbmFtZXNwYWNlIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIy
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQ
UjMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQ
UjEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIw
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMSB9
OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OwotI2lmIENQVShNSVBTKQotY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIgfTsKLSNlbHNlCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZv
Ojpqc1JlZ1QzMiB9OwotI2VuZGlmCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBK
U1JJbmZvOjpqc1JlZ1Q1NCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6cmVn
VDYgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owot
I2VuZGlmCi1zdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKHZhbHVlSlNS
LCBwcm90b0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUikpOwotfQot
Ci1uYW1lc3BhY2UgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZB
TFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owot
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLXN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19hc3NlcnQocHJvcGVydHlK
U1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IpOwotfQotCi1uYW1l
c3BhY2UgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBy
ZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVF
NjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBH
UFJJbmZvOjpyZWdUNyB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6
bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpT
UikpOwotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgewot
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHRo
aXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxp
bmVJbkJ5SWRSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBy
ZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFIgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2Ny
YXRjaEdQUiB9OwotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVn
VDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owot
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OwotI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJ
bmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRh
Z0dQUigpIH07IC8vIFJldXNpbmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RI
VU1CMgotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsK
LSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJl
Z1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07Ci1jb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1Q1IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNw
YWNlIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KGJyYW5kSlNS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQogY2xhc3Mg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJvdGVjdGVkOgogICAgIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4
IDI2ZWIyYWZlY2FlZjVhZTRlMzdiYTA5MGZjMmJhNTg2MWEyN2ZhN2UuLjM5ODFmMTdmMDQyYmQ5
MDkxYjRjMjEyYWM4OTNlYzQzMGNlYWM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCkBAIC0xMzMsMTYgKzEzMyw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRkcmVzcyBmdW5jdGlvbikKICAgICBleGNlcHRp
b25DaGVjaygpOwogfQogCi0jaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKLUFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gZnVuY3Rpb24pCi17Ci0gICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBlKGZ1bmN0
aW9uKTsKLSAgICBleGNlcHRpb25DaGVjaygpOwotICAgIHJldHVybiBjYWxsOwotfQotI2VuZGlm
Ci0KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBmdW5jdGlvbikKIHsKICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsgLy8gVGhlIGNh
bGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB0b3BDYWxsRnJhbWUgdG8gdGhlaXIgY2Fs
bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA5MDMwYmI1
M2IyYWRkNjFhZTA4YTMwYzg3YzcxYTM4ZjFmNjc0Y2E0Li4zM2E4MDgxMjQ2ZDg0YTYxYTJhNWIw
YTVlZjQyMDM5NzJjYTE3Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogI2luY2x1ZGUgIkpJVC5o
IgogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJCYXNpY0Js
b2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgpAQCAtMTUyLDEyICsxNTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHByb3RvID0gYnl0ZWNvZGUubV9wcm90b3R5cGU7CiAKLSAgICB1c2luZyBCYXNlbGluZUluc3Rh
bmNlb2ZSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZS
ZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVy
czo6cHJvdG9KU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gx
R1BSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c2NyYXRjaDFHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gyR1BSOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHByb3RvSlNSKTsKQEAgLTIwNSw5ICsyMDYsOSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUpOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsK
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9m
Ojp2YWx1ZUpTUjsKICAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlSlNSID09IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCkpOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVyczo6cHJvdG9KU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
c3RhbmNlb2Y6OnByb3RvSlNSOwogICAgIC8vIE9uIEpTVkFMVUUzMl82NCwgJ3Byb3RvJyB3aWxs
IGJlIHBhc3NlZCBvbiBzdGFjayBhbnl3YXkKICAgICBzdGF0aWNfYXNzZXJ0KHByb3RvSlNSID09
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCkgfHwgaXMzMkJpdCgpKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCB2YWx1ZUpTUiwgcHJvdG9KU1IpKTsKQEAgLTQ1MSwyNCArNDUyLDEzIEBAIHZvaWQgSklUOjpl
bWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSmZhbHNlPigpOwogICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpz
UmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNS
OwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFs
dWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1Qz
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2Jq
ZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgYWRkSnVtcChicmFuY2hJZkZhbHNleSh2bSgpLCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gy
LCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGds
b2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxzZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlSlNSKTsKICAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bSgpLmdldENUSVN0dWIodmFsdWVJc0ZhbHNleUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRh
cmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0
b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlv
biBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAg
LTQ3NywzMSArNDY3LDI3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXls
b2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkpGYWxzZTo6dmFsdWVKU1I7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJH
UFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0
OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlSlNSLCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIsIGdsb2JhbE9iamVjdEdQUikpOworCiAgICAgY29uc3RleHByIGJvb2wgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKIAogICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Qz
OwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZtLCBKU1ZhbHVlUmVncyh2
YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgcmVnVDApOwotICAgIEp1bXAgZG9uZSA9IGppdC5qdW1wKCk7Ci0KLSAg
ICBpc0ZhbHNleS5saW5rKCZqaXQpOwogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVn
VDApOwotCi0gICAgZG9uZS5saW5rKCZqaXQpOworICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJh
bmNoSWZGYWxzZXkodm0sIHZhbHVlSlNSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIGZwUmVn
VDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKKyAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKKyAgICBpc0Zh
bHNleS5saW5rKCZqaXQpOwogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsK
LSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogdmFsdWVJc2ZhbHNleSIpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiB2YWx1ZUlzRmFsc2V5Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NTMsMjQgKzYzOSwxMyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9qdHJ1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnRydWU+KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogCi0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlID0ganNSZWdU
MTA7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkpUcnVlOjp2YWx1ZUpTUjsKIAot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsK
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQ
UikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFk
ZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBS
ZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxP
YmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0o
KS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQp
OwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZN
JiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2Fu
IG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC02Nzks
MzEgKzY1NCwyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1
ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQ
UigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7IC8vIEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSBy
ZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OworICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlSlNSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJH
UFIsIGdsb2JhbE9iamVjdEdQUikpOworCiAgICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKIAogICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1QzOwogICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBh
dXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCBKU1ZhbHVlUmVncyh2YWx1ZSks
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVnVDApOwotICAgIEp1bXAgZG9uZSA9IGppdC5qdW1wKCk7Ci0KLSAgICBpc1Ry
dXRoeS5saW5rKCZqaXQpOwogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwot
Ci0gICAgZG9uZS5saW5rKCZqaXQpOworICAgIGF1dG8gaXNUcnV0aHkgPSBqaXQuYnJhbmNoSWZU
cnV0aHkodm0sIHZhbHVlSlNSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIGZwUmVnVDAsIGZw
UmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BS
KTsKKyAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKKyAgICBpc1RydXRoeS5s
aW5rKCZqaXQpOwogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogdmFsdWVJc2ZhbHNleSIpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiB2YWx1ZUlzVHJ1dGh5Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC03MzQsNTcgKzcwNSw0NyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lk
IEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVGhyb3c+
KCk7Ci0gICAgc3RhdGljX2Fzc2VydChyZWdUMCA9PSByZXR1cm5WYWx1ZUdQUik7Ci0KLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25UaHJv
dywgZ2xvYmFsT2JqZWN0R1BSLCB2YWx1ZUpTUik7Ci0gICAganVtcFRvRXhjZXB0aW9uSGFuZGxl
cih2bSgpKTsKLSNlbHNlCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJn
dW1lbnRHUFIxOwotCiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5k
ZXgub2Zmc2V0KCk7CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRo
cm93blZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dmFsdWUsIHRocm93blZhbHVlSlNSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fdmFsdWUsIHRocm93blZhbHVlR1BSKTsKICAgICBlbWl0TmFrZWROZWFySnVtcCh2
bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Ro
cm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAg
Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpUaHJvdzo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpUaHJvdzo6dGhyb3duVmFsdWVKU1I7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93OjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcK
IAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAotICAgIGppdC5sb2Fk
UHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVudEdQUjApOwotICAgIGppdC5jb3B5Q2FsbGVl
U2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihhcmd1bWVudEdQUjApOworICAgIHsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gZ2xvYmFsT2JqZWN0R1BSOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChzY3JhdGNoR1BSLCB0aHJvd25WYWx1ZUpT
UiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiU2hvdWxkIG5vdCBjbG9iYmVyIGluY29taW5nIHBhcmFt
ZXRlcnMiKTsKKyAgICAgICAgaml0LmxvYWRQdHIoJnZtLnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2hH
UFIpOworICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoc2NyYXRjaEdQUik7CisgICAgfQogI2VuZGlmCiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0
aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRo
cm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUdQUik7Ci0gICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlSlNSKTsKICAgICBDYWxsIG9w
ZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKICAgICBqaXQuanVtcFRvRXhj
ZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25UaHJvdykpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC0x
MjUwLDc3ICsxMjExLDc0IEBAIHZvaWQgSklUOjplbWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0
aW9uKikKICAgICAvLyBFdmVuIHRob3VnaCBDVEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlh
bGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJz
LCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRp
bWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCi0gICAgc2l6ZV90IGNvdW50ID0gbV91bmxp
bmtlZENvZGVCbG9jay0+bnVtVmFycygpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3Bh
Y2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpZiAoZmlyc3QgPCBjb3VudCkKLSAgICAgICAg
bW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBqc1JlZ1QxMCk7Ci0gICAgZm9yIChzaXpl
X3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSwganNSZWdUMTApOwogCi0gICAgbG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICBlbWl0
V3JpdGVCYXJyaWVyKHJlZ1QwKTsKLQotICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7
Ci0jZWxzZQogICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgPT0gMCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIHVu
c2lnbmVkIGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgc2l6ZV90IGNvdW50ID0gbV91
bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOworICAgIHVpbnQzMl90IGxvY2Fsc1RvSW5pdCA9
IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFs
UmVnaXN0ZXJzKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobG9jYWxzVG9Jbml0IDwgY291bnQpOwot
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBs
b2NhbHNUb0luaXRHUFIpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVy
OjpjYW5CZU9wdGltaXplZEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW50
ZXI6OmxvY2Fsc1RvSW5pdEdQUjsKKwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGNhbkJlT3B0aW1p
emVkKCkpLCBjYW5CZU9wdGltaXplZEdQUik7CisgICAgbW92ZShUcnVzdGVkSW1tMzIobG9jYWxz
VG9Jbml0KSwgbG9jYWxzVG9Jbml0R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIob3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAg
IGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRp
ZgotICAgIC8vIG9wX2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9mZnNldCAwLgotICAgIGpp
dC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZW5kR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
dW5kZWZpbmVkR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVP
cHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7CiAKLSAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OwotICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9j
YWwpLm9mZnNldCgpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChzdGFydE9mZnNldCAqIHNp
emVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgaml0LnN1YjY0KGl0ZXJhdG9yR1BS
LCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkVudGVyOjpjYW5CZU9wdGltaXplZEdQUjsgLy8gSW5jb21pbmcKIAotICAgIGppdC5tb3Zl
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB1bmRlZmluZWRH
UFIpOwotICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKLSAgICBKdW1wIGluaXREb25l
ID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CiAg
ICAgewotICAgICAgICBqaXQuc3RvcmU2NCh1bmRlZmluZWRHUFIsIEJhc2VJbmRleChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgaXRlcmF0b3JHUFIsIFRpbWVzT25lKSk7Ci0gICAgICAgIGpp
dC5zdWI2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAg
ICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RW50ZXI6OmxvY2Fsc1RvSW5pdEdQUjsgLy8gSW5jb21pbmcKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IHJlZ1Q0OworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGVuZEdQUiA9IHJlZ1Q1OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdW5kZWZpbmVk
SlNSID0ganNSZWdUMzI7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGxvY2Fsc1Rv
SW5pdEdQUiwgY2FuQmVPcHRpbWl6ZWRHUFIsIGl0ZXJhdG9yR1BSLCB1bmRlZmluZWRKU1IpKTsK
KworICAgICAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgICAgICBpbnQgc3RhcnRPZmZz
ZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZzZXQoKTsKKyAgICAg
ICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IDApOworICAgICAgICBqaXQuc3ViUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBUcnVzdGVkSW1tMzIoLXN0YXJ0T2Zmc2V0ICogc2l6ZW9mKFJl
Z2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgaml0Lm11bDMyKFRydXN0ZWRJbW0zMihz
aXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSLCBsb2NhbHNUb0luaXRHUFIpOworICAg
ICAgICBqaXQuc3ViUHRyKGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Cisg
ICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHVuZGVmaW5lZEpTUik7
CisKKyAgICAgICAgYXV0byBpbml0TG9vcCA9IGppdC5sYWJlbCgpOworICAgICAgICBKdW1wIGlu
aXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQ
Uik7CisgICAgICAgIHsKKyAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHVuZGVmaW5lZEpTUiwg
QWRkcmVzcyhpdGVyYXRvckdQUikpOworICAgICAgICAgICAgaml0LnN1YlB0cihUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgfQorICAgICAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogICAg
IH0KLSAgICBpbml0RG9uZS5saW5rKCZqaXQpOwogCiAgICAgLy8gZW1pdFdyaXRlQmFycmllciht
X2NvZGVCbG9jaykuCisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FuQmVPcHRpbWl6ZWRH
UFIsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyKSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBhcmd1bWVudEdQUjEpOwogICAgIEp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVu
dEdQUjEsIGFyZ3VtZW50R1BSMik7CiAKLSAgICBqaXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAvLyBzYXZlLgotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1l
bnRHUFIxKTsKKyAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4K
KyAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisKKyAgICAvLyBzYXZlIGNhbkJlT3B0aW1pemVkR1BSIChhcmd1bWVudHMgdG8gY2Fs
bCBiZWxvdyBhcmUgaW4gcmVnaXN0ZXJzIG9uIGFsbCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0YWNr
IHRoaXMpLgorICAgIC8vIE5vdGU6IHdlIHdpbGwgZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2UgcHVz
aFRvU2F2ZSwgYXMgaXQgZG9lcyBub3QgbWFpbnRhaW4gQUJJIHN0YWNrIGFsaWdubWVudC4KKyAg
ICBqaXQuc3ViUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgaml0LnN0b3JlUHRyKGNhbkJlT3B0aW1pemVkR1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyKSk7CisKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3Jp
dGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CiAgICAgQ2FsbCBvcGVyYXRp
b25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGpp
dC5tb3ZlKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8v
IHJlc3RvcmUuCi0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyks
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyBSZXN0b3JlIGNhbkJl
T3B0aW1pemVkR1BSCisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOyAvLyBSZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwogICAgIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTMz
NSwxMSArMTI5MywzMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAgICAgICAgIHNraXBPcHRpbWl6
ZS5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeSgpKSwgQWRkcmVzcyhhcmd1bWVudEdQUjEs
IENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRlQ291bnRlcigpKSkpOwogCiAgICAgICAgIGpp
dC5jb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25PcHRpbWl6ZSk+KCZ2bSwgVHJ1c3RlZElt
bTMyKDApKTsKICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKworI2lmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2
YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBv
aW50ZXIgcGFzc2VkIGFzCisgICAgICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVudCwgYW5kIHJlbWFp
bmluZyBhcmd1bWVudHMgYXJlIHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0LiBNYWtlIHNwYWNlIGZvciB0
aGlzLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTbG93UGF0aFJldHVyblR5cGUpID09
IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQgY2FsbCBzaXRlIGJlbG93Iik7CisgICAgICAgIGpp
dC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHZtUG9pbnRlckFyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BSIHsgR1BSSW5m
bzo6YXJndW1lbnRHUFIyIH07CisjZWxzZQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHZtUG9p
bnRlckFyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMCB9OworICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07
CisjZW5kaWYKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cigmdm0pLCB2bVBvaW50ZXJB
cmdHUFIpOworICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIGJ5dGVjb2RlSW5kZXhC
aXRzQXJnR1BSKTsKKwogICAgICAgICBvcGVyYXRpb25PcHRpbWl6ZUNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOwogCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAg
ICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7IC8vIHRhcmdldFBDCisgICAgICAg
IGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsgLy8gZGF0YUJ1ZmZlciAodW51c2Vk
LCBidXQgbmVlZHMgcG9wcGluZyB0byByZXN0b3JlIHN0YWNrKQorI2VuZGlmCisKICAgICAgICAg
c2tpcE9wdGltaXplLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQ
UikpOwogICAgICAgICBqaXQuZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOwogCkBAIC0xMzQ3LDExICsxMzI0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0
LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAg
ICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTEzNjIsNyArMTMzNSw2IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZN
JiB2bSkKICNlbmRpZgogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRlcl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTU3Myw1NyArMTU0
NSw0MiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9i
amVjdChhcmd1bWVudEdQUjApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJh
cHMsIGFyZ3VtZW50R1BSMCk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2hlY2tUcmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjpl
YnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAg
aml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Y29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDaGVja1RyYXBzOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcKICAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgCi0gICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVscGVyczo6
Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVs
cGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9u
Q2hlY2sodm0pOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJ5dGVjb2RlT2Zmc2V0R1BS
LCBnbG9iYWxPYmplY3RHUFIpKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZS
ZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7Cisg
ICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0
aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xv
YmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25IYW5k
bGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7CisgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5r
RXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsK
KyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhhbmRsZVRyYXBzKSk7Ci0gICAgYXV0byBoYW5k
bGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0
aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2Rl
TG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBh
dGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDQxZTc1Zjc1NmIwZmM4NDUx
MzVhNjQwNjIxMGZjNmZlOGM0MDc2MS4uMjliMWUwYTQ5YzgyOThkM2RmNjEwYTcyY2I1YWViMDcz
NWY3OTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSklUKQogI2luY2x1ZGUgIkpJ
VC5oIgogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0x
MDEsNTEgKzEwMiwyMiBAQCB2b2lkIEpJVDo6Z2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0
IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8U2xvd0Nhc2VFbgogICAgIGlmICghaGFzQW55
U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21f
Z2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxl
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzRKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgc3RhdGljX2Fzc2VydCgh
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5vdmVybGFwcyhhcmc0SlNSKSk7Ci0g
ICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiwg
YXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQ
Uik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhz
dHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pT
UiwgYXJnNEpTUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAg
SklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJn
MSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJv
cGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKSA9PSByZWdUMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRv
TWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRD
VElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KQEAgLTE1NSw4ICsxMjcs
NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2Fz
ZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2
bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dl
dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4g
b25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBp
dCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2
YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNjQsMzUgKzEzNSwzNSBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFI0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6Omdsb2Jh
bE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFp
c0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIx
KTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUpTUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRH
UFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7
CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1
bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0
KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwg
dG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5q
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0yMDEs
MTAgKzE3MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMSwyOSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAg
QVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5
VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjdXJy
ZW50SW5zdHJ1Y3Rpb24pOwotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklU
R2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsK
KworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4K
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9w
cml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2Vy
dChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1
bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMjg2LDM0ICsyMzEsMzQgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9n
dWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3Vt
ZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlH
UFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93
T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUpTUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRH
UFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7
CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1
bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0
KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwg
dG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5q
dW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94
eHhfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNl
cHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewpAQCAtMzIxLDkgKzI2Niw5IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2Jy
YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5k
ID0gYnl0ZWNvZGUubV9icmFuZDsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpi
cmFuZEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsK
QEAgLTM1NCw0NiArMjk5LDIxIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9i
cmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwotCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107Ci0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRl
QnJhbmQ+KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
U2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJyYW5kSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4o
KTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2JyYW5kLCBicmFuZEpTUik7Ci0g
ICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgYnJhbmRKU1IpOwotI2Vs
c2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5
dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZh
dGVCcmFuZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0g
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBh
cmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9
PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
KCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBA
IC00MDQsOSArMzI0LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5
dGVjb2RlLm1fYnJhbmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJh
bmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC00
MjgsNDkgKzM0OCwyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbV9wcml2YXRlQnJhbmRB
Y2Nlc3Nlcy5hcHBlbmQoZ2VuKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9j
aGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVC
cmFuZD4oKTsKLSAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGUpOwotCi0gICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0
ZUJyYW5kQWNjZXNzSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2JyYW5kLCBicmFuZEpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgYnJhbmRKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNl
bGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0
YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAg
c3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0
aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJn
dW1lbnRUeXBlcz46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCku
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC00
ODMsMTkgKzM3NywyMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5
LCBwcm9wZXJ0eUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVK
U1IpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1l
dGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxl
R1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigp
LCAvKiBzY3JhdGNoR1BSOiAqLyBzdHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG51bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklU
LCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUlu
ZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKQEAgLTUyOSw3NiArNDI0LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWxfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0Rp
cmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2Rp
cmVjdDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gRUNNQU1vZGU6OnN0cmljdCgpOwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNv
ZGUpIHsKLSAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7
Ci0gICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAg
aWYgKGlzRGlyZWN0KQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRC
eVZhbERpcmVjdD4oKSk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRCeVZhbD4oKSk7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwot
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGlmIChpc0RpcmVjdCkKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVj
dDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVs
c2UKLSAgICAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeVZhbD4oKSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJy
YXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1Yklu
Zm9HUFIsIHByb2ZpbGVHUFIpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFs
SW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKworICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICAvLyBU
aGV5IGFyZSBjb25maWd1cmVkIGluIHRoZSBmYXN0IHBhdGggYW5kIG5vdCBjbG9iYmVyZWQuCi0g
ICAgLy8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFs
dWVHUFIgPSByZWdUMjsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSByZWdU
MzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0
ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxp
bmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmln
aHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCkBAIC02MDYsMzkgKzQ1MiwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlm
ICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0b2luID0gZGVjbHR5cGUo
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7Ci0gICAgewotICAg
ICAgICBSZWdpc3RlclNldCB1c2VkKGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJv
ZmlsZUdQUik7Ci0gICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNCkpOwotICAgICAg
ICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDUpKTsKLSAgICB9CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKT4o
Z2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZv
R1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9w
ZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0Vw
aWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisg
ICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVDYWxsIik7CisgICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NDcsMTAgKzQ5MCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCi0gICAgdXNpbmcg
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9w
ZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBA
IC02NzksNTYgKzUyMiwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmll
cihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0
aW9uKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1
dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2
YXRlTmFtZT4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZh
bEluZGV4KytdOwogCi0gICAgLy8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0g
ICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIC8vIGNvbnN0
ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9wcml2YXRl
X25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZt
KQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBt
YWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWls
YWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC03MzYsMzQgKzU1MCwzOSBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CiAKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24K
ICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRydXN0
ZWRJbW1QdHIobnVsbHB0cikpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0aGlzIHJlZ2lz
dGVyIGlzIG5lY2Vzc2FyeSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwKKyAgICAv
LyB0byBub3QgY2xvYmJlciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwgYW5kIGlzIG90
aGVyd2lzZSBoYXJtbGVzcy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBw
cm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09w
ZXJhdGlvbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwg
cHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CiAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKG5vbkFyZ0dQ
UjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3Vl
KCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVt
cCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtODQxLDEwICs2NjAsMTAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7
Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzY3Jh
dGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC04NzUsNjIg
KzY5NCwzNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKLQogICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9k
ZWxCeUlkSW5kZXgrK107CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDI+KCk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRl
bEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248
U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAq
aWRlbnQpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUo
KSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQ
UiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVn
VDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFz
ZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1
bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpT
Uik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9t
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC05MzgsMzMgKzczMSwzNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2Vs
aW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJ
VGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIp
OworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFy
Z3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cg
b3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOworICAgIGppdC5ib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1
ZUpTUik7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAg
ZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7
CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBl
eGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1
ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewpAQCAtOTczLDExICs3NjksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzY3JhdGNo
R1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC0xMDEwLDYzICs4
MDYsMzYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFs
PigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklURGVsQnlWYWxHZW5lcmF0
b3ImIGdlbiA9IG1fZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKIAorICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6
OmVjbWFNb2RlR1BSOworCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9k
ZS52YWx1ZSgpKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVj
bWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3Rl
cnM6OnJlc3VsdEpTUjsKLSAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkg
PT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCku
Z2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hC
b29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdl
bmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBC
YXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRo
ZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KQEAgLTEwNzQsMzMgKzg0MywzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNs
b3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwor
CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIw
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBl
Y21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9h
ZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJh
dGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1Is
IGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0
YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBh
cmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1
YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBq
aXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0
LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBj
YWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZm
ZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTA5LDkgKzg4MSw5
IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29k
ZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3Vs
dEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFz
ZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVn
KTsKQEAgLTExMzgsNDkgKzkxMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0K
LSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4
KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpw
cm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNz
ZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTExOTEsOSArOTQxLDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNS
KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpA
QCAtMTIxOSw0OSArOTY5LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3Qo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlk
SW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZERpcmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENv
ZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0
aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
c2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQo
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRE
aXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1
ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyNzIsMTUg
KzEwMDAsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2Vk
Q29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQ
YXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywg
YmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VW
UmVnKTsKLSAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0
aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKworICAgIGlmICgqaWRlbnQgPT0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAg
IGxvYWQ4RnJvbU1ldGFkYXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRP
Zk1vZGVNZXRhZGF0YSgpICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNj
cmF0Y2hHUFIpOwogICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5v
dEVxdWFsLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFy
cmF5TGVuZ3RoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
V2l0aENlbGwoCkBAIC0xMzEyLDUxICsxMDQwLDY2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwotICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVy
dHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwg
cHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJl
Z2luLCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhp
cyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJl
Y2F1c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFs
T2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAg
Ly8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFs
T2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworCisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0
aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Cisg
ICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9i
YWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBD
b2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAg
IGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBv
cGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQ
UjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRh
aWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNr
ID0gaml0Lmp1bXAoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbiIpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY1LDEw
ICsxMTA4LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhp
c1ZSZWcgPSBieXRlY29kZS5tX3RoaXNWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVz
dWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRo
aXNKU1IpOwpAQCAtMTM5NSw5NiArMTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQotewotICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBt
YWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWls
YWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5s
aW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5
IG5vdCBtYXRjaAotICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxw
ZXJzIGppdDsKLQotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0KLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0K
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRz
V2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAg
ICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wR2V0QnlJZFdpdGhUaGlzPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAg
ICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1tt
X2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlz
OjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2Uu
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhp
c0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0Owot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCkBAIC0xNDkyLDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFy
ZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQot
ICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Z2xv
YmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0
aFRoaXM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBy
ZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0Owot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVj
dEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUp
PihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0
eUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1IsIHByb3BlcnR5R1BSKTsKICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24g
Y2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNr
LCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTUzNCwx
MCArMTIxMywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyB0byBqdXN0IGFmdGVyIHRoZSBhcmd1bWVu
dHMgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJlZ2luJywgYW5kIHdl
IGdlbmVyYXRlIGNvZGUKICAgICAvLyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVyZSAmIG9mZnNldCBh
cmUgYWx3YXlzIGF0IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhpcy4KIAotICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3Jh
dGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6
c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2YWx1ZUpTUik7CkBA
IC0xNTYxLDcgKzEyNDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7IC8vIFdlIG1pZ2h0
IE9TUiBleGl0IGhlcmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkgcmVzZXQgU1AKICAg
ICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7Ci0gICAgCisKICAg
ICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYg
YSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQpAQCAtMTU3MCw1
NiArMTI0OSwzMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0K
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7
Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdp
bih0aGlzKTsKLSAgICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRz
W21fcHV0QnlJZEluZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxT
bG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0
KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNv
ZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
dXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOworCisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNl
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6
OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpT
bG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOwor
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAg
IGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZh
bHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVy
dHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29w
X3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5r
IGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQg
LyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0
IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KQEAgLTE2MjcsMzUgKzEyODAsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQ
YXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisg
ICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1Owot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0K
ICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGds
b2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0K
LSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BS
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRpY19hc3NlcnQo
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEs
ICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAg
ICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBl
eGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAo
KTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9i
eV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY2NCw5ICsxMzE3LDkgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTY5MSw1MSArMTM0NCwyOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJ
ZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElu
QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3Nl
cnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3
Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
ciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBv
aW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZl
cmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46
OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUlu
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQogCkBAIC0xNzQ2LDExICsxMzc3LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAg
IHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlWYWw6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHBy
b3BlcnR5SlNSKTsKQEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJbkJ5VmFsPigpOwotCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRK
U1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6
b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNl
bHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgSklUSW5CeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xv
d1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1
bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFk
YXRhKGJ5dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgp
LCBwcm9maWxlR1BSKTsKLSAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5l
cmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxs
IGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGlu
IGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBu
YW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbklu
QnlWYWxPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPjo6dmFs
dWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5
VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19h
c3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwg
VmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFj
Y2Vzc1R5cGUgdHlwZSkKIHsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eU9yQnJh
bmQsIHByb3BlcnR5SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRI
YXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0
dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhh
c1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5
cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5
VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3Bl
cnR5SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJ
bkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIy
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eU9y
QnJhbmRHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FS
TTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFyZ3VtZW50
R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRl
Y2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5
VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19h
c3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQogCkBAIC0xOTEyLDEyICsxNDkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5t
X3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SGFzUHJpdmF0ZU5hbWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFz
ZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworICAg
IGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTI2LDEyICsxNTA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29w
X2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0
ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNv
ZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQp
OworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1f
Ynl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE5NDksMTQgKzE1MjQs
MTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIElmIHdlIHByb2ZpbGUgY2VydGFpbiByZXNvbHZl
IHR5cGVzLCB3ZSdyZSBndWFyYW50ZWVkIGFsbCBsaW5rZWQgY29kZSB3aWxsIGhhdmUgdGhlIHNh
bWUKICAgICAvLyByZXNvbHZlIHR5cGUuCiAKLSAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9
PSBNb2R1bGVWYXIpIAorICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikK
ICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwgT3BSZXNvbHZlU2NvcGU6Ok1l
dGFkYXRhOjpvZmZzZXRPZkxleGljYWxFbnZpcm9ubWVudCgpLCByZXR1cm5WYWx1ZUdQUik7CiAg
ICAgZWxzZSB7CiAgICAgICAgIHVpbnQzMl90IG1ldGFkYXRhT2Zmc2V0ID0gbV91bmxpbmtlZENv
ZGVCbG9jay0+bWV0YWRhdGEoKS5vZmZzZXRJbk1ldGFkYXRhVGFibGUoYnl0ZWNvZGUpOwogCi0g
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsKLSAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QwOwotICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOworICAgICAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQUjsKKyAgICAgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7CiAKICAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIs
IG1ldGFkYXRhR1BSKTsKQEAgLTE5NjQsMjMgKzE1MzksMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY29kZTsKICAgICAg
ICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgICAgIGNv
ZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFy
Pik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBj
b2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENU
SVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xv
YmFsVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29s
dmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJ
U3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgICAgIGVs
c2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgICAg
ICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFs
UHJvcGVydHk+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVP
cFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgICAgIGVsc2UgaWYgKHBy
b2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAgICAgICAgIGNvZGUg
PSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2Fs
VmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNv
bHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAg
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0o
KS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29k
ZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUg
PT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBj
b2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGUg
PSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsK
KyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rPEdsb2JhbFZhcj4pOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKGNvZGUucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CkBAIC0yMDAwLDEyICsxNTc1LDEyIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wUmVzb2x2
ZVNjb3BlVGh1bmsoVk0mIHZtKQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICB1c2luZyBN
ZXRhZGF0YSA9IE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IG1ldGFkYXRhR1BSID0gcmVnVDI7IC8vIGluY29taW5nCi0gICAgY29uc3RleHByIEdQUlJlZyBz
Y29wZUdQUiA9IHJlZ1QwOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gaW5jb21pbmcgLSBwYXNzIHRocnUgdG8gc2xvdyBwYXRo
LgorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRh
R1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZl
U2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZyAtIHBhc3Mg
dGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0g
cmVnVDU7IC8vIGxvY2FsIHRlbXBvcmFyeQogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZU9mZnNl
dEdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVHUFIsIG1ldGFk
YXRhR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOworICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHNj
cmF0Y2hHUFIpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNjb3BlR1BSID09IHJldHVyblZhbHVlR1BS
KTsgLy8gZW1pdFJlc29sdmVDbG9zdXJlIGFzc3VtZXMgdGhpcwogCiAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKQEAgLTIxMzYsNDQgKzE3MTEsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYg
dm0KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICAvLyBUaGUgZmFzdCBwYXRoIGFscmVhZHkgcHVzaGVkIHRoZSByZXR1cm4gYWRkcmVz
cy4KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGpp
dC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQ
VShNSVBTKQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRk
cmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0
Zm9ybSIKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0gICAgaml0
LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCisgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSID0gcmVnVDI7CiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1
bWVudEdQUjA7CiAgICAgY29uc3RleHByIEdQUlJlZyBpbnN0cnVjdGlvbkdQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0
R1BSLCBzY3JhdGNoR1BSICwgZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOworICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSICwg
Z2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOwogCiAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzY3JhdGNoR1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNo
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1
Y3Rpb25HUFIpOwotICAgIGppdC5hZGRQdHIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0
aW9uR1BSKTsKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25SZXNv
bHZlU2NvcGVGb3JCYXNlbGluZSk+KGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
ZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wb3BQYWly
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMg
ICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgotI2VuZGlmCisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1
bmspOwpAQCAtMjE5MCwzOCArMTc0OCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9z
Y29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAgICAgUmVzb2x2ZVR5cGUgcHJvZmls
ZWRSZXNvbHZlVHlwZSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fcHJvZmlsZWRDb2RlQmxvY2spLm1f
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVj
b2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IG1ldGFkYXRhR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJl
Z1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLQog
ICAgIHVpbnQzMl90IG1ldGFkYXRhT2Zmc2V0ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bWV0YWRh
dGEoKS5vZmZzZXRJbk1ldGFkYXRhVGFibGUoYnl0ZWNvZGUpOwogCisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6bWV0YWRhdGFHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6c2NvcGVHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyUGF5bG9hZChzY29wZSwgc2NvcGVHUFIpOwogICAgIGFk
ZFB0cihUcnVzdGVkSW1tMzIobWV0YWRhdGFPZmZzZXQpLCBzX21ldGFkYXRhR1BSLCBtZXRhZGF0
YUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNv
ZGU7CiAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAg
Y29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVW
YXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNj
b3BlVGh1bms8Q2xvc3VyZVZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUg
PT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5n
ZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwog
ICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICBj
b2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFy
Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rPEdsb2JhbFZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0g
R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9IHZtLmdldENU
SVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgIGVs
c2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgIGNv
ZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxQcm9w
ZXJ0eT4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKKyAgICAgICAg
Y29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFs
TGV4aWNhbFZhcj4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRD
VElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVy
YXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcz4pOwogICAgIGVsc2UKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVP
cEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRD
VElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKIAogICAgIGVt
aXROYWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwpAQCAtMjIzNSw5ICsxNzky
LDEwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0
ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mIHZtKQogICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBm
dW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3Qg
bWF0Y2gKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIHVzaW5nIE1ldGFkYXRh
ID0gT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRh
dGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSID0gcmVnVDI7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOyAvLyBVc2VkIG9u
bHkgb24gc2xvdyBwYXRoCisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJv
bVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29wZUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8g
SW5jb21pbmcgLSBwYXNzIHRocm91Z2ggdG8gc2xvdyBwYXRoLgogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHJlZ1Q1OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZU9mZnNldEdQ
Uik7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIG1ldGFkYXRh
R1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKQEAgLTIyNTYs
NyArMTgxNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mIHZtKQogICAgICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKHNjcmF0Y2hHUFIsIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV92YXJJ
bmplY3Rpb25XYXRjaHBvaW50KSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzbG93Q2FzZS5hcHBl
bmQoaml0LmJyYW5jaDgoRXF1YWwsIEFkZHJlc3Moc2NyYXRjaEdQUiwgV2F0Y2hwb2ludFNldDo6
b2Zmc2V0T2ZTdGF0ZSgpKSwgVHJ1c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CiAgICAgfTsK
LSAgICAKKwogICAgIGF1dG8gZW1pdENvZGUgPSBbJl0gKFJlc29sdmVUeXBlIHJlc29sdmVUeXBl
KSB7CiAgICAgICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKICAgICAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eToKQEAgLTIzNzEsNjggKzE5MjksNDIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mIHYK
ICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5w
dXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShN
SVBTKQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVz
c1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9y
bSIKLSNlbmRpZgotCiAgICAgdXNpbmcgTWV0YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRh
dGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOwotICAgIGppdC5z
dG9yZTMyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSID0gcmVnVDI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21T
Y29wZTo6bWV0YWRhdGFHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgY29u
c3RleHByIEdQUlJlZyBpbnN0cnVjdGlvbkdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwg
c2NyYXRjaEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOworICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFs
T2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KG1ldGFkYXRhR1BSLCByZXR1cm5WYWx1ZUdQUikpOwogCi0gICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzY3JhdGNoR1BSKTsKLSAgICBqaXQubG9h
ZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoR1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rp
b25HUFIpOwotICAgIGppdC5hZGRQdHIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1
Y3Rpb25HUFIpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgLy8gUHJl
c2VydmUgbWV0YWRhdGEgaW4gYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuCi0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXI7Ci0gICAgYXV0byByZXN0b3JlSGlqYWNrZWRDU1IgPSBbJl0oKSB7Ci0gICAg
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7Ci0gICAgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
Y29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUNTUiA9IHNfbWV0YWRhdGFHUFI7Ci0gICAgYXV0byBy
ZXN0b3JlSGlqYWNrZWRDU1IgPSBbJl0oKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3Moc19tZXRhZGF0YUdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZk1ldGFk
YXRhVGFibGUoKSksIHNfbWV0YWRhdGFHUFIpOwotICAgIH07Ci0jZW5kaWYKLSAgICBBU1NFUlQo
UmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKS5jb250YWlucyhtZXRhZGF0YUNTUikp
OwotICAgIGppdC5tb3ZlKG1ldGFkYXRhR1BSLCBtZXRhZGF0YUNTUik7Ci0KLSAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0RnJvbVNjb3BlKT4oZ2xvYmFsT2JqZWN0
R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIs
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhpbnN0cnVjdGlvbkdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGluc3Ry
dWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwg
aW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3Ry
dWN0aW9uR1BSKTsKKworICAgIC8vIHNhdmUgbWV0YWRhdGFHUFIgKGFyZ3VtZW50cyB0byBjYWxs
IGJlbG93IGFyZSBpbiByZWdpc3RlcnMgb24gYWxsIHBsYXRmb3Jtcywgc28gb2sgdG8gc3RhY2sg
dGhpcykuCisgICAgLy8gTm90ZTogd2Ugd2lsbCBkbyBhIGNhbGwsIHNvIGNhbid0IHVzZSBwdXNo
VG9TYXZlLCBhcyBpdCBkb2VzIG5vdCBtYWludGFpbiBBQkkgc3RhY2sgYWxpZ25tZW50LgorICAg
IGppdC5zdWJQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAg
ICBqaXQuc3RvcmVQdHIobWV0YWRhdGFHUFIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIp
KTsKKwogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAg
ICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVj
ayh2bSk7CiAKLSAgICBqaXQuc3RvcmVWYWx1ZShyZXR1cm5WYWx1ZUpTUiwgQWRkcmVzcyhtZXRh
ZGF0YUNTUiwgTWV0YWRhdGE6Om9mZnNldE9mUHJvZmlsZSgpICsgVmFsdWVQcm9maWxlOjpvZmZz
ZXRPZkZpcnN0QnVja2V0KCkpKTsKLSAgICByZXN0b3JlSGlqYWNrZWRDU1IoKTsKKyAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSwgbWV0YWRhdGFHUFIpOyAvLyBS
ZXN0b3JlIG1ldGFkYXRhR1BSCisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOyAvLyBSZXN0b3JlIHN0YWNrIHBvaW50ZXIKKyAgICBqaXQuc3Rv
cmVWYWx1ZShyZXR1cm5WYWx1ZUpTUiwgQWRkcmVzcyhtZXRhZGF0YUdQUiwgTWV0YWRhdGE6Om9m
ZnNldE9mUHJvZmlsZSgpICsgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVja2V0KCkpKTsK
IAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxp
ZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQu
cG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShN
SVBTKQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNz
UmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3Jt
IgotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgp
OwogCiAgICAgZXhjZXB0aW9uQ2hlY2subGluaygmaml0KTsKLSAgICByZXN0b3JlSGlqYWNrZWRD
U1IoKTsKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdp
c3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorCiAgICAgSnVtcCBqdW1wVG9IYW5kbGVy
ID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtMjU5MCwy
NyArMjEyMiwyMCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGlmIChwcm9maWxlZFJl
c29sdmVUeXBlID09IE1vZHVsZVZhcikgewogICAgICAgICAvLyBJZiBhbnkgbGlua2VkIENvZGVC
bG9jayBzYXcgYSBNb2R1bGVWYXIsIHRoZW4gYWxsIGxpbmtlZCBDb2RlQmxvY2tzIGFyZSBndWFy
YW50ZWVkCiAgICAgICAgIC8vIHRvIGFsc28gc2VlIE1vZHVsZVZhci4KLSAgICAgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAg
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX3Rocm93X3N0
cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKICAgICAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKICAgICB9IGVsc2UgewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICAgICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGFyZ3VtZW50R1BSMCwgY3VycmVudEluc3Ry
dWN0aW9uKTsKLSNlbHNlCi0gICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKICAgICAgICAgQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9uQXQobV9i
eXRlY29kZUluZGV4KSA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgICAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0VG9TY29wZTo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CiAKLSAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1
dF90b19zY29wZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZgor
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0
R1BSKTsKKyAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIH0K
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9u
bHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC0yNjE5LDQz
ICsyMTQ0LDMzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAg
ICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQUjM7CiAg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAg
Y29uc3RleHByIEdQUlJlZyBpbnN0cnVjdGlvbkdQUiA9IGFyZ3VtZW50R1BSMTsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0VG9TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8v
IEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1bWVudEdQ
UjM7IC8vIE9ubHkgdXNlZCBhcyBzY3JhdGNoIHJlZ2lzdGVyCisgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUiwgYnl0ZWNvZGVPZmZzZXRH
UFIsIGNvZGVCbG9ja0dQUikpOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Y29kZUJsb2NrR1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3Ry
dWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKICAgICBqaXQuYWRkUHRyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7Ci0KICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2Fs
bChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNl
bmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvblB1dFRvU2NvcGUpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElT
dHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwot
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhh
bmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhl
eGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X3RvX3Njb3BlIik7CiB9Ci0jZW5kaWYKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zy
b21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBA
IC0yNjYzLDcgKzIxNzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50cyA9
IGJ5dGVjb2RlLm1fYXJndW1lbnRzOwogICAgIGludCBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7
Ci0gICAgCisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyUGF5bG9hZChhcmd1bWVudHMsIHJl
Z1QwKTsKICAgICBsb2FkVmFsdWUoQWRkcmVzcyhyZWdUMCwgRGlyZWN0QXJndW1lbnRzOjpzdG9y
YWdlT2Zmc2V0KCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSwganNS
ZWdUMTApOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUsIGpzUmVnVDEwKTsK
QEAgLTI3NDMsNyArMjI1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVt
ZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZG9uZUNh
c2VzLmFwcGVuZChqdW1wKCkpOwogCiAgICAgZ2VuZXJpY0Nhc2VzLmxpbmsodGhpcyk7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lQ2FzZXMubGluayh0aGlzKTsKQEAgLTI4
MDYsNyArMjMyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgb3BlcmF0aW9uQ2FzZXMubGlu
ayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0yODI0LDEz
ICsyMzM5LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgSnVtcExpc3QgZG9uZUNh
c2VzOwogCi0gICAgY29uc3RleHByIEdQUlJlZyByZXN1bHRHUFIgPSBCYXNlbGluZUVudW1lcmF0
b3JHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEJhc2VsaW5lRW51bWVy
YXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gxID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRC
eVZhbFJlZ2lzdGVyczo6c2NyYXRjaDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9
IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMzsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9y
R2V0QnlWYWw6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6c3R1YkluZm9HUFI7CisgICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMSA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6
OnNjcmF0Y2gxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzY3JhdGNoMjsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gzID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6
c2NyYXRjaDM7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIobW9kZSwgc2NyYXRjaDMpOwpAQCAtMjkwNiw3ICsy
NDIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW8KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEJ5dGVjb2RlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLXZvaWQgSklUOjplbWl0
X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBl
IGdlbmVyYWxDYXNlKQordm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5jdGlvblR5cGUgZ2VuZXJhbENh
c2UpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwpAQCAtMjkzNiw3ICsyNDUxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogICAgIHNsb3dDYXNlcy5saW5rKHRoaXMpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIGdlbmVyYWxDYXNlKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGdlbmVyYWxDYXNlKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogCiAgICAgZG9uZS5saW5r
KHRoaXMpOwpAQCAtMjk0NCwzMSArMjQ1OSwzMSBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVy
dHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1l
cmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOworICAgIGVt
aXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BF
bnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRW51bWVyYXRvckhhc093blByb3BlcnR5PigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckhhc093blByb3BlcnR5PigpLCBzbG93X3Bh
dGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKIH0KIAogI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2dldF9w
cm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVt
ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9uZXh0KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX25leHQpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC0y
OTc3LDE1ICsyNDkyLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
KikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggNGRiNzZhOTAxZGY1NmFmYjEzYjQ4YzFl
YTg3ZWQ5NTk3YjhjODFmOC4uYmY2MGMwZDIyOTBiNjQ5ZGRkMzUxNzAzNjZiMzUwZTIzOTdmYmUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMTcxLDggKzE3
MSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpj
dGlTdHViKFZNJiB2bSwgVGh1bmtHZW5lcmF0b3IKICAgICB9KTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLCBTbG93UGF0aEZ1bmN0
aW9uIHNsb3dQYXRoRnVuY3Rpb24pCiB7CiAgICAgYXV0byBrZXkgPSBiaXR3aXNlX2Nhc3Q8VGh1
bmtHZW5lcmF0b3I+KHNsb3dQYXRoRnVuY3Rpb24pOwpAQCAtMTgxLDggKzE3OSw2IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1
bmN0aW9uU3R1YihWTSYgdm0sCiAgICAgfSk7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogc3RydWN0IEpJVFRodW5rczo6SG9zdEtleVNlYXJjaGVyIHsKICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBIb3N0RnVuY3Rpb25LZXkmIGtleSkgeyByZXR1cm4g
V2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjpoYXNoKGtleSk7IH0KICAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+JiBhLCBjb25zdCBIb3N0RnVuY3Rpb25L
ZXkmIGIpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxlSGFzaDo6ZXF1YWwoYSwgYik7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCmluZGV4IDg0N2NlMjUwMmU0MDE4YTJj
NmQ1OWFjODYzYmY1N2UxNDUzOGNlZmIuLmEzNzVmMjg1MWExMDE2ZTBkYjU3ZmNkOGEwY2E2ZjEx
ZGMyODQwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaApAQCAtNjMsOSAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFn
PiBjdGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNJik7CiAKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVN0dWIoVk0mLCBUaHVua0dlbmVyYXRvcik7Ci0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYsIFNsb3dQYXRoRnVuY3Rp
b24pOwotI2VuZGlmCiAKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZN
JiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlv
blN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29u
c3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xv
d1BhdGhDYWxsLmNwcAppbmRleCBiOGFjYWJlNjhmZGI5ODE4ZGM5Zjk3Y2IwNzQ3YTBhNGUxM2Q3
MjhiLi4zMmYwNWI4M2Y1MjllODk1ZGJkOGU2MmQ5ZjdjYzI1MDQzMjA4YzM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCkBAIC0zNiw3ICszNiw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCituYW1lc3Bh
Y2UgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBKSVQ6OmFyZ3Vt
ZW50R1BSMzsKK30KIAogdm9pZCBKSVRTbG93UGF0aENhbGw6OmNhbGwoKQogewpAQCAtNDQsOSAr
NDYsNyBAQCB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2ppdC0+bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2ppdC0+bV9ieXRlY29kZUluZGV4KTsK
IAotICAgIFVOVVNFRF9WQVJJQUJMRShtX3BjKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0UmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwotICAgIG1faml0LT5tb3ZlKEpJ
VDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRSZWcpOworICAg
IG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwogICAgIG1faml0LT5lbWl0TmFrZWROZWFyQ2FsbCh2bS5qaXRTdHVicy0+Y3Rp
U2xvd1BhdGhGdW5jdGlvblN0dWIodm0sIG1fc2xvd1BhdGhGdW5jdGlvbikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIH0KIApAQCAtNTQsNDYgKzU0LDQ5IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUU2xvd1BhdGhDYWxsOjpnZW5lcmF0ZVRodW5rKFZNJiB2
bSwgU2xvCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRSZWcgPSBKSVQ6OmFyZ3VtZW50R1BSMTsKLQotI2lmIENQVShYODZfNjQp
Ci0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRp
ZgotCi0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRSZWcsIENDYWxsSGVscGVyczo6dGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9n
dWUoKTsKIAorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgQ0NhbGxIZWxwZXJzOjp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgc3RhdGljX2Fzc2VydChKSVQ6OmFyZ3VtZW50R1BS
MSA9PSBieXRlY29kZU9mZnNldFJlZyk7Ci0gICAgaml0LmFkZFB0cihHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisjaWYgT1MoV0lORE9XUykg
JiYgQ1BVKFg4Nl82NCkKKyAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0
aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBh
cworICAgIC8vIHRoZSBmaXJzdCBhcmd1bWVudCwgYW5kIHJlbWFpbmluZyBhcmd1bWVudHMgYXJl
IHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0LiBNYWtlIHNwYWNlIGZvciB0aGlzLgorICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFNsb3dQYXRoUmV0dXJuVHlwZSkgPT0gMTYsICJBc3N1bWVkIGJ5IGdlbmVy
YXRlZCBjYWxsIHNpdGUgYmVsb3ciKTsKKyAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFyZ0dQUiA9
IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJnR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIyOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgY2FsbEZyYW1lQXJnR1BSLCBwY0FyZ0dQUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIpKTsKKyNlbHNlCisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVBcmdHUFIgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjA7CisgICAgY29uc3RleHByIEdQUlJlZyBwY0FyZ0dQUiA9IEdQ
UkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChjYWxsRnJh
bWVBcmdHUFIsIHBjQXJnR1BSLCBieXRlY29kZU9mZnNldEdQUikpOworI2VuZGlmCisgICAgaml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGNhbGxGcmFtZUFyZ0dQUik7CisgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIHBjQXJnR1BSKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
cGNBcmdHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBw
Y0FyZ0dQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgcGNBcmdHUFIpOwog
CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0
Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9w
KFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihD
Q2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdp
c3Rlcik7CisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICBqaXQucG9wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsgLy8gcGMKKyAgICBqaXQucG9wKEdQUkluZm86OnJldHVyblZh
bHVlR1BSMik7IC8vIGNhbGxGcmFtZQogI2VuZGlmCi0gICAgaml0LnJldCgpOwogCi0gICAgYXV0
byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxl
RXhjZXB0aW9uR2VuZXJhdG9yKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhD
YWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oCmluZGV4IDg5
OWEyOTAwZmVkZTM3ZGQwZWE1ZTZmMmI5MDY3ZDY1YjAyZTczNjAuLjM0MGM5ZWVjYTZlODI2NTJh
OTM2YWUwOTY0YjA0NDNmNjM0MTJhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93
UGF0aENhbGwuaApAQCAtMzUsNTAgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBK
SVRTbG93UGF0aENhbGwgewogcHVibGljOgotICAgIEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRoRnVuY3Rpb24p
CisgICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBTbG93UGF0aEZ1bmN0aW9uIHNsb3dQYXRo
RnVuY3Rpb24pCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1fc2xvd1BhdGhGdW5j
dGlvbihzbG93UGF0aEZ1bmN0aW9uKQotICAgICAgICAsIG1fcGMocGMpCiAgICAgewogICAgICAg
ICBhc3NlcnRJc0NGdW5jdGlvblB0cihzbG93UGF0aEZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICB2b2lkIGNhbGwoKTsKICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVRodW5rKFZNJiwgU2xv
d1BhdGhGdW5jdGlvbik7CiAKLSNlbHNlIC8vIG5vdCBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQotICAgIEpJVDo6Q2FsbCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIG1faml0LT51cGRhdGVUb3BD
YWxsRnJhbWUoKTsKLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2pp
dC0+YWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLTE2KSwgTWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIxKTsK
LSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3Vt
ZW50R1BSMik7Ci0jZWxzZQotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lz
dGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3Rl
ZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjEpOwotI2VuZGlmCi0gICAgICAgIEpJVDo6
Q2FsbCBjYWxsID0gbV9qaXQtPmFwcGVuZENhbGwobV9zbG93UGF0aEZ1bmN0aW9uKTsKLQotI2lm
IENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdU
MCk7IC8vIHZQQwotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDEpOyAvLyBjYWxsRnJhbWUg
cmVnaXN0ZXIKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QwID09IEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChKSVQ6OnJlZ1QxID09IEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7Ci0jZW5kaWYKLQotICAgICAgICBtX2ppdC0+ZXhjZXB0aW9u
Q2hlY2soKTsKLSAgICAgICAgcmV0dXJuIGNhbGw7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiBwcml2YXRlOgogICAgIEpJVCogbV9qaXQ7CiAgICAgU2xvd1Bh
dGhGdW5jdGlvbiBtX3Nsb3dQYXRoRnVuY3Rpb247Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1f
cGM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IGM2NTcxYTZjYjU3ZTgyNGRjYzllMWNhMjM1ZTRk
YmRlYTMwOTMzYjAuLmMyZGQ3MGQ5ZjA1NzRlZTYyNjY1NDZjOGZlNWM1ODU1ZDE2NzRjM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTU5
LDggKzU5LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsMjAgKzc1LDEzIEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9
CiAKLSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZS
ZWdpc3RlcnM6OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoUklTQ1Y2NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAg
ICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1w
bGVtZW50ZWQgb24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7Cisj
aWYgQ1BVKFg4Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVz
IHRoZSByZXR1cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVy
czo6ZXNwKTsKICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9
IGppdC5qdW1wKCk7CkBAIC0xMDEsMzIgKzkyLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
cG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSAgICAgICAgLy8gRXhjZXB0aW9uIGZ1
enppbmcgY2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0byBwcmVzZXJ2
ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaGVyZS4KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBqaXQu
cHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIGppdC5w
dXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICB9CisgICAgLy8gRXhjZXB0aW9uIGZ1enppbmcg
Y2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUg
cmV0dXJuIGFkZHJlc3MgaGVyZS4KKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkKKyAgICAgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlRXhjZXB0aW9uID0gaml0LmVtaXROb25QYXRjaGFibGVF
eGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkgewotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucG9wUGFpcihDQ2FsbEhl
bHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7
Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSkpCisgICAgICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQo
KTsKIAogICAgIGF1dG8gaGFuZGxlckdlbmVyYXRvciA9IE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSA/IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ig
OiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3I7CkBAIC0xNDMsOCArMTIyLDYgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYg
dm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZvaWQgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFnVHlw
ZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApp
bmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUxLi4xMDU0OTEwNGVm
NjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVudW0gY2xhc3MgQ2Fs
bE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKIGNs
YXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFu
ZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7CiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRI
YW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0m
KTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCA2
NjRiMGUyOWY2YmEzY2U0ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3NDA5YmM5YWU4NmMz
NDI4ZTYyZWMyMGE0NTBhZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTgz
OSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05fVkFMSURBVElPTiAx
CiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYmICFPUyhXSU5ET1dT
KSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2FuIHVzZSB1cCB0byA2
IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02NCBsaWtlIGZlYXR1
cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0Zm9ybXMKLSAgIHRo
YXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4KLSovCi0jZGVmaW5l
IEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUgRU5BQkxFX0JJTkRJ
TkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448500</attachid>
            <date>2022-01-06 07:37:23 -0800</date>
            <delta_ts>2022-01-11 04:35:18 -0800</delta_ts>
            <desc>minor style fix</desc>
            <filename>bug-233822-20220106153721.patch</filename>
            <type>text/plain</type>
            <size>280834</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTJmZjgzYmJiZDYzYzc1NDg3MDg5MmEwNjhhZGZkYjViOWQ3YmJjLi4wODdmOWVjMDA5OTc4YzU3
YmY3MDVhYjVkOWMyYjQ1MTdlYmMxNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMDYgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNh
dmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNl
bGluZUpJVERhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYWNmZTVkYTdiZWM3ZWE2ZjY1MmI2MDMzZWUxZDIzODk5ZTc2M2Y0
YS4uNmRiNmZjOWYzNWE4YTVkMzMxYjU2ZmMwZGJlN2I3MTU1ZGVhOWY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wMS0wNiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1F
bmFibGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJBX0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3
YXlzIG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIwMjItMDEtMDUgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIHZlcnNpb24gbnVtYmVyIGZvciBI
QVZFX1JTQV9QU1NfT0lECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjk4
NzEyMTc1YzlhN2Q5ZTQ0MzdmZjM1NzI5YTg0YzQxZWU4YzY0Zi4uMjUxYjllNDU5OTZiM2YyMTA3
Mjc5NTc2YTU0ZTE5MjhmMWY0MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODQzLDYgKzg0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAgICBqaXQvQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjZjA3M2VjZDA1YzQ3OTk0MDViNDYxZmY5ZmU1YWNlNDE4
NDQ3YjE1Li44YzM0NDcwMjllNzE2ZjE0Y2IzZDA4ODU2NzhjZmYwMGRkZWJjZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAKIAkJNzIxMzFCRkEy
NjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBs
YW5TdGFnZS5oICovOyB9OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xp
c3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi87IH07
CiAJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5OEY1MjY1REJDREIw
MDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAwRjcyODJEQkNEQjEw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjZCOTFCMDI2NTgxNjUzMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUE4
MjY1ODE2NTIwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovOyB9OwogCQk3MjZCOTFC
MzI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIg
LyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFGMjY1
ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi87IH07CkBAIC00MTgwLDYgKzQxODEsNyBAQAog
CQk3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklU
UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNjI2NURCQ0RCMDA1
Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2VsaW5lSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFJlZ2lzdGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyog
SklUV29ya2xpc3RUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklU
V29ya2xpc3RUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQUEy
NjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDMxLDYgKzY0MzMsNyBAQAogCQkJCTUyREQwMDA2MjZFMDM5
QjMwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCAqLywKIAkJCQk3MjM5OThGNjI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLywKIAkJCQk3MjM5OThGNTI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8sCisJCQkJNzI0MDA5RjUyNzhEQkNEQjAw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4NEJB
RjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCiAJCQkJMEY2NEIyNzAxQTc4NEJBRjAw
NkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovLAogCQkJCTY1QjgzOTJEMUJBQ0E5RDMwMDQ0RTgy
NCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8sCkBAIC05NzYzLDYgKzk3NjYsNyBAQAogCQkJCTBG
MkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyogQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4M0FDMEU2REI4
QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM1RTg5RkQyNUM1MEY4NzAwNzFFRTFFIC8qIEJpZ0ludDY0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IGJmNmZiZTMwNWIzZmQ0ZDU2YWFhODUyODljZTMxMzE1YTg3MzViZTUuLmYx
ZmY2Mzk0YzlmNGVlZDUxYzEwMGM1ZTRjMjdlZjY4ZjBkYjViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0
LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0x
MDA3LDEyICsxMDE3LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVz
dCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0
LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmln
aHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwg
ZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCmluZGV4IGNkMTI5ZjZkOWE4N2UwNjlhZWNmYTQyNGFmZTcwZjBmMTE1
Y2QxNDUuLjEzNjZkZDUxMmJiMTYyMzQzOGM3ZjlmZWFkOWVjMmY2MmM0NzMyNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBBc3NlbWJsZXIg
PSBUQVJHRVRfQVNTRU1CTEVSOwogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpyNjsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBSZWdpc3RlcklEIGRhdGFUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOworICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIEFSTVJlZ2lzdGVyczo6RlBEb3VibGVSZWdpc3RlcklEIGZwVGVt
cFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhw
ciBBUk1SZWdpc3RlcnM6OkZQRG91YmxlUmVnaXN0ZXJJRCBmcFRlbXBSZWdpc3RlciA9IEFSTVJl
Z2lzdGVyczo6ZDc7CiAgICAgaW5saW5lIEFSTVJlZ2lzdGVyczo6RlBTaW5nbGVSZWdpc3RlcklE
IGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFzU2luZ2xl
KGZwVGVtcFJlZ2lzdGVyKTsgfQogCiAgICAgLy8gSW4gdGhlIFRodW1iLTIgaW5zdHJ1Y3Rpb24g
c2V0LCBpbnN0cnVjdGlvbnMgb3BlcmF0aW5nIG9ubHkgb24gcmVnaXN0ZXJzIHIwLXI3IGNhbiBv
ZnRlbgpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9HUF9S
RUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9S
X0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICN1bmRl
ZiBEVU1NWV9SRUdJU1RFUl9WQUxVRQotICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkg
eyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdp
c3RlcjsgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVt
cFBhdGNoYWJsZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4
ZGNkNjMxODExOTcxMDAxZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVm
NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7
CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7Cisg
ICAgICAgIHN1YjY0KGltbSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVk
SW1tNjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFs
dWUgPT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAppbmRleCAwMGE1NTQ5N2ZkNjNhZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0MGQyLi43N2U0YTZl
OWVmM2Y4YWM3MmE1ZGQwYzc4MjhhMGJkY2VjMzVkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWVTaHVmZmxlRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAi
Q29kZUxvY2F0aW9uLmgiCkBAIC00NywxNCArNDgsNiBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlu
a0luZm87CiAKLSNpZiBFTkFCTEUoSklUKQotbmFtZXNwYWNlIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
cyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLX0KLSNlbmRp
ZgotCiBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CkBAIC00NjIsOSArNDU1LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShK
SVQpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVHUFI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxMaW5rSW5mb0dQUjsgfQotICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxs
TGlua0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpj
YWxsZWVHUFI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIo
KSB7IHJldHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSOyB9
CisgICAgdm9pZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBS
RUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm9HUFIgPT0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxMaW5rSW5mb0dQUik7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5
NTlmZDhmZjM1MWQyOWRhZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUy
NGY0ZWZlNjhkNjFhYWNjMjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lk
IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAg
ICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5k
bGVyLCBvcmlnaW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9
IGVsc2UgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBW
TSogdm0gPSAmbV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIu
bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJ
U3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwogICAgICAgICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbiht
X3ZtKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJD
YWxsID0gaml0LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rh
c2soCi0gICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlciht
X3ZtKTsKLSNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggZDIxMDQxNzQyYmQ0OTViNjZl
Y2E0NTA4ZDczYjhkMzhjYWNmZjE1Yy4uZjQxZWZlNjI3NTM4ODc1NGJjNmVhYzhhZTNjNGYzODdi
YmY2NGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklU
UmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNp
bmNsdWRlICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGlj
QWNjZXNzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogCkBAIC00MjksNyArNDI5LDcgQEAgdm9p
ZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJ
bmZvKENvZGVCbG9jayosIFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5
cGU6OkdldEJ5SWQgJiYgdW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQo
KSkgewogICAgICAgICAvLyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUg
ImRvbnRDbG9iYmVySlNSIiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMu
c2V0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1
c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6
OmRvbnRDbG9iYmVySlNSKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKQEAg
LTUyNiw3OCArNTI2LDc4IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9t
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgc3dpdGNoIChh
Y2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAg
aGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5w
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpy
ZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICBy
ZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0
eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
bV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6
OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2
LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
dGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdH
UFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICBoYXNDb25zdGFudElk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5w
cm9wZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVE
ZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9
IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElk
ZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsK
KyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFz
ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9m
OgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgcHJvdG90
eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6
cHJvdG9KU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi50YWdHUFIoKTsK
ICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi50YWdHUFIoKTsK
KyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5j
ZW9mOjpwcm90b0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFjY2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZTogCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAogICAgICAgICBoYXND
b25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVy
dHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3Bl
cnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZh
bDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNl
SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigp
OworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0
YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJ
ZDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFn
R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAg
ICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpT
Ui50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OlRyeUdldEJ5SWQ6CkBAIC02MDUsNjUgKzYwNSw2NSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
Ojppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5s
aQogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVu
dGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
di50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdH
UFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnRh
Z0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRp
ZmllciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlz
SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwor
ICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhp
czo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50
YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyAgICAgICAg
YmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnRhZ0dQ
UigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJ
ZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50
aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5
bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0g
ICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFn
R1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2
YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGlu
ZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZh
bHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAgICAgICAgaWYgKGFjY2Vz
c1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCi0gICAgICAgICAgICBtX2FycmF5UHJvZmls
ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgICAgICAg
ICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJv
ZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQ
UigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZh
bHVlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsK
KyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZh
bHVlSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRl
QnJhbmQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgICAgICB2
YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MuYnJh
bmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlByaXZhdGVCcmFuZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MuYnJhbmRH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUi5wYXlsb2Fk
R1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJp
dmF0ZUJyYW5kOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BS
ID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAg
ICAgIHYuYnJhbmRUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRK
U1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHJpdmF0ZUJyYW5kOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LmJyYW5kVGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCBlYjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0
YTc0YTcxZjk0Li40OWZjYWI5NDEzOTIwMDY2ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQw
ICsxMzYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VO
VVNFRChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJh
bWVSb2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxG
cmFtZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3Nl
ZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0o
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKCkpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVy
T2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNr
cy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50
b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwotCi0gICAgICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3Vw
RXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgp
KTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5r
IHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBA
IC0yNzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PigpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1f
ZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2Vw
dGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4
Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5r
QnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsgPSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcik7CiAgICAgYXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJl
bDxKSVRUaHVua1B0clRhZz4ob3NyRXhpdFRodW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xv
d1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
LCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAot
ICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAg
IAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAt
NDg0LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAg
bV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRD
b2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAg
IGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGlu
ZXMgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCmluZGV4IDg5NDdjYmU5YTNjNTIxNzZhMmQ0NTM0Nzg4Mjk2MmU5NWMxZTM4ZjkuLmY3NmRh
MjIwYTM5ODc2Mzc5NzhmNmJkYjFmZTIwZjhhOTU3NWY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTMyMyw3ICszMjMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRp
dmVXaXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9p
ZCBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwog
ICAgIHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAzYjRjYTFkMTU3NWQ1MGJiZmUxYzRiN2FiODJmMTll
YWM5MDYyYjdmLi5hOTNhNmJhNDE2MTVlMDRhODM3YzliOWMxMzQ3OWU4NGY1MTE3OWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEy
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAKICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3Rh
dGUuZXhjZXB0aW9uSGFuZGxlciA9IGppdC5sYWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAg
ICBWTSogdm1QdHIgPSAmdm07CiAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5k
bGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNl
Ci0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZt
LnRvcEVudHJ5RnJhbWUpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7Ci0gICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGpp
dC5hZGRMaW5rVGFzaygKLSAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0g
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5i
M0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5
YThhNDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhj
ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBq
dW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1Ro
YW4sIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigw
KSk7Ci0jZWxzZQotICAgICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihD
Q2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsK
LSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0
aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBu
b0V4Y2VwdGlvbi5saW5rKCZqaXQpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCiAgICAgICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBq
aXQubG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0x
MTEsMTEgKzEwMSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxs
QXJpdHlDaGVjaywgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29u
c3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjaykpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAg
bGlua0J1ZmZlci0+bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlu
a0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElT
dHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZl
ci0+bGluayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDIz
ZTA4NzE4ZGJmODIwNDIzNWUzOTlhYTY1Y2IwZDk5MDgyOTcxZTAuLjQ3YWIzZTgxNTJhNDM4Mjg5
MjA3YmM0ZTlkODE4MjhkZmMzYTM4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtMTkxOSw0OSArMTkxOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0SW5zdGFuY2VOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCk7CiAjZW5kaWYKIAotICAgIC8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJl
Z3MgYW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKLSAg
ICAvLyBhc3NlcnRpb25zIHRvIGVuc3VyZSB0aGF0IHJlZ2lzdGVyIGFsaWFzZXMgbGl2ZSBhdCB0
aGUgc2FtZSBwb2ludCBkbyBub3QgbWFwIHRvIHRoZSBzYW1lCi0gICAgLy8gYXJjaGl0ZWN0dXJh
bCByZWdpc3Rlci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFw
SW1wbCgwLCBhcmdzLi4uKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEJhc2UgY2FzZQotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092
ZXJsYXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBHUFJSZWcgY2Fz
ZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIFJlZ2lzdGVySUQgZ3ByLCBBcmdzLi4u
IGFyZ3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01h
c2soZ3ByKTsKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7
Ci0gICAgfQotCi0gICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2
NF90IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BSKCkpOwot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1wbFJlZ01h
c2soanNyLnRhZ0dQUigpKTsKLSNlbmRpZgotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQg
fCBtYXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG5vT3ZlcmxhcEltcGxSZWdNYXNrKFJlZ2lzdGVySUQgZ3ByKQotICAgIHsKLSAgICAgICAgaWYg
KGdwciA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgcmV0dXJuIDBVTEw7Ci0gICAgICAg
IHVuc2lnbmVkIGJpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihncHIpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChiaXQgPCBzaXplb2YodWludDY0X3QpICogQ0hBUl9CSVQpOwotICAgICAgICBy
ZXR1cm4gMVVMTCA8PCBiaXQ7Ci0gICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNh
dmVzQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNl
bGluZUpJVFJlZ2lzdGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJ
VFJlZ2lzdGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYzQ2OTg1NzA5MzZjNTI3NTI3MDJmNGQzZmI5ZTll
NWUzNTA0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jh
c2VsaW5lSklUUmVnaXN0ZXJzLmgKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9u
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJz
IHsKKworbmFtZXNwYWNlIENhbGwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QyIH07Cit9CisKK25hbWVzcGFjZSBDaGVja1RyYXBzIHsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9
OworfQorCituYW1lc3BhY2UgRW50ZXIgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRp
bWl6ZWRHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxz
VG9Jbml0R1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKK30KKworbmFtZXNwYWNlIEluc3RhbmNlb2Yg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpT
UiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07CisgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86
OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsKKyNpZiBD
UFUoTUlQUykKKyAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIKKyNlbHNlCisgICAgICAgIEpTUkluZm86OmpzUmVnVDMyCisjZW5kaWYKKyAgICB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEpTUkluZm86OmpzUmVnVDU0IH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Cisg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYK
KyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKK30KKworbmFtZXNwYWNlIEpGYWxzZSB7
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIg
fTsKK30KKworbmFtZXNwYWNlIEpUcnVlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgVGhyb3cgeworICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CisKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCkgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFs
dWVKU1IgeyBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh0aHJvd25WYWx1ZUpTUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUiksICJSZXF1
aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQorCituYW1lc3BhY2UgUmVzb2x2
ZVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5
dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQor
CituYW1lc3BhY2UgR2V0RnJvbVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRh
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0
YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworfQorCituYW1lc3BhY2UgUHV0VG9TY29wZSB7CisgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OworfQor
CituYW1lc3BhY2UgR2V0QnlJZCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0
IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpT
UkluZm86OnJldHVyblZhbHVlSlNSIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworCisgICAgLy8gRmFzdCBwYXRoIG9ubHkg
cmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
KyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcg
fTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpLCAiUmVxdWlyZWQgZm9yIERhdGFJ
QyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVz
cGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7
IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVy
dHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9
CisKK25hbWVzcGFjZSBHZXRCeUlkV2l0aFRoaXMgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9u
IGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1
bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBK
U1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsg
SlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVn
aXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3Rl
cnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1
YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2Fs
bCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5VmFsIHsK
KyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1Ig
fTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNl
bmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZh
c3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9Owor
I2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5
SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7Cisg
ICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNs
b3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
IHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZv
OjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VK
U1IsIHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVH
UFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0
aW9uIik7CisgICAgfQorfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKK25hbWVzcGFjZSBFbnVtZXJh
dG9yR2V0QnlWYWwgeworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAvLyBXZSByZWx5IG9u
IHRoaXMgd2hlbiBsaW5raW5nIGEgQ29kZUJsb2NrIGFuZCBpbml0aWFsaXppbmcgcmVnaXN0ZXJz
IGZvciBhIEdldEJ5VmFsIFN0dWJJbmZvLgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBH
ZXRCeVZhbDo6YmFzZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRC
eVZhbDo6cHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEdldEJ5
VmFsOjpyZXN1bHRKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gR2V0QnlW
YWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUik7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMSB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gzIHsgR1BSSW5mbzo6cmVnVDUgfTsKK30KKyNlbmRpZgorCituYW1lc3BhY2Ug
UHV0QnlJZCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBh
dGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYK
KworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0
aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDJHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8v
IFJldXNpbmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgorI2VuZGlm
CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBzdHVi
SW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IucGF5bG9hZEdQUigpLCB2YWx1ZUpTUiwgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMi
KTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3Bh
Y2UgU2xvd1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxs
IHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHV0QnlWYWwgewor
ICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpy
ZWdUMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJl
Z1Q2LCBHUFJJbmZvOjpyZWdUNyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7
IEdQUkluZm86OnJlZ1Q1IH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lz
dGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJ
bmZvR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBh
dGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUNQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAg
ICAgICAgICAgLy8gV2UgYXJlIGEgYml0IHNob3J0IG9uIHJlZ2lzdGVycyBvbiBBUk1fVEhVTUIy
LCBidXQgd2UgY2FuIGp1c3QgYWJvdXQgZ2V0IGF3YXkgd2l0aCB0aGlzCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lzdGVyKCkKKyNlbHNlIC8vIE90aGVy
IEpTVkFMVUUzMl82NAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q4CisjZW5kaWYKKyAg
ICAgICAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGds
b2JhbE9iamVjdEdQUiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpT
UiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBieXRlY29kZU9mZnNldEdQUiwg
c3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwg
cHJvZmlsZUdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3Ig
Y2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEluQnlJZCB7
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHZXRCeUlkOjpiYXNlSlNSIH07
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZh
bHVlSlNSIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5SWQ6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSIH07Cit9CisKK25hbWVzcGFjZSBJbkJ5VmFs
IHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJl
Z1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBH
ZXRCeVZhbDo6YmFzZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRC
eVZhbDo6cHJvcGVydHlKU1IpOworfQorCituYW1lc3BhY2UgRGVsQnlJZCB7CisgICAgLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9u
bHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQ
UiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9u
bHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQ
UkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBH
UFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAg
ICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwg
c3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2Fs
bCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpT
UiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCitu
YW1lc3BhY2UgRGVsQnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIg
fTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpqc1Jl
Z1QxMCB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBu
YW1lc3BhY2UgRmFzdFBhdGggeworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJS
ZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVn
aXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5
dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9y
IGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJh
c2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9k
ZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30K
KworbmFtZXNwYWNlIFByaXZhdGVCcmFuZCB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBHZXRCeVZhbDo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBw
YXRoIHRodW5rCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR2V0QnlWYWw6
OnByb3BlcnR5SlNSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKwor
ICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChi
YXNlSlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOwor
ICAgIH0KKworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9H
UFIgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworICAgICAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIs
IHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgQmFzZWxpbmVKSVRSZWdpc3RlcnMKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IDA0ZThhZmRlNDFjMjY4YWQ5Y2YyZWIxYzVkM2NmMDQw
OTgyODkzNWUuLjZkNjJjNTQzNzNjMjYwNTVmNTVjMzA1MTBlMzdhYzliN2NkNmVjNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUg
Ik1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tl
bi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk0LDYgKzk1LDQyIEBAIHZvaWQgQ0NhbGxIZWxw
ZXJzOjplbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJU
YWc+IHdoZXJlCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgZGVzY3Jp
cHRpb24pOwogfQogCitzdGF0aWNfYXNzZXJ0KCEoKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsICsgMipzaXplb2YoQ1BVUmVnaXN0ZXIpKSAlIDE2KSwgIlN0YWNrIG11c3QgYmUgYWxpZ25l
ZCBhZnRlciBDVEkgdGh1bmsgZW50cnkiKTsKKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElU
aHVua1Byb2xvZ3VlKCkKK3sKKyAgICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4g
YWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7IC8v
IHJldHVybiBhZGRyZXNzIHB1c2hlZCBieSB0aGUgY2FsbCBpbnN0cnVjdGlvbgorI2VsaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHB1c2hQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICBlcnJv
ciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlmCisgICAgLy8gTWFrZSBlbm91
Z2ggc3BhY2Ugb24gdGhlIHN0YWNrIHRvIHBhc3MgYXJndW1lbnRzIGluIGEgY2FsbAorICAgIGlm
IGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIHN1YlB0
cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7Cit9CisKK3ZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpCit7CisgICAgLy8gUmVzZXQgc3RhY2sKKyAgICBpZiBjb25zdGV4cHIgKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIC8vIFJl
c3RvcmUgZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQor
ICAgIHBvcChYODZSZWdpc3RlcnM6OmVicCk7IC8vIFJldHVybiBhZGRyZXNzIGxlZnQgb24gc3Rh
Y2sKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHBv
cFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxz
ZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRjYzg5OWU3NTYzMzlhODExNjM0
ZTIzYzIxN2JkYTFjY2Y2NC4uZTdiOGRkMWI1Y2VmNzcyZGIyNjE5NWVmZjQ1MGI5MmNkN2RmNWI0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC04NTMsMTQ1
ICs4NTMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8
dm9pZChDQ2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsKIAotcHJpdmF0ZToKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZBcmcoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVt
cGxhdGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOwotICAgIH0KLQotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwg
dW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiByZXN0KQot
ICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtIC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1
bWVudHMiKTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIK
LSAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXgg
LSAxPihyZXN0Li4uKTsKLSAgICAgICAgfQotICAgIH0KLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwg
dW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCwg
R1BSUmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6
ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0g
SW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAi
RG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICBpZiBj
b25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJy
ZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKLSAg
ICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcg
ZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlyZCk7IC8v
IE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3
aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVn
aXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBp
dCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBz
ZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZp
cnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAg
ICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNv
bmQsIHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYg
dGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2lk
ZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0
ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVyCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAt
IDE+KGZpcnN0LCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQg
d2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0g
MT4odGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5z
aWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFy
ZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2Ug
YXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3NlY29uZCcg
YXJlIG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3Rh
Y2sgYW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7Ci0gICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHBy
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3Mg
eyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiBjb25z
dGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAg
ICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAx
PihzZWNvbmQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0KQot
ICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9m
QXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJn
ZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5ldmVyIGFu
IGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5
Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0
IG9mIHJlZ2lzdGVycyIpOwotICAgIH0KLSNlbmRpZgotCi1wdWJsaWM6Ci0gICAgLy8gU2VlIHBy
ZWZlcnJlZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlz
IHZlcnNpb24gcmV0dXJucyBhIEpTVmFsdWVSZWdzCi0gICAgLy8gaW5zdGVhZCBvZiBhIEdQUiwg
d2hpY2ggb24gSlNWQUxVRTY0IGFyZSBlcXVpdmFsZW50LCBidXQgb24gSlNWQUxVRTMyXzY0IGEg
SlNWYWx1ZVJlZ3MgaXMKLSAgICAvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVu
Y3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEK
LSAgICAvLyBKU1ZhbHVlL0VuY29kZWRKU1ZhbHVlIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIEpT
VkFMVUU2NCBhbiBKU1ZBTFVFMzJfNjQgcGxhdGZvcm1zLCBhbmQgdXNlCi0gICAgLy8gcHJlZmVy
cmVkQXJndW1lbnRHUFIgd2hlbiBwYXNzaW5nIGhvc3QgcG9pbnRlcnMuCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojph
cml0eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgotICAgIHByZWZlcnJlZEFyZ3VtZW50SlNSKCkK
LSAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSNpZiAhT1MoV0lORE9XUykKLSAgICAgICAgcmV0
dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50
R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBwaWNr
SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAg
ICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCAgIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOwotI2VuZGlmCi0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotI2lm
IENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBndWFyYW50
ZWVkIHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNhbiB1c2UK
LSAgICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCi0gICAgICAgIHJl
dHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUNywg
ICAgICAgIEdQUkluZm86OnJlZ1Q2LAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAg
ICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVyczo6bHIpOwotI2VsaWYgQ1BVKE1J
UFMpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAg
ICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBH
UFJJbmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1QzLAotICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJlZ1Q2KTsK
LSNlbmRpZgotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0
IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVu
dCBzaG91bGQgYmUKLSAgICAvLyBsb2FkZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxsLiBUaGlz
IHlpZWxkcyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhlCi0gICAg
Ly8gaW5pdGlhbCBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUsIHRoZW4gc3VpdGFibGUgdGVtcG9y
YXJ5IHJlZ2lzdGVycyBmb3IgdGhlIHJlbWFpbmluZwotICAgIC8vIGFyZ3VtZW50cy4gVGhlIGlk
ZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBh
bW91bnQgb2Ygd29yayB3aGVuCi0gICAgLy8gdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHRvIGhvbGQg
dGhlIGFyZ3VtZW50cywgc28gaWYgeW91IGFyZSBsb2FkaW5nIG1vc3QgYXJndW1lbnRzIGZyb20g
bWVtb3J5Ci0gICAgLy8gYW55d2F5LCB1c2luZyB0aGVzZSByZWdpc3RlcnMgeWllbGRzIHRoZSBz
bWFsbGVzdCBjb2RlIHJlcXVpcmVkIGZvciBhIGNhbGwuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0
ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFy
Z051bSksIEdQUlJlZz4KLSAgICBwcmVmZXJyZWRBcmd1bWVudEdQUigpCi0gICAgewotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9lcyBub3QgZml0IGluIEdQUiIpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybiBwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0+KCkucGF5bG9hZEdQUigpOwotICAgIH0KKyAgICB2b2lkIGVtaXRDVElUaHVua1By
b2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuY3BwCmluZGV4IDgxODBkNmFiYTU3NDA0MDFhMmZjYWIyZDVhMWZkZDUzYzlh
MjA2YTMuLjFjNzRmMWY5ODJmYzUwOTk2ZDhlMWZlZGIwMWZlM2FiYmQ3YWQ4NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVK
SVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgpAQCAtOTUsOSAr
OTYsOSBAQCBDYWxsRnJhbWVTaHVmZmxlRGF0YSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRl
Rm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoY29ucwogICAgICAgICAgICAgICAgIERhdGFGb3Jt
YXRKUyk7CiAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVl
ID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1Iu
cGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOworICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZh
bHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1Iu
cGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBhaXIoQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bGVlSlNSLnBheWxvYWRHUFIoKSk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNv
dmVyeTo6aW5QYWlyKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IudGFnR1BS
KCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpKTsK
ICNlbmRpZgogICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycygmUmVnaXN0
ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAg
IHNodWZmbGVEYXRhLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNjMmNjYjkyMjYuLjgyYWY3MTY5
MzA5ZDdjOTAwYWM4ZjBlNTVkNmI1NzdhYTYxMmI2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvblRyYWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtOTc2LDYgKzk3OCwyMTEgQEAgaW5saW5lIE5vUmVzdWx0VGFn
IGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRUYWcpIHsgcmV0dXJuIE5vUmVzdWx0OyB9CiAvLyBXZSB1
c2UgdGhpcyBoYWNrIHRvIGdldCB0aGUgR1BSSW5mbyBmcm9tIHRoZSBHUFJSZWcgdHlwZSBpbiB0
ZW1wbGF0ZXMgYmVjYXVzZSBvdXIgY29kZSBpcyBiYWQgYW5kIHdlIHNob3VsZCBmZWVsIGJhZC4u
CiBjb25zdGV4cHIgR1BSSW5mbyB0b0luZm9Gcm9tUmVnKEdQUlJlZykgeyByZXR1cm4gR1BSSW5m
bygpOyB9CiAKK2NsYXNzIE5vT3ZlcmxhcEltcGwgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGlm
IChncHIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHJldHVybiAwVUxMOworICAgICAg
ICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3ByKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoYml0IDwgY291bnRPZkJpdHM8dWludDY0X3Q+KTsKKyAgICAgICAgcmV0dXJu
IDFVTEwgPDwgYml0OworICAgIH0KKworICAgIC8vIEJhc2UgY2FzZQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwo
dWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIEdQUlJlZyBjYXNlCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVy
bGFwSW1wbCh1aW50NjRfdCB1c2VkLCBHUFJSZWcgZ3ByLCBBcmdzLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soZ3ByKTsKKyAgICAg
ICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7CisgICAgfQorCisgICAg
Ly8gSlNWYWx1ZVJlZ3MgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1
ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0g
bm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICAgICAgbWFzayB8PSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkp
OworI2VuZGlmCisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4p
OworICAgIH0KKworcHVibGljOgorICAgIC8vIEVudHJ5IHBvaW50CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVudHJ5KEFyZ3MuLi4g
YXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQorfTsKKworLy8gQ2hl
Y2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90
IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0YXRpYworLy8gYXNzZXJ0aW9ucyB0byBlbnN1cmUgdGhh
dCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1hcCB0byB0
aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KK3RlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4g
Tm9PdmVybGFwSW1wbDo6ZW50cnkoYXJncy4uLik7IH0KKworY2xhc3MgUHJlZmVycmVkQXJndW1l
bnRJbXBsIHsKKyAgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9p
Zl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXpl
X3Q+IHNpemVPZkFyZygpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8QXJnTnVt
Pik7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tK
U1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCisgICAgeworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4LCAiRG9u
J3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBpZiBjb25z
dGV4cHIgKCFJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZpcnN0IH07
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3Ro
ZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgcmV0dXJuIHBpY2tK
U1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3QuLi4pOworICAgICAgICB9
CisgICAgfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tK
U1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3MuLi4gcmVz
dCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNp
emVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUg
bGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAg
ICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAg
ICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRv
IGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50
IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIs
IHNvIHNraXAgYXJndW1lbnRHUFIxCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdz
IHsgdGhpcmQsIHNlY29uZCB9OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3
aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZD
dXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIK
KyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2Fybmlu
ZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4pOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vj
b25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVu
dEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJz
IG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1l
bnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pT
UjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4pOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4g
ZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3Rh
Y2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNS
PE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1Io
R1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQorICAgIHsKKyAgICAgICAgY29uc3RleHByIHNp
emVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAt
IEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwg
IkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAgICAgLy8g
QmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0
ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29u
c3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVu
dEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90
aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9
IDQpIHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ug
d2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01F
U1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIElu
ZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIg
c2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
IC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4
LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICAv
LyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdp
bGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByIChz
aXplT2ZDdXJyZW50QXJnIDw9IDQpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7CisgICAgfQor
I2VuZGlmCisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJl
Z3M+CisgICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorI2lmICFPUyhXSU5ET1dTKQorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQ
UjUpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
PigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisjZW5k
aWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAg
IC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9udG8gdGhl
IHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQorICAgICAgICAvLyB0aGUgbGluayByZWdp
c3RlciBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlw
ZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVnVDYsCisg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAg
QVJNUmVnaXN0ZXJzOjpscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgcmV0dXJuIHBpY2tK
U1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAg
ICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BS
SW5mbzo6cmVnVDMsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86
OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOworI2VuZGlmCisjZW5kaWYKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgorICAgIHByZWZlcnJlZEFyZ3Vt
ZW50R1BSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1bWVudCBk
b2VzIG5vdCBmaXQgaW4gR1BSIik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHByZWZlcnJlZEFy
Z3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7CisgICAgfQor
fTsKKworLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUg
aWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVudCBzaG91bGQgYmUKKy8vIGxvYWRlZCBp
bnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJn
dW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKKy8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJp
YXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcK
Ky8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2
ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Ygd29yayB3aGVuCisvLyB1c2luZyB0aGVzZSBy
ZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9z
dCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKKy8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJz
IHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgordGVtcGxhdGUg
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6
OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdO
dW0pLCBHUFJSZWc+CitwcmVmZXJyZWRBcmd1bWVudEdQUigpCit7CisgICAgcmV0dXJuIFByZWZl
cnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJndW1lbnRHUFI8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtPigpOworfQorCisvLyBTZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBwdXJwb3Nl
IG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKKy8v
IGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0
IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCisvLyByZXF1aXJlZCB0byBob2xkIGEg
NjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIg
d2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUgdG8gYmUgY29tcGF0aWJs
ZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UK
Ky8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgordGVt
cGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhw
ciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KK3ByZWZlcnJlZEFyZ3VtZW50SlNSKCkKK3sKKyAgICBy
ZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJbXBsOjpwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRp
b25UeXBlLCBBcmdOdW0+KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNjRkZGVm
MjNkNGIyZDYyNGZiNzM0NTlmMDU0N2FmNTc4ODk0NjlmLi41MTViNzk2YjhhYjM4OTdmZmFkOTgy
MmIwNDI1ZWVjYmIwNTRlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogI2RlZmluZSBERUZJTkVfU0xPV19PUChu
YW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAgICAgICBpZiAobV9ieXRlY29kZUlu
ZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBcCi0gICAgICAgICAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFt
ZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKICAg
ICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RFX0lOX01BSU4ob3BfIyNuYW1lKTsgXApAQCAt
MTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogCiAjZGVmaW5lIERFRklORV9T
TE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCi0gICAgICAg
IGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBzbG93X3BhdGhfIyNu
YW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUp
OyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2Fs
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBT
bG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHN0dWIpOwog
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTY1Nyw5ICs2NTcsNiBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xP
V19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVx
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRfcHJvdG90eXBlX29mKQotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1df
T1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19P
UChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3Byb3BlcnR5
X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg2MCw5ICs4NTcsNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQp
CiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5TGFiZWw7IC8vIE5ldmVyIHJlcXVpcmUgYXJp
dHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBUYWJsZS5pc0VtcHR5KCkpOwotICAgIAotICAg
IHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLSAgICAKKwogICAgIGlmIChtX2Rp
c2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbCgp
KTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBD
VG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC05MTQsMTIg
KzkwOSwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkp
CiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlv
bkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZy
YW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlv
bkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRD
VElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5kaWYKIAogICAgIGZvciAoYXV0byYgcmVjb3Jk
IDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYgKHJlY29yZC50YXJnZXQpCkBAIC0xMDQwLDM1
ICsxMDMzLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25FZmZvcnQKICAgICByZXR1cm4gZmluYWxpemVP
bk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhj
ZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBp
ZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAg
ICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsK
LQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlv
bkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2Fs
bHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2Fs
bGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhj
ZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAv
LyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQs
IHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAg
ICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5k
bGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLX0KLQogdm9pZCBKSVQ6OmRvTWFpblRo
cmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAgICAgLy8gVGhpcyBlbnN1cmVzIHRo
YXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJm
b3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCA4N2NlOWRjNTllMWQyZTY4Y2FmODc1YzE3NjVjYWM0OTUx
MmI4MGQ0Li5jMjY1Y2NjMDQ3OTg3YmY5Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsyNzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmFwcGVuZChl
bWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwcml2
YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0KICAgICAgICAgdm9pZCBhZHZhbmNlVG9O
ZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CkBAIC01
NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
ZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5
cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgT3Bjb2Rl
VHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5
cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9w
ZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBAIC02MTQsNyArNjEyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAg
IHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0
U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1
bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC02MjIs
NyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBk
c3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5k
LCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJl
Z2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSk7CisgICAg
ICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IElu
c3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJv
bUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAgICBwcml2YXRlOgotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVuayBnZW5lcmF0b3JzLgotICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsK
LSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25h
bWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOworICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRl
X25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsK
KwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOwotCi0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVy
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKIAotICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1bmtJc1VzZWRGb3JPcEdldEZyb21TY29wZShS
ZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gR2xvYmFs
VmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZW1pdCBpbmxpbmUgdGhhbiB1c2Ug
YSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29sdmVkQ2xvc3VyZVZhciBhbmQgTW9kdWxlVmFy
IGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5cGVzIHdpdGggb3BfZ2V0X2Zyb21fc2NvcGUu
Ci0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2
ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcik7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJh
dG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1w
bGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYpOwogICAgICAg
ICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYpOwor
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9l
bnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKKyAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJ
c0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nhc2UoVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICAgICAgewpAQCAtNzE4LDkgKzcw
Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPik7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNz
KTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBl
KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwotI2VuZGlmCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1
bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJl
c3VsdCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CkBAIC03NjMsNyArNzQ4
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90
IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0
IGJpdHMuCiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1
bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsK
LSAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1Bh
dGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAgICAgICAgICB1cGRhdGVUb3BDYWxsRnJhbWUo
KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0
aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAgICAgICAgICAgZXhjZXB0aW9uQ2hl
Y2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAjZWxzZSAvLyBPUyhX
SU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
QXJpdGhtZXRpYy5jcHAKaW5kZXggNjk5ZWFmY2I3MjllY2E0MTQwNzVlYzEwY2NjOTI2MjIwYmQ0
NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1YTVkYmRiMGVmMDA5MDUyMDExNTQ5ODEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwx
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwog
fQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2Ug
Ly8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1
Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9
CiAKQEAgLTUyMiwxMSArNTIyLDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcG93KTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9wb3cpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChn
ZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVtcHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7Cisg
ICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7
CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1
NTQ1NjliNS4uYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJ
ZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCkBAIC0x
NTMsNyArMTU0LDcgQEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUp
CiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCByZWdUMik7CiAg
ICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdUMCwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZk1h
eEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpKTsKICAgICBub3RCaWdnZXN0LmxpbmsodGhp
cyk7Ci0gICAgCisKICAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KICAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdGhpc0pTUiA9IGpzUmVnVDEwOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dGhpc1ZhbHVlLCB0aGlzSlNSKTsKQEAgLTE5NiwxMSArMTk3LDExIEBAIHZvaWQgSklUOjpjb21w
aWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzCiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6
ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lz
dGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUiwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJz
OjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7Ci0gICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
LSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxl
ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkNhbGw6OmNhbGxlZUpTUiwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5m
b0dQUiwgcmVnVDMpKTsKKyAgICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOwog
ICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9N
ZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJ
bmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKLSAgICBlbWl0
VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6
Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
TGlua0luZm9HUFIpOworICAgIGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmpl
Y3QoKm1fdm0sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIENh
bGxNb2RlOjpSZWd1bGFyKTsKICAgICByZXNldFNQKCk7CiB9CiAKQEAgLTIxMywxOCArMjE0LDE4
IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3AmLCBVbmxpbmtlZENhbGxMaW5r
SW5mbyosIHVuc2lnbmVkKQogdGVtcGxhdGU8PgogYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChj
b25zdCBPcFRhaWxDYWxsJiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25l
ZCBjYWxsTGlua0luZm9JbmRleCkKIHsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygp
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgSnVtcExpc3Qg
c2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhp
cywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZd
IHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENh
bGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMgPSBDYWxs
TGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAg
ICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxl
RGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIG1fdW5saW5r
ZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVy
IHNodWZmbGVyIHsgKnRoaXMsIHNodWZmbGVEYXRhIH07Ci0gICAgICAgIHNodWZmbGVyLmxvY2tH
UFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgICAgICBzaHVm
Zmxlci5sb2NrR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIp
OwogICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAg
YWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKIAogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwo
KTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmRvbmVMb2Nh
dGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0y
NjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICB1aW50MzJfdCBsb2Nh
dGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOwogICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsK
LSAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsZWVKU1IpOworICAgIHN0b3JlVmFsdWUoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI3MSwxNyArMjcyLDE3IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJ
bmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAvLyBXZSBuZWVkIHRoaXMgb24gSlNW
QUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0IGEgcG9pbnRlciBjb21wYXJpc29uIGluIHRo
ZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0Y2hlcyB0aGlzLgotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUikpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6
Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0ZWNvZGUs
IGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWF0ZXJp
YWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9m
Q2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsK
KyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdz
IHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewotICAgICAg
ICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBh
dGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwg
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lk
KCk+KFsmXSB7CisgICAgICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFp
bENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlu
a0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgICAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBh
cmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5m
b0dQUik7CiAgICAgICAgIH0pKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAg
ICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwpAQCAtMjg5LDcgKzI5MCw3IEBAIHZv
aWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNl
bGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5r
SW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbAogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVj
dGlvbiwgaXRlcik7CiB9Ci0gCisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3Mo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxs
VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4Kysp
OwpAQCAtMzkzLDEyICszOTQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIHsKICAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KLSAgICAKKwogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVu
dEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQotICAgIAorCiB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24s
IGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAgICAgICAgIH0KICAgICB9KSgpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2Fs
bCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVy
YXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC00MjcsOSArNDI4LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmV0dXJuVmFsdWVKU1IpOwogCi0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJu
VmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUpT
UiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJldHVyblZhbHVlSlNS
LCBiYXNlSlNSKQpAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAg
ICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKICAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CiAgICAgSnVtcExpc3Qgbm90
T2JqZWN0OwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJhdG9ySlNS
KSk7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyYXRvckpTUi5w
YXlsb2FkR1BSKCkpKTsKQEAgLTQ3OCw3ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
QwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4
dC5pbXBsKCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOwotICAgIAorCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CiAKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplKTsKQEAgLTUxOCwxNiArNTE5LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJh
dG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAg
fSkoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJl
Z2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRK
U1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRy
eUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwog
CkBAIC02MTYsOCArNjE3LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0UHV0
Q2FsbFJlc3VsdChieXRlY29kZSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50
KGp1bXAoKSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJl
ckpTUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRv
bnRDbG9iYmVySlNSOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3
ODI3OGNmMjA3NGI0YmUuLmYyNzNmNDJiOTQ2NDYwMGJiMmQ5NmEzODU3MDQwNWI2YTA5ZmEyZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5j
bHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIK
ICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgpAQCAtMTQ5LDkgKzE1MCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAg
ICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAg
ICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRl
R2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BS
LCByZXN1bHRKU1IpOwpAQCAtMTg1LDkgKzE4Niw5IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2ln
CiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdp
dGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAg
aml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0
QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCBy
ZXN1bHRKU1IpOwpAQCAtMjE1LDEwICsyMTYsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9y
OjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIK
IAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6c2NyYXRjaEdQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpi
YXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNj
cmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQ
YXRoOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVs
cGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgp
KSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
QmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YkkKIAogICAgIGpp
dC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnNj
cmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c2NyYXRjaEdQUjsKIAogICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZi
OWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUyNGY5YjA0OWUwZjNmMzFjMjk2ZGM0ZDRmNzJl
NzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5MCArNDgsNiBAQCBzdHJ1Y3QgVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIGVudW0g
Y2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1
cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQot
Ci1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZB
TFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVn
VDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVK
U1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsg
R1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotI2lmIFVT
RShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3Rl
cnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBHUFJJ
bmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sg
YW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCi1zdGF0
aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7
Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKLQotc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdUMzsKLXN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBCYXNlbGlu
ZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OwotY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OwotY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKLSNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6anNSZWdU
MTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQ
UkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07Ci0jZWxzZQotY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKLSNlbmRp
ZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5mbzo6anNSZWdUNTQgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5l
SW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9Owot
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSICB7IEdQUkluZm86OnJlZ1QzLCBHUFJJ
bmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9Owot
I2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5m
bzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9i
YmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLSNl
bmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBz
dHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKLX0KLQotbmFtZXNwYWNl
IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVF
NjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKLX0KLQotbmFt
ZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BS
IHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9Owot
Y29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86
OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5n
IHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKLSNlbmRpZgotfQotCi1u
YW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHBy
b2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJl
Z1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdU
MywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQ
UkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBH
UFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVC
cmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFu
ZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJl
Z1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
LSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0KIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJh
dG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyNmViMmFmZWNhZWY1YWU0ZTM3
YmEwOTBmYzJiYTU4NjFhMjdmYTdlLi4zOTgxZjE3ZjA0MmJkOTA5MWI0YzIxMmFjODkzZWM0MzBj
ZWFjNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMTMzLDE2
ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAgZXhjZXB0aW9uQ2hlY2soKTsKIH0KIAotI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQotewotICAg
IHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBh
cHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShmdW5jdGlvbik7Ci0gICAgZXhjZXB0aW9u
Q2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7
CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8vIFRoZSBjYWxsZWUgaXMgcmVzcG9uc2libGUg
Zm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRoZWlyIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4N2M3
MWEzOGYxZjY3NGNhNC4uMzNhODA4MTI0NmQ4NGE2MWEyYTViMGE1ZWY0MjAzOTcyY2ExNzI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2Vs
aW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTE1
MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBi
eXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVjb2RlLm1f
cHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3JhdGNoMUdQUjsKLSAgICB1c2luZyBCYXNl
bGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gxR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNoMkdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7
Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CiAgICAgc3Rh
dGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsK
ICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90bycgd2lsbCBiZSBwYXNzZWQgb24gc3RhY2sg
YW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90b0pTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJCaXQoKSk7CiAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIHByb3RvSlNS
KSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBq
dW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0
ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZG
YWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJn
ZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0
aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZh
bHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRk
SnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2NywyNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdl
bmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAg
IHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZh
bHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSBy
ZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmpl
Y3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0ZhbHNleSA9
IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1Qw
KTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXkubGluaygmaml0
KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGlu
aygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZtLCB2YWx1
ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygmaml0KTsKICAg
ICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxz
ZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNl
eSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBU
YXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1
ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25zdGV4cHIg
Ym9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5
KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsK
LSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwg
dmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlz
VHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFkZEp1bXAo
YnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhl
IHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUg
TExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtNjc5LDMxICs2NTQsMjcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAgICBzdGF0
aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIg
PSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZhbHVlSlNS
OyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIp
KTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5i
cmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIs
IGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAg
ICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAg
ICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0
KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwg
c2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQu
cmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3Nl
cnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZt
KCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
MT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVl
SlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwg
dmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpT
Uik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJv
d25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRDVElTdHViKG9wX3Ro
cm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9y
KFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIAotICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6Omdsb2Jh
bE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRocm93
blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpU
aHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICNpZiBOVU1CRVJfT0ZfQ0FM
TEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFt
ZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVjdEdQUjsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BS
KSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWluZyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGpp
dC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOwor
ICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBh
cmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQ
UiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2Jq
ZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVy
YXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MCw3NyArMTIxMSw3NCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0
aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAg
ICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3Nh
cmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdD
IHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZh
cnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0g
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNV
bmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNv
dW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7
Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQo
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9j
YWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVP
cHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQg
PSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVh
bFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51
bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0z
Mihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7
CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6
ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCksIGxvY2Fsc1RvSW5p
dEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hh
bmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5k
bGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICAvLyBvcF9lbnRlciBp
cyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KLSAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBp
dGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9
IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5lZEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0gYXJndW1l
bnRHUFI0OwogCi0gICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBpbnQgc3RhcnRPZmZz
ZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5vZmZzZXQoKTsKLSAgICBq
aXQubW92ZShUcnVzdGVkSW1tNjQoc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRl
cmF0b3JHUFIpOwotICAgIGppdC5zdWI2NChpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBl
bmRHUFIpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRp
bWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAgICBhdXRvIGluaXRM
b29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNz
VGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAgICAgICAgaml0LnN0
b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAgICAgICBqaXQuc3ViNjQoVHJ1c3RlZEltbTMy
KHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGppdC5qdW1wKGluaXRM
b29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNU
b0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JH
UFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSByZWdUNTsKKyAg
ICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpzUmVnVDMyOworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIsIGNhbkJlT3B0aW1p
emVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAgICAgc2l6ZV90IHN0
YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1
YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNl
dCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
VHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQ
Uik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGxv
Y2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BSKTsKKyAgICAgICAgaml0LnN1YlB0cihpdGVy
YXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgICAgICBqaXQubW92ZVRydXN0
ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAgICAgIGF1dG8gaW5p
dExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gz
MihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAgICAgICB7CisgICAg
ICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3MoaXRlcmF0b3JHUFIp
KTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3Rlcikp
LCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAg
IH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsKICAgICB9Ci0gICAgaW5pdERvbmUubGlu
aygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgorICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1bWVudEdQUjEsIGFy
Z3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJ
bkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIp
OwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAgLy8gb3Bf
ZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0IDAuCisgICAgaml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworCisgICAgLy8gc2F2
ZSBjYW5CZU9wdGltaXplZEdQUiAoYXJndW1lbnRzIHRvIGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lz
dGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFjayB0aGlzKS4KKyAgICAvLyBOb3Rl
OiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMg
bm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisgICAgaml0LnN1YlB0cihUcnVzdGVk
SW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZVB0cihjYW5C
ZU9wdGltaXplZEdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworCisgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4o
JnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbCA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAgIGppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciks
IGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gUmVzdG9yZSBjYW5CZU9wdGltaXplZEdQUgorICAgIGpp
dC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsgLy8gUmVz
dG9yZSBzdGFjayBwb2ludGVyCisKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmso
JmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEzMzUsMTEgKzEyOTMsMzAgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJH
ZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5icmFuY2hB
ZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9mZnNldE9m
SklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAgICBqaXQuY29weUxMSW50QmFzZWxpbmVD
YWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7CiAgICAgICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDgg
Ynl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBhcworICAg
ICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBz
aGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkgZ2Vu
ZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50
ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9Owor
I2Vsc2UKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZv
Ojphcmd1bWVudEdQUjAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZUluZGV4
Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworI2VuZGlmCisgICAgICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKSwgdm1Qb2ludGVyQXJnR1BSKTsKKyAgICAgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBieXRlY29kZUluZGV4Qml0c0FyZ0dQUik7CisKICAgICAg
ICAgb3BlcmF0aW9uT3B0aW1pemVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAor
I2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGppdC5wb3AoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOyAvLyB0YXJnZXRQQworICAgICAgICBqaXQucG9wKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSMik7IC8vIGRhdGFCdWZmZXIgKHVudXNlZCwgYnV0IG5lZWRzIHBvcHBpbmcg
dG8gcmVzdG9yZSBzdGFjaykKKyNlbmRpZgorCiAgICAgICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQo
aml0LmJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpKTsKICAgICAgICAgaml0LmZh
ckp1bXAocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIApAQCAt
MTM0NywxMSArMTMyNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua0Vw
aWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CkBAIC0xMzYyLDcgKzEzMzUsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYKICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1NzMsNTcgKzE1NDUsNDIgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGUKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQUjApOwot
I2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIzOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNoZWNrVHJhcHM6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworCisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQp
LCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElT
dHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUo
WDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBv
aW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3Vt
ZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFwczo6Ynl0
ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwotICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RHUFIpOwotICAgIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0
LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9u
Q2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFsT2JqZWN0R1BSKSk7
CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5r
UmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGpp
dC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2Jq
ZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJs
b2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9iYWxPYmpl
Y3RHUFIpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIo
cG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAg
cGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxl
ci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfY2hlY2tf
dHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBmYzZmZThjNDA3
NjEuLjI5YjFlMGE0OWM4Mjk4ZDNkZjYxMGE3MmNiNWFlYjA3MzVmNzk3N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJh
c2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKQEAgLTUyLDExICs1MywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDIsMjIgQEAgdm9p
ZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29k
ZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVyKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVEdl
dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107Ci0K
LSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFy
ZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAgIG1vdmVW
YWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pTUik7Ci0g
ICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRh
dGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQ
YXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Cisg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2VkLgotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8
fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50
R1BSMSk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBP
cGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgp
OworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRH
UFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7
CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zm
c2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJh
bmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJ
VGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0
aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjAxLDEwICsxNzIsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwpAQCAtMjMwLDU1ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2Fz
ZXMoaXRlcikpOwotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJp
dmF0ZU5hbWU+KCk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0
eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVy
dHlKU1IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLSAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
cHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVl
SlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRl
ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGlu
ZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdo
dCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KQEAgLTI4NiwzNCArMjMxLDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
cmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwogICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJh
bmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJl
c3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJ
VGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0
aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMSw5ICsyNjYs
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7
CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0zNTQsNDYgKzI5OSwyMSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVFByaXZh
dGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwotCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGlt
aXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0
ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1
c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJy
YW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FS
TTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFp
dHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRU
eXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdl
dENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA0LDkgKzMyNCw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5ICszNDgsMjMgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Kytd
OwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1Ip
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1Ip
OwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0g
ICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsK
LSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRl
QnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
cml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdp
c3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRH
UFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDgzLDE5ICszNzcsMjAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9w
ZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKKyAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5
dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgcHJvZmlsZUdQUik7Ci0gICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJy
YXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOworCisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdp
dGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyogc2NyYXRjaEdQUjogKi8g
c3R1YkluZm9HUFIpOwogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBu
dWxscHRyLCBudWxscHRyLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1
dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC01Mjks
NzYgKzQyNCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxP
cFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwotICAgIFZpcnR1YWxS
ZWdpc3RlciB2YWx1ZTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3Qo
KTsKLQotICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7Ci0gICAgICAgIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKLSAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9
IGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci0gICAgfTsKLQotICAgIGlmIChpc0RpcmVjdCkKLSAgICAg
ICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCkpOwotICAg
IGVsc2UKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCkp
OwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlW
YWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJp
Y3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDQ+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgNT4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBpZiAoaXNEaXJlY3QpCi0gICAg
ICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlWYWxEaXJlY3Q+KCksIE9wUHV0QnlWYWxEaXJlY3Q6Ok1ldGFkYXRhOjpvZmZzZXRP
ZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbHNlCi0gICAgICAgIG1hdGVyaWFs
aXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+
KCksIE9wUHV0QnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxl
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsK
LSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOworCisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBhcmUgY29uZmlndXJlZCBp
biB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
PSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAg
Ly8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNjA2LDM5ICs0NTIs
MzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgdXNpbmcgU2xvd09wZXJhdG9pbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBy
ZWdUNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQ
UigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVn
aXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgdXNl
ZChiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHByb2ZpbGVHUFIpOwotICAgICAgICBB
U1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDQpKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRh
aW5zKHJlZ1Q1KSk7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9m
aWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1Bh
dGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAorICAgIGppdC5l
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAg
IGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRvaW4+KHN0dWJJ
bmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2
YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0g
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAg
IGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAg
ICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8g
VGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhj
ZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpA
QCAtNjQ3LDEwICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2ICs1MjIsMjcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVy
QmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRC
eVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4o
Ci0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJv
cGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxH
ZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKIAotICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1
bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTElu
dCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJv
dXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTAsMzkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVn
VDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xv
Z3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
NDsKLQogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsK
KyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8gdGhpcyByZWdpc3RlciBpcyBuZWNlc3NhcnkgZm9y
IHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsCisgICAgLy8gdG8gbm90IGNsb2JiZXIgZ2xv
YmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIsIGFuZCBpcyBvdGhlcndpc2UgaGFybWxlc3MuCisg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcHJvZmlsZUdQUik7CisgICAgaml0
LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJbmZvR1BS
LAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpT
Uiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5m
YXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0
LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBj
YWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTg0MSwxMCArNjYwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1LDYyICs2OTQsMzYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJ
ZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFy
Z3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0K
ICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVy
czo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9
PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9v
bGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtOTM4LDMzICs3MzEsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNt
YU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlv
bj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVj
bWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQu
Ym94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJl
dCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
ZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTk3MywxMSArNzY5
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVE
ZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OkZhc3RQYXRoOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2MyArODA2LDM2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeVZhbD4oKTsKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUu
bV9wcm9wZXJ0eTsKLQogICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5VmFs
c1ttX2RlbEJ5VmFsSW5kZXgrK107CiAKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKwogICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJh
dGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5
SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUpTUiwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50
R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlHUFIp
OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVj
bWFNb2RlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
ZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0
dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAg
c3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQUigpID09IEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9k
ZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5
bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCBy
ZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpT
Uik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwog
fQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5j
dGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UK
ICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0
IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xMDc0LDMz
ICs4NDMsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0
ZUJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpw
cm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNs
b3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7
CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBv
cGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0KICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVu
dEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBlY21hTW9kZUdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQ
Uiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCBlY21hTW9kZUdQUik7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJu
VmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92
YWxfcHJlcGFyZUNhbGwiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtMTEwOSw5ICs4ODEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5
dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMTM4LDQ5ICs5MTAs
MjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0K
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+
KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0
aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jh
c2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxz
ZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MjsKICAgICBtb3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3Vt
ZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQ
Uik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5
R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZh
bHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCku
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1
cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBD
YWxsKCkpOwogfQogCkBAIC0xMTkxLDkgKzk0MSw5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpi
YXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTksNDkgKzk2OSwyNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGly
ZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERp
cmVjdD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRE
aXJlY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygp
KTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CisgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQ
UjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
YXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0
ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFy
Z3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09
IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9w
ZXJ0eUdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
KworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3Vs
dEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xMjcyLDE1ICsxMDAwLDE1IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7Ci0gICAgCi0gICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CisKKyAgICBpZiAoKmlkZW50ID09IHZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
ICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBsb2FkOEZyb21NZXRhZGF0YShi
eXRlY29kZSwgT3BHZXRCeUlkOjpNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0YWRhdGEoKSArIEdl
dEJ5SWRNb2RlTWV0YWRhdGE6Om9mZnNldE9mTW9kZSgpLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
SnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2gzMihOb3RFcXVhbCwgVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpLCBzY3JhdGNo
R1BSKTsKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKApAQCAtMTMxMiw1
MSArMTA0MCw2NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0K
LSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7
Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlk
ZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNl
LCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAot
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5
SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3Vu
bGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAg
ICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJl
dHVyblZhbHVlSlNSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xv
d19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwog
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkK
K3sKKyAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkg
d29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisgICAgLy8gaXQgbWFr
ZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFi
bGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9GVEwgbWF5IGlubGlu
ZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBu
b3QgbWF0Y2gKKyAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIENDYWxsSGVscGVy
cyBqaXQ7CisKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93
UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisg
ICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0
aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8
U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJv
cGVydHlHUFIpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgc3RhdGlj
X2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3Vt
ZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5m
byIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0
LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9u
IGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CisKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRf
YnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKK30KKwogdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwpAQCAtMTM2NSwxMCArMTEwOCwxMCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNWUmVnID0gYnl0ZWNvZGUubV90
aGlzVmFsdWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWUmVnLCB0aGlzSlNSKTsKQEAgLTEzOTUsOTYg
KzExMzgsMzIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKLXsKLSAgICAvLyBUaGUgdGh1
bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTElu
dCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCi0gICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJv
dXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgotICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25n
aW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKLSAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIENDYWxsSGVscGVycyBqaXQ7Ci0KLSAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFk
ZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwot
Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAg
ICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAg
ICAgICAgaml0LnJldCgpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfd2l0aF90
aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdp
dGhUaGlzPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhUaGlzW21fZ2V0QnlJZFdp
dGhUaGlzSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlv
biA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSID0gcHJlZmVycmVkQXJndW1lbnRK
U1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3RoaXNWYWx1ZSwgdGhpc0pTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgdGhpc0pTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4o
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
dGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMg
ZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNh
dXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9i
amVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTQ5
MiwzNSArMTE3MSwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQogICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRX
aXRoVGhpczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGpp
dC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
dGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOworICAgIGppdC5zZXR1
cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCB0aGlzSlNSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBv
cGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQ
UjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3Vl
KCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVt
cCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsIik7
CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
dm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1MzQsMTAgKzEyMTMsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgLy8gdG8ganVzdCBhZnRlciB0aGUgYXJndW1lbnRzIGhhdmUgYmVlbiBsb2FkZWQg
aW50byByZWdpc3RlcnMgJ2hvdFBhdGhCZWdpbicsIGFuZCB3ZSBnZW5lcmF0ZSBjb2RlCiAgICAg
Ly8gc3VjaCB0aGF0IHRoZSBTdHJ1Y3R1cmUgJiBvZmZzZXQgYXJlIGFsd2F5cyBhdCB0aGUgc2Ft
ZSBkaXN0YW5jZSBmcm9tIHRoaXMuCiAKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpT
UjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHZhbHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2MSw3ICsxMjQwLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgcmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1IgZXhpdCBoZXJlLCBzbyB3
ZSBuZWVkIHRvIGNvbnNlcnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRkU2xvd0Nhc2UoKTsKICAg
ICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwotICAgIAorCiAgICAgLy8gSUMgY2FuIHdyaXRlIG5l
dyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAg
IC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZl
Y3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEyNDksMzAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0gICAgCi0gICAg
SklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVl
SlNSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5
dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9w
dXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKKworICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3Vt
ZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHZh
bHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVu
dEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFu
dEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2Vk
Q29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dP
cGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwo
KSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNjI3
LDM1ICsxMjgwLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25Q
dXRCeUlkU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNs
b3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisK
KyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVy
YXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVH
UFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19h
c3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGlj
X2Fzc2VydCh2YWx1ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
R2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
aml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CiAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2gg
dG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVu
a0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5r
CisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsK
KyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKQEAgLTE2NjQsOSArMTMxNyw5IEBAIHZvaWQgSklUOjplbWl0X29wX2lu
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5SWQ6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VK
U1IsIGJhc2VWUmVnKTsKQEAgLTE2OTEsNTEgKzEzNDQsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQot
ICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21faW5CeUlkSW5kZXgrK107
Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CisgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5
SWRzW21faW5CeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKLSAgICAvLyBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvciB3aWxsIGRv
IGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdo
YXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1
cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTc0Niwx
MSArMTM3NywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlW
YWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzY3Jh
dGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0xNzc3
LDY0ICsxNDA4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4o
KTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFs
SW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0
YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxl
KCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
YXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJv
cGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBw
cm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZh
bHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
PSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5
VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAg
Ly8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3Rs
eSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2Ug
bmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0
ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJ
bkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6
cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJl
c3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c3R1Yklu
Zm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlPckJyYW5kLCBwcm9wZXJ0eUpTUik7CkBA
IC0xODU4LDUxICsxNDYyLDI3IEBAIHZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVn
aXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZvaWQgSklUOjplbWl0SGFz
UHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NU
eXBlIHR5cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAgIFVOVVNFRF9QQVJBTShw
cm9wZXJ0eSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIAot
ICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgr
K107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3Bl
cmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5
dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVP
ZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2Vu
ID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5kR1BSID0gQmFzZWxpbmVJ
bkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fz
c2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
b3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQ
cml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAtMTkxMiwx
MiArMTQ5MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNv
ZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlw
ZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVOYW1lPigpOwot
ICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVy
dHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAgICBlbWl0SGFzUHJpdmF0ZVNsb3co
QWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAt
MTkyNiwxMiArMTUwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRl
KGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQsIEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0g
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlQnJh
bmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKyAgICBlbWl0SGFzUHJpdmF0
ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpA
QCAtMTk0MSw3ICsxNTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSBieXRlY29k
ZS5tX3Njb3BlOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNv
ZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBBU1NFUlQo
bV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVjb2RlSW5kZXgpID09IGN1
cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xOTQ5LDE0ICsxNTI0LDE0IEBAIHZvaWQgSklUOjplbWl0
X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICAvLyBJZiB3ZSBwcm9maWxlIGNlcnRhaW4gcmVzb2x2ZSB0eXBlcywgd2UncmUgZ3VhcmFu
dGVlZCBhbGwgbGlua2VkIGNvZGUgd2lsbCBoYXZlIHRoZSBzYW1lCiAgICAgLy8gcmVzb2x2ZSB0
eXBlLgogCi0gICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSAKKyAgICBp
ZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIGxvYWRQdHJGcm9t
TWV0YWRhdGEoYnl0ZWNvZGUsIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZMZXhp
Y2FsRW52aXJvbm1lbnQoKSwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVsc2UgewogICAgICAgICB1
aW50MzJfdCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCku
b2Zmc2V0SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKIAotICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIG1ldGFkYXRhR1BSID0gcmVnVDI7Ci0gICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVH
UFIgPSByZWdUMDsKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IHJlZ1QzOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3Bl
OjptZXRhZGF0YUdQUjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29s
dmVTY29wZTo6c2NvcGVHUFI7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpS
ZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7CiAgICAgICAgIGFkZFB0cihUcnVzdGVk
SW1tMzIobWV0YWRhdGFPZmZzZXQpLCBzX21ldGFkYXRhR1BSLCBtZXRhZGF0YUdQUik7CkBAIC0x
OTY0LDIzICsxNTM5LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNvZGU7CiAgICAgICAgIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcj4pOworICAgICAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZh
cj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNv
bHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgICAg
ICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcikKLSAgICAgICAgICAg
IGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxW
YXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29s
dmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0
dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CisgICAgICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxQcm9wZXJ0eT4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09
IEdsb2JhbExleGljYWxWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOworICAgICAgICAgICAg
Y29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFs
TGV4aWNhbFZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0
ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwog
ICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdl
bmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJl
c29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwog
ICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cz4pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgICAgICBjb2RlID0g
dm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsK
IAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbChjb2RlLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAgICAgfQpAQCAtMjAwMCwxMiArMTU3NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rKFZNJiB2bSkK
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgdXNpbmcgTWV0YWRhdGEgPSBPcFJlc29sdmVT
Y29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Qy
OyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdUMDsgLy8g
aW5jb21pbmcKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7
IC8vIGluY29taW5nIC0gcGFzcyB0aHJ1IHRvIHNsb3cgcGF0aC4KKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQUjsgLy8g
SW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpi
eXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcgLSBwYXNzIHRocm91Z2ggdG8gc2xvdyBwYXRo
LgogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1Q1OyAvLyBsb2NhbCB0ZW1w
b3JhcnkKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIpOwotICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlR1BSLCBtZXRhZGF0YUdQUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0
YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSKSk7CiAgICAgc3Rh
dGljX2Fzc2VydChzY29wZUdQUiA9PSByZXR1cm5WYWx1ZUdQUik7IC8vIGVtaXRSZXNvbHZlQ2xv
c3VyZSBhc3N1bWVzIHRoaXMKIAogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC0yMTM2
LDQ0ICsxNzExLDI3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgLy8gVGhlIGZhc3Qg
cGF0aCBhbHJlYWR5IHB1c2hlZCB0aGUgcmV0dXJuIGFkZHJlc3MuCi0jaWYgQ1BVKFg4Nl82NCkK
LSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucHVz
aFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxz
ZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5jb21p
bmdCeXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOwotICAgIGppdC5zdG9yZTMyKGluY29taW5nQnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6
OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKIAogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogICAgIGNv
bnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0
ZXhwciBHUFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUiAsIGds
b2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUiAsIGdsb2JhbE9iamVjdEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpKTsKIAogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3Jh
dGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKLSAgICBqaXQu
YWRkUHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBq
aXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7CiAKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUp
PihnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNl
cHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJ
U0NWNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rl
cik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1l
bnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKQEAgLTIxOTAsMzggKzE3
NDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSBieXRl
Y29kZS5tX3Njb3BlOwogICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2ZVR5cGUgPSBieXRl
Y29kZS5tZXRhZGF0YShtX3Byb2ZpbGVkQ29kZUJsb2NrKS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKTsKIAotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgQVNTRVJUKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9uQXQobV9ieXRlY29kZUluZGV4KSA9PSBjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0KICAgICB1aW50MzJfdCBtZXRhZGF0
YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCkub2Zmc2V0SW5NZXRhZGF0
YVRhYmxlKGJ5dGVjb2RlKTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRG
cm9tU2NvcGU6Om1ldGFkYXRhR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRGcm9tU2NvcGU6OnNjb3BlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1l
dGFkYXRhT2Zmc2V0KSwgc19tZXRhZGF0YUdQUiwgbWV0YWRhdGFHUFIpOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjb2RlOwogICAgIGlmIChwcm9maWxl
ZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHVi
KGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAgICAgIGNvZGUg
PSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXI+
KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9w
R2V0RnJvbVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAg
ICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlIGlmIChwcm9maWxl
ZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcikKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICBjb2RlID0g
dm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsK
ICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAg
IGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2Jh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsKKyAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsUHJv
cGVydHk+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbExleGlj
YWxWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2Nv
cGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKICAgICBl
bHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsK
KyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1
bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlCi0g
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxH
bG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAKICAgICBlbWl0TmFrZWROZWFyQ2FsbChjb2Rl
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QsIHJldHVyblZhbHVlSlNSKTsKQEAgLTIyMzUsOSArMTc5MiwxMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5r
KFZNJiB2bSkKICAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0
byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCiAgICAgLy8gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDQ7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gVXNlZCBvbmx5IG9uIHNsb3cgcGF0aAorCisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6bWV0YWRhdGFHUFI7
IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29w
ZTo6c2NvcGVHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nIC0gcGFzcyB0aHJv
dWdoIHRvIHNsb3cgcGF0aC4KICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdU
NTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSKSk7CkBAIC0yMjU2LDcgKzE4MTQsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rKFZNJiB2bSkKICAgICAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoR1BSLCBP
QkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fdmFySW5qZWN0aW9uV2F0Y2hwb2ludCkp
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2g4KEVxdWFs
LCBBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhdGNocG9pbnRTZXQ6Om9mZnNldE9mU3RhdGUoKSksIFRy
dXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSkpOwogICAgIH07Ci0gICAgCisKICAgICBhdXRvIGVt
aXRDb2RlID0gWyZdIChSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkgewogICAgICAgICBzd2l0Y2gg
KHJlc29sdmVUeXBlKSB7CiAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CkBAIC0yMzcxLDY4
ICsxOTI5LDQyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJiB2CiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAg
ICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucHVzaFBh
aXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQot
IyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKLQogICAgIHVz
aW5nIE1ldGFkYXRhID0gT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGluY29taW5n
Qnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLSAgICBqaXQuc3RvcmUzMihpbmNvbWluZ0J5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAv
LyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6
OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5zdHJ1
Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0
YWRhdGFHUFIsIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIsIGdsb2JhbE9i
amVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCht
ZXRhZGF0YUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rp
b25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgcmV0dXJu
VmFsdWVHUFIpKTsKIAotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNo
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKLSAgICBqaXQuYWRk
UHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQu
ZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAotICAgIC8vIFByZXNlcnZlIG1ldGFkYXRhIGluIGEg
Y2FsbGVlIHNhdmVkIHJlZ2lzdGVyLgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY29uc3RleHBy
IEdQUlJlZyBtZXRhZGF0YUNTUiA9IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyOwotICAgIGF1
dG8gcmVzdG9yZUhpamFja2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQubW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwot
ICAgIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0
YWRhdGFDU1IgPSBzX21ldGFkYXRhR1BSOwotICAgIGF1dG8gcmVzdG9yZUhpamFja2VkQ1NSID0g
WyZdKCkgewotICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIHNfbWV0YWRhdGFHUFIpOwotICAgICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNf
bWV0YWRhdGFHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBzX21ldGFk
YXRhR1BSKTsKLSAgICB9OwotI2VuZGlmCi0gICAgQVNTRVJUKFJlZ2lzdGVyU2V0OjpjYWxsZWVT
YXZlUmVnaXN0ZXJzKCkuY29udGFpbnMobWV0YWRhdGFDU1IpKTsKLSAgICBqaXQubW92ZShtZXRh
ZGF0YUdQUiwgbWV0YWRhdGFDU1IpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkdldEZyb21TY29wZSk+KGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIp
OworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoaW5zdHJ1
Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhpbnN0cnVjdGlvbkdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKKyAg
ICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisKKyAgICAv
LyBzYXZlIG1ldGFkYXRhR1BSIChhcmd1bWVudHMgdG8gY2FsbCBiZWxvdyBhcmUgaW4gcmVnaXN0
ZXJzIG9uIGFsbCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpLgorICAgIC8vIE5vdGU6
IHdlIHdpbGwgZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2UgcHVzaFRvU2F2ZSwgYXMgaXQgZG9lcyBu
b3QgbWFpbnRhaW4gQUJJIHN0YWNrIGFsaWdubWVudC4KKyAgICBqaXQuc3ViUHRyKFRydXN0ZWRJ
bW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnN0b3JlUHRyKG1ldGFk
YXRhR1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSk7CisKICAgICBDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaml0LnN0
b3JlVmFsdWUocmV0dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFDU1IsIE1ldGFkYXRhOjpv
ZmZzZXRPZlByb2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7
Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3RlciksIG1ldGFkYXRhR1BSKTsgLy8gUmVzdG9yZSBtZXRhZGF0YUdQUgor
ICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsg
Ly8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisgICAgaml0LnN0b3JlVmFsdWUocmV0dXJuVmFsdWVK
U1IsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE1ldGFkYXRhOjpvZmZzZXRPZlByb2ZpbGUoKSArIFZh
bHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKLSNpZiBDUFUoWDg2XzY0KQot
ICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUo
QVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucG9wUGFp
cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0j
ICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgorICAgIGppdC5l
bWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAgIGV4Y2VwdGlvbkNo
ZWNrLmxpbmsoJmppdCk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAgaml0LmFkZFB0
cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOyAvLyBSZXN0b3JlIHN0
YWNrIHBvaW50ZXIKKwogICAgIEp1bXAganVtcFRvSGFuZGxlciA9IGppdC5qdW1wKCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTI1OTAsMjcgKzIxMjIsMjAgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3IKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVW
YXIpIHsKICAgICAgICAgLy8gSWYgYW55IGxpbmtlZCBDb2RlQmxvY2sgc2F3IGEgTW9kdWxlVmFy
LCB0aGVuIGFsbCBsaW5rZWQgQ29kZUJsb2NrcyBhcmUgZ3VhcmFudGVlZAogICAgICAgICAvLyB0
byBhbHNvIHNlZSBNb2R1bGVWYXIuCi0gICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVf
cmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9w
cm9wZXJ0eV93cml0ZV9lcnJvcik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAg
fSBlbHNlIHsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIGxvYWRHbG9i
YWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRUb1Njb3BlLCBhcmd1bWVudEdQUjAsIGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0jZWxzZQotICAg
ICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIEFTU0VSVCht
X3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3Vy
cmVudEluc3RydWN0aW9uKTsKIAotICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCi0gICAgICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisgICAgICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRo
dW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJ
bnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjE0NCwzMyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwot
I2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5z
dHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZworICAgIGNvbnN0
ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOyAvLyBPbmx5IHVzZWQgYXMg
c2NyYXRjaCByZWdpc3RlcgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2JhbE9iamVj
dEdQUiwgaW5zdHJ1Y3Rpb25HUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBjb2RlQmxvY2tHUFIpKTsK
IAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhj
b2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkp
LCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpOwotCiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsK
LSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNo
YWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRUb1Nj
b3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJl
c2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOwog
fQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjY2Myw3ICsyMTc4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50
czsKICAgICBpbnQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIAorCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYXJndW1lbnRzLCByZWdUMCk7CiAgICAgbG9hZFZhbHVl
KEFkZHJlc3MocmVnVDAsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpICsgaW5kZXgg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIGpzUmVnVDEwKTsKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCBqc1JlZ1QxMCk7CkBAIC0yNzQzLDcgKzIyNTgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsK
IAogICAgIGdlbmVyaWNDYXNlcy5saW5rKHRoaXMpOwotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5
X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogCiAgICAgZG9uZUNhc2VzLmxpbmsodGhpcyk7CkBAIC0yODA2LDcgKzIzMjEsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMjgyNCwxMyArMjMzOSwxMyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0g
QmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUVudW1lcmF0b3JH
ZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IEJhc2VsaW5l
RW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0
Y2gyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUVudW1lcmF0b3JH
ZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaDM7CisgICAgY29uc3RleHByIEdQUlJlZyByZXN1bHRH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpyZXN1bHRKU1Iu
cGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51
bWVyYXRvckdldEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0
QnlWYWw6OnN0dWJJbmZvR1BSOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzY3JhdGNoMTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JH
ZXRCeVZhbDo6c2NyYXRjaDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gzOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKG1vZGUsIHNjcmF0Y2gzKTsKQEAgLTI5MDYsNyArMjQyMSw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwgdHlwZW5hbWUg
U2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9w
ZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgQnl0
ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKK3ZvaWQg
SklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRlY29kZSYgYnl0
ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjQ1MSw3IEBAIHZvaWQgSklUOjplbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFsQ2FzZSk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2FzZSk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5NDQsMzEg
KzI0NTksMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
ZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xv
d19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3By
b3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCks
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJl
bnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Q
cm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CisgICAg
ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjpl
bWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihj
b25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IElu
c3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
CiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjQ5MiwxNSBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9p
bl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19w
YXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjguLmJm
NjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5r
R2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQ
YXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9u
KQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93UGF0
aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLAog
ICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0cnVj
dCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxl
SGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRp
dmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBXZWFr
TmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1Mzhj
ZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlv
bkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU2xv
d1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAgICAg
TmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0
aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVy
YXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYg
bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2Fs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5kZXgg
YjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uMzJmMDViODNmNTI5ZTg5
NWRiZDhlNjJkOWY3Y2MyNTA0MzIwOGMzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorbmFtZXNwYWNlIHsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7Cit9CiAKIHZvaWQg
SklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKQEAgLTQ0LDkgKzQ2LDcgQEAgdm9pZCBKSVRTbG93
UGF0aENhbGw6OmNhbGwoKQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9qaXQtPm1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBVTlVTRURfVkFSSUFC
TEUobV9wYyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMTsKLSAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRl
Y29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0UmVnKTsKKyAgICBtX2ppdC0+bW92ZShKSVQ6OlRy
dXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBtX2pp
dC0+ZW1pdE5ha2VkTmVhckNhbGwodm0uaml0U3R1YnMtPmN0aVNsb3dQYXRoRnVuY3Rpb25TdHVi
KHZtLCBtX3Nsb3dQYXRoRnVuY3Rpb24pLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiB9CiAK
QEAgLTU0LDQ2ICs1NCw0OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayhWTSYgdm0sIFNsbwogewogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0g
SklUOjphcmd1bWVudEdQUjE7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJl
Z2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVz
cygpOwotICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIENDYWxs
SGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIHN0YXRpY19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0gYnl0ZWNvZGVPZmZzZXRS
ZWcpOwotICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAg
Ly8gT24gV2luZG93cywgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIGFyZSByZXR1
ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAgICAvLyB0aGUgZmlyc3Qg
YXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdo
dC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTbG93UGF0
aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQgY2FsbCBzaXRlIGJlbG93
Iik7CisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVBcmdHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQ
UjE7CisgICAgY29uc3RleHByIEdQUlJlZyBwY0FyZ0dQUiA9IEdQUkluZm86OmFyZ3VtZW50R1BS
MjsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIGNh
bGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZWxzZQorICAg
IGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7
CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FsbEZyYW1lQXJnR1BSLCBwY0FyZ0dQUiwg
Ynl0ZWNvZGVPZmZzZXRHUFIpKTsKKyNlbmRpZgorICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBjYWxsRnJhbWVBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBwY0FyZ0dQUik7Cisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBjQXJnR1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgcGNBcmdHUFIpOworICAgIGppdC5h
ZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIHBjQXJnR1BSKTsKIAogICAgIENDYWxsSGVscGVyczo6
Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNr
KHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBv
aW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOyAvLyBjYWxsRnJh
bWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsKIAotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNo
ZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBh
dGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0
aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRj
aEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJT
bG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRleCA4OTlhMjkwMGZlZGUzN2RkMGVhNWU2
ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgyNjUyYTkzNmFlMDk2NGIwNDQzZjYzNDEy
YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKQEAgLTM1LDUw
ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xvd1BhdGhDYWxsIHsKIHB1
YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0IEluc3RydWN0aW9uKiBw
YywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAgIEpJVFNsb3dQYXRoQ2Fs
bChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogICAgICAgICA6
IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRoRnVuY3Rpb24oc2xvd1BhdGhGdW5jdGlv
bikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25Q
dHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYsIFNsb3dQYXRoRnVuY3Rpb24pOwogCi0j
ZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLSAgICBKSVQ6OkNhbGwgY2Fs
bCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1lKCk7Ci0jaWYgQ1BV
KFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNh
bGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1faml0LT5tb3Zl
KEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjIpOwotI2Vsc2UKLSAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQ
UjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6
YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IG1faml0LT5h
cHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0KLSNpZiBDUFUoWDg2XzY0KSAmJiBPUyhX
SU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDApOyAvLyB2UEMKLSAgICAgICAg
bV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZyYW1lIHJlZ2lzdGVyCi0gICAgICAgIHN0
YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIp
OwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIHJl
dHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQog
cHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNsb3dQYXRoRnVuY3Rpb24gbV9zbG93UGF0
aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX3BjOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5ZTFjYTIzNWU0ZGJkZWEzMDkzM2IwLi5hOTllNDQy
MDFkODU3ZDlkMDgyODIwNDQzOWI2ODA3YjFiYjcwZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00OSw5ICs0OSw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZN
JiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9u
UHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCArNTcsNiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiaGFu
ZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7
CkBAIC03NywyMCArNzMsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmEKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRp
b25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0KIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lm
IENQVShYODZfNjQpCi0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigy
ICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsKLSNlbGlmIENQVShB
Uk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWly
KENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1Jl
Z2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyAgICBq
aXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKyNpZiBDUFUoWDg2XzY0KSAvLyBPbiB0aGUgeDg2
LCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSBsZWF2ZXMgdGhlIHJldHVybiBQQyBvbiB0aGUgc3RhY2su
IERyb3AgaXQuCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXpl
b2YoQ1BVUmVnaXN0ZXIpKSwgWDg2UmVnaXN0ZXJzOjplc3ApOwogI2VuZGlmCiAKICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAoKTsKQEAgLTEwMSwzMiArOTAs
MjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0YWNr
UHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFu
ZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigp
KSkgewotICAgICAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVu
Y3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgot
I2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAg
IH0KKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVuY3Rpb24u
IFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgorICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBqaXQuZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVFeGNl
cHRpb24gPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKSB7Ci0jaWYgQ1BVKFg4Nl82
NCkKLSAgICAgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIH0KKyAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSkKKyAgICAgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgYXV0byBoYW5kbGVyR2VuZXJh
dG9yID0gT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpID8gcG9wVGh1bmtTdGFja1ByZXNlcnZl
c0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvciA6IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcjsK
QEAgLTE0Myw4ICsxMjAsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJDaGVja0V4Y2VwdGlvbiIpOwogfQogCi0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHRlbXBsYXRlPHR5cGVuYW1lIFRh
Z1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlkYXRpb24oQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBlIHRhZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4IGE5ZmVlZWE5MjRhZTAwNzhkODQ1MWUx
NzJjNGM0OTQ1ZGYxZDVlZTEuLjEwNTQ5MTA0ZWY2MjBlNzgyOWYwYjRhYmNhYmFlZGM0OTczNWEy
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAt
MzgsMTMgKzM4LDggQEAgZW51bSBjbGFzcyBDYWxsTW9kZTsKIHRlbXBsYXRlPFB0clRhZz4gY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xhc3MgVk07CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mKTsKLQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9u
RnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSYpOwpAQCAtODIsOSArNzcsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5lcmF0b3IoVk0mKTsK
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2Fs
bEdlbmVyYXRvcihWTSYpOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
Jik7Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDY2NGIwZTI5ZjZiYTNjZTQ4MjZlNTEwOWQ3M2Y4
NmNjOWJjNmFkZmQuLjVlYzc0MDliYzlhZTg2YzM0MjhlNjJlYzIwYTQ1MGFmMmU3OGI0YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODM5LDE0ICs4MzksNiBAQAogI2RlZmluZSBFTkFC
TEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgogCi0jaWYgQ1BVKEFSTTY0KSB8
fCAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKQotLyogVGhlIGltcGxlbWVudGF0aW9uIG9m
IHRoZXNlIHRodW5rcyBjYW4gdXNlIHVwIHRvIDYgYXJndW1lbnQgcmVnaXN0ZXJzLCBhbmQKLSAg
IG1ha2UgdXNlIG9mIEFSTTY0IGxpa2UgZmVhdHVyZXMuIEZvciBub3csIHdlJ2xsIG9ubHkgc3Vw
cG9ydCB0aGVtIG9uIHBsYXRmb3JtcwotICAgdGhhdCBoYXZlIDYgb3IgbW9yZSBhcmd1bWVudCBy
ZWdpc3RlcnMgdG8gdXNlLgotKi8KLSNkZWZpbmUgRU5BQkxFX0VYVFJBX0NUSV9USFVOS1MgMQot
I2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfQklORElOR19JTlRFR1JJVFkpICYmICFPUyhX
SU5ET1dTKQogI2RlZmluZSBFTkFCTEVfQklORElOR19JTlRFR1JJVFkgMQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448839</attachid>
            <date>2022-01-11 04:35:26 -0800</date>
            <delta_ts>2022-01-18 07:52:46 -0800</delta_ts>
            <desc>fix PACs in thunks</desc>
            <filename>bug-233822-20220111123524.patch</filename>
            <type>text/plain</type>
            <size>281729</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTJmZjgzYmJiZDYzYzc1NDg3MDg5MmEwNjhhZGZkYjViOWQ3YmJjLi4wODdmOWVjMDA5OTc4YzU3
YmY3MDVhYjVkOWMyYjQ1MTdlYmMxNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMDYgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0wNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbW92ZSBtX2NhbGxlZVNh
dmVSZWdpc3RlcnMgZnJvbSBDb2RlQmxvY2s6OkpJVERhdGEgYW5kIHJlbmFtZSBpdCB0byBCYXNl
bGluZUpJVERhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYWNmZTVkYTdiZWM3ZWE2ZjY1MmI2MDMzZWUxZDIzODk5ZTc2M2Y0
YS4uNmRiNmZjOWYzNWE4YTVkMzMxYjU2ZmMwZGJlN2I3MTU1ZGVhOWY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wMS0wNiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1F
bmFibGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJBX0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3
YXlzIG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIwMjItMDEtMDUgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIHZlcnNpb24gbnVtYmVyIGZvciBI
QVZFX1JTQV9QU1NfT0lECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjk4
NzEyMTc1YzlhN2Q5ZTQ0MzdmZjM1NzI5YTg0YzQxZWU4YzY0Zi4uMjUxYjllNDU5OTZiM2YyMTA3
Mjc5NTc2YTU0ZTE5MjhmMWY0MjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtODQzLDYgKzg0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0L0Fzc2VtYmx5SGVs
cGVyc1Nwb29sZXJzLmgKICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAgICBqaXQvQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCiAgICAgaml0
L0NDYWxsSGVscGVycy5oCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjZjA3M2VjZDA1YzQ3OTk0MDViNDYxZmY5ZmU1YWNlNDE4
NDQ3YjE1Li44YzM0NDcwMjllNzE2ZjE0Y2IzZDA4ODU2NzhjZmYwMGRkZWJjZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MSw2ICsxMTkxLDcgQEAKIAkJNzIxMzFCRkEy
NjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBs
YW5TdGFnZS5oICovOyB9OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xp
c3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi87IH07
CiAJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5OEY1MjY1REJDREIw
MDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAwRjcyODJEQkNEQjEw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRSZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjZCOTFCMDI2NTgxNjUzMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUE4
MjY1ODE2NTIwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovOyB9OwogCQk3MjZCOTFC
MzI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIg
LyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFGMjY1
ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi87IH07CkBAIC00MTgwLDYgKzQxODEsNyBAQAog
CQk3MjEzMUJGQjI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklU
UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNjI2NURCQ0RCMDA1
Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhc2VsaW5lSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFJlZ2lzdGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyog
SklUV29ya2xpc3RUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklU
V29ya2xpc3RUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQUEy
NjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
NkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDMxLDYgKzY0MzMsNyBAQAogCQkJCTUyREQwMDA2MjZFMDM5
QjMwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCAqLywKIAkJCQk3MjM5OThGNjI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmNwcCAqLywKIAkJCQk3MjM5OThGNTI2NURCQ0RC
MDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8sCisJCQkJNzI0MDA5RjUyNzhEQkNEQjAw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4NEJB
RjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5jcHAgKi8sCiAJCQkJMEY2NEIyNzAxQTc4NEJBRjAw
NkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oICovLAogCQkJCTY1QjgzOTJEMUJBQ0E5RDMwMDQ0RTgy
NCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8sCkBAIC05NzYzLDYgKzk3NjYsNyBAQAogCQkJCTBG
MkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyogQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4M0FDMEU2REI4
QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTM1RTg5RkQyNUM1MEY4NzAwNzFFRTFFIC8qIEJpZ0ludDY0QXJyYXkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IGJmNmZiZTMwNWIzZmQ0ZDU2YWFhODUyODljZTMxMzE1YTg3MzViZTUuLmYx
ZmY2Mzk0YzlmNGVlZDUxYzEwMGM1ZTRjMjdlZjY4ZjBkYjViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0
LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOwor
ICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0x
MDA3LDEyICsxMDE3LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVz
dCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0
LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmln
aHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwg
ZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCmluZGV4IGNkMTI5ZjZkOWE4N2UwNjlhZWNmYTQyNGFmZTcwZjBmMTE1
Y2QxNDUuLmI1OTMwNzMzZGMwMzM4ZTZlZTM3ZmMzNGIzMjk3NjExYTk0MWQyY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bUdQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JF
R0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1GUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1Jf
RUFDSF9GUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogI3VuZGVm
IERVTU1ZX1JFR0lTVEVSX1ZBTFVFCi0gICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7
IHJldHVybiBhZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdp
c3RlcklEIHNjcmF0Y2hSZWdpc3RlcigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0K
IAogICAgIE1hY3JvQXNzZW1ibGVyQVJNdjcoKQogICAgICAgICA6IG1fbWFrZUp1bXBQYXRjaGFi
bGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggMDQ1ZGVmZWRiMTU0ZmQwODlhMmI2OGRjZDYzMTgx
MTk3MTAwMWUyMi4uYjJlOTExYWExMzY2M2EyNTA5ODQwYTA1Njg4NDEyZjI5MjhlZjQ2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaApAQCAtODA0LDcgKzgwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnFfaXIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgIH0K
LSAgICAKKworICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBhLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGEsIGRlc3QpOworICAgICAgICBz
dWI2NChpbW0sIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTY0IGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXgg
MDBhNTU0OTdmZDYzYWRlYTljZjVmMWJmMGJjNmIxYmMxNWE4NDBkMi4uNzdlNGE2ZTllZjNmOGFj
NzJhNWRkMGM3ODI4YTBiZGNlYzM1ZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuaCIKICNpbmNsdWRlICJDYWxsTW9kZS5oIgogI2luY2x1ZGUgIkNvZGVMb2Nh
dGlvbi5oIgpAQCAtNDcsMTQgKzQ4LDYgQEAgZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogc3Ry
dWN0IENhbGxGcmFtZVNodWZmbGVEYXRhOwogc3RydWN0IFVubGlua2VkQ2FsbExpbmtJbmZvOwog
Ci0jaWYgRU5BQkxFKEpJVCkKLW5hbWVzcGFjZSBCYXNlbGluZUNhbGxSZWdpc3RlcnMgewotY29u
c3RleHByIEpTVmFsdWVSZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Ci1jb25z
dGV4cHIgR1BSUmVnIGNhbGxlZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BS
UmVnIGNhbGxMaW5rSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci19Ci0jZW5kaWYKLQogY2xh
c3MgQ2FsbExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+IHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpA
QCAtNDYyLDkgKzQ1NSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbGVlR1BSOyB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2Fs
bExpbmtJbmZvR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0lu
Zm9HUFI7IH0KLSAgICB2b2lkIHNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExpbmtJbmZv
R1BSKSB7IFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mb0dQUiA9PSBCYXNlbGluZUNhbGxSZWdp
c3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBj
YWxsZWVHUFIoKSB7IHJldHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlR1BS
OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgeyByZXR1
cm4gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUjsgfQorICAgIHZv
aWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgUkVMRUFTRV9B
U1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
TGlua0luZm9HUFIpOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDRiOWE0OTU5ZmQ4ZmYz
NTFkMjlkYWZjYTA5NzI0NTNiN2JjMTY3NjYuLjk2YmUzODM3YTFhZjllNzI1ZDI1MjRmNGVmZTY4
ZDYxYWFjYzIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMjMzLDIzICsyMzMsMTIgQEAgdm9pZCBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIoKQogICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9PU1JFeGl0RXhjZXB0aW9uSGFuZGxlciwgb3Jp
Z2luYWxIYW5kbGVyLm5hdGl2ZUNvZGUpOwogICAgICAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQtPmp1bXAoKTsKICAgICAgICAgVk0qIHZtID0g
Jm1fdm07CiAgICAgICAgIGppdC0+YWRkTGlua1Rhc2soCiAgICAgICAgICAgICBbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVt
cFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmdldENUSVN0dWIoaGFu
ZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAg
ICAgICAgIH0pOwotI2Vsc2UKLSAgICAgICAgaml0LT5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKCZtX3ZtKSk7Ci0gICAgICAgIGppdC0+cHJlcGFyZUNhbGxPcGVyYXRpb24obV92bSk7Ci0g
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBsb29rdXBFeGNlcHRpb25IYW5kbGVyQ2FsbCA9IGpp
dC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBqaXQtPmFkZExpbmtUYXNrKAotICAg
ICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICBqaXQtPmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIobV92bSk7Ci0j
ZW5kaWYKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGQyMTA0MTc0MmJkNDk1YjY2ZWNhNDUwOGQ3
M2I4ZDM4Y2FjZmYxNWMuLmY0MWVmZTYyNzUzODg3NTRiYzZlYWM4YWUzYzRmMzg3YmJmNjRmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVy
cy5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5o
IgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgU3RydWN0
dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2Rl
QmxvY2sqLCBVbmxpCiAgICAgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKTsKICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRC
eUlkICYmIHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAg
ICAgICAgLy8gRm9yIGl0ZXJhdG9yX25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJkb250Q2xv
YmJlckpTUiIgcmVnaXN0ZXIgZWl0aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNlZFJlZ2lz
dGVycy5zZXQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xv
YmJlckpTUik7CiAgICAgfQogCiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjYsNzgg
KzUyNiw3OCBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgIHN3aXRjaCAoYWNjZXNzVHlw
ZSkgewogICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CiAgICAgICAgIGhhc0NvbnN0
YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9w
ZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1IucGF5
bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1Yklu
Zm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxp
bmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0
eVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigp
OwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3Vs
dEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7Cisg
ICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0
UGF0aDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVy
ID0gdHJ1ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9
IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IucGF5
bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRh
Z0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OmJhc2VKU1IudGFnR1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlk
R1BSUmVnOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlWYWw6CiAgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVy
ID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1IudGFn
R1BSKCk7CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlm
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAg
ICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7CiAgICAgICAgIHByb3RvdHlwZUlzS25v
d25PYmplY3QgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJl
Z2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
cmVncy5wcm90b3R5cGVHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNS
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbnN0YW5jZW9mOjpwcm90b0pTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1IudGFnR1BSKCk7CiAgICAgICAg
IHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9
IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJvdG9KU1IudGFnR1BSKCk7CisgICAgICAg
IHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJv
dG9KU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NU
eXBlOjpJbkJ5VmFsOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWU6IAogICAg
IGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kOiAKICAgICAgICAgaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0g
QmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdH
UFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVJ
bkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAg
ICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9w
ZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50
aWZpZXIgPSB0cnVlOwogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5SWRS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlJZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnN0dWJJ
bmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IElu
dmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUluQnlJ
ZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFs
dWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IudGFnR1BS
KCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRC
eUlkOgpAQCAtNjA1LDY1ICs2MDUsNjUgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlh
bGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1Rh
Z0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUi50YWdHUFIoKTsK
KyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVz
dWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNz
VHlwZTo6R2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0
cnVlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdz
LnRoaXNHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhp
c1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnRoaXNHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6
OnJlc3VsdEpTUi50YWdHUFIoKTsKLSAgICAgICAgdi50aGlzVGFnR1BSID0gQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSLnRhZ0dQ
UigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
V2l0aFRoaXM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgdi50aGlzVGFnR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUi50YWdHUFIoKTsKICNl
bmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWQ6CiAgICAg
ICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9
IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFs
dWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBi
YXNlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwot
ICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1Iu
dGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OlB1dFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2
YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAgICAgICAgIGlmIChhY2Nlc3NUeXBlID09
IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsKQotICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVHUFIgPSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgICAgICAgICAgbV9hcnJh
eVByb2ZpbGVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdH
UFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAg
ICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi50
YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAg
IHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi50
YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlNl
dFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kOgog
ICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgdmFsdWVHUFIg
PSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLmJyYW5kR1BSID0g
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLmJyYW5kR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwor
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFu
ZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LmJy
YW5kVGFnR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnRhZ0dQ
UigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVC
cmFuZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5icmFuZFRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggZWIyMGNlNjQ1YWYwYmI1ODQ1NWY2ODAzZThkNDcyNGE3NGE3MWY5
NC4uNDlmY2FiOTQxMzkyMDA2NjgwYzViNGJmMTcwZTk1ZGEzOWVlMzEyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2LDYg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQoY29t
cGlsZWRTcGVjdWxhdGl2ZSwgY29tcGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2suZW1wdHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xs
YmFjay5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0
aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFy
Z3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsK
LSAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRpb25I
YW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHko
KSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlG
cmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBw
YXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
JnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSgpKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlv
bkhhbmRsZXIpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAg
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENvbXBp
bGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUgY29k
ZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjczLDEy
ICsyMzksMTAgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7CiAg
ICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlv
bkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVj
a3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25D
aGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gb3NyRXhpdFRodW5rID0gdm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOwogICAgIGF1dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1
bmtQdHJUYWc+KG9zckV4aXRUaHVuay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2Vu
ZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBjb21w
aWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAgICAv
LyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3ICs0
NDcsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3BlY3Vs
YXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7
CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdp
bigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NS
RXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5l
Y2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRl
eCA4OTQ3Y2JlOWEzYzUyMTc2YTJkNDUzNDc4ODI5NjJlOTVjMWUzOGY5Li5mNzZkYTIyMGEzOTg3
NjM3OTc4ZjZiZGIxZmUyMGY4YTk1NzVmOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCkBAIC0zMjMsNyArMzIzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGxpbmsoTGlua0J1ZmZlciYpOwogICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0aE9T
Uihjb25zdCBPU1JFeGl0JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29tcGls
ZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2b2lk
IGRpc2Fzc2VtYmxlKExpbmtCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKaW5kZXggM2I0Y2ExZDE1NzVkNTBiYmZlMWM0YjdhYjgyZjE5ZWFjOTA2MmI3
Zi4uYTkzYTZiYTQxNjE1ZTA0YTgzN2M5YjljMTM0NzllODRmNTExNzlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2b2lk
IGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0
KQogCiAgICAgLy8gRW1pdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4Y2Vw
dGlvbkhhbmRsZXIgPSBqaXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0qIHZt
UHRyID0gJnZtOwogICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwgQ29k
ZUxvY2F0aW9uTGFiZWwodm1QdHItPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAgIGpp
dC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRy
eUZyYW1lKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmdm0p
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwotICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRkTGlu
a1Rhc2soCi0gICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlu
a0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OkZUTCwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQwOWEy
YTViNTM1ZDBkOS4uMjhiZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2b2lk
IGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBjYWxsQXJpdHlDaGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRvRXhj
ZXB0aW9uSGFuZGxlciA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotI2Vs
c2UKLSAgICAgICAgICAgIGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxw
ZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVz
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJGcm9tQ2FsbGVyRnJhbWUgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICAg
ICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNlcHRp
b24ubGluaygmaml0KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAg
ICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2
NCh2bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDExICsx
MDEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hl
Y2ssIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9y
KCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hl
Y2spKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtCdWZm
ZXItPmxpbmsoanVtcFRvRXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0
Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZmZXIt
PmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21D
YWxsZXJGcmFtZSkpOwotI2VuZGlmCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxB
cml0eUZpeHVwLCBGdW5jdGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihhcml0
eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
bWFpblBhdGhKdW1wcywgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyM2UwODcxOGRi
ZjgyMDQyMzVlMzk5YWE2NWNiMGQ5OTA4Mjk3MWUwLi40N2FiM2U4MTUyYTQzODI4OTIwN2JjNGU5
ZDgxODI4ZGZjM2EzODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKQEAgLTE5MTksNDkgKzE5MTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
c3RvcmVXYXNtQ29udGV4dEluc3RhbmNlTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2Vu
ZGlmCiAKLSAgICAvLyBDaGVja3MgdGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBHUFJSZWdzIGFuZCBK
U1ZhbHVlUmVncyBkbyBub3Qgb3ZlcmxhcC4gVXNlIHRoaXMgaW4gc3RhdGljCi0gICAgLy8gYXNz
ZXJ0aW9ucyB0byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUg
cG9pbnQgZG8gbm90IG1hcCB0byB0aGUgc2FtZQotICAgIC8vIGFyY2hpdGVjdHVyYWwgcmVnaXN0
ZXIuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIG5vT3ZlcmxhcChBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwoMCwg
YXJncy4uLik7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBCYXNlIGNhc2UKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1w
bCh1aW50NjRfdCkgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgLy8gR1BSUmVnIGNhc2UKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9P
dmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBSZWdpc3RlcklEIGdwciwgQXJncy4uLiBhcmdzKQot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGdwcik7
Ci0gICAgICAgIGlmICh1c2VkICYgbWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0K
LQotICAgIC8vIEpTVmFsdWVSZWdzIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2Vk
LCBKU1ZhbHVlUmVncyBqc3IsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG1hc2sgPSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IucGF5bG9hZEdQUigpKTsKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBtYXNrIHw9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci50
YWdHUFIoKSk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywg
YXJncy4uLik7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub092ZXJs
YXBJbXBsUmVnTWFzayhSZWdpc3RlcklEIGdwcikKLSAgICB7Ci0gICAgICAgIGlmIChncHIgPT0g
SW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIHJldHVybiAwVUxMOwotICAgICAgICB1bnNpZ25l
ZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3ByKTsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYml0IDwgc2l6ZW9mKHVpbnQ2NF90KSAqIENIQVJfQklUKTsKLSAgICAgICAgcmV0dXJuIDFV
TEwgPDwgYml0OwotICAgIH0KLQogcHJvdGVjdGVkOgogICAgIHZvaWQgY29weUNhbGxlZVNhdmVz
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZl
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3Rl
cnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xY2M0Njk4NTcwOTM2YzUyNzUyNzAyZjRkM2ZiOWU5ZTVlMzUwNGIz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJ
VFJlZ2lzdGVycy5oCkBAIC0wLDAgKzEsNDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCYXNlbGluZUpJVFJlZ2lzdGVycyB7CisKK25h
bWVzcGFjZSBDYWxsIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OworfQorCituYW1lc3BhY2UgQ2hlY2tUcmFwcyB7CisgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsKK30KKwor
bmFtZXNwYWNlIEVudGVyIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQ
UiB7IEdQUkluZm86OnJlZ1QxIH07Cit9CisKK25hbWVzcGFjZSBJbnN0YW5jZW9mIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUklu
Zm86OmFyZ3VtZW50R1BSMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7
IEdQUkluZm86OmFyZ3VtZW50R1BSMyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDJHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpqc1JlZ1Qx
MCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7CisjaWYgQ1BVKE1JUFMp
CisgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyCisj
ZWxzZQorICAgICAgICBKU1JJbmZvOjpqc1JlZ1QzMgorI2VuZGlmCisgICAgfTsKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBKU1JJbmZvOjpqc1JlZ1Q1NCB9OworICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAodmFsdWVKU1IsIHByb3RvSlNSLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSKSk7Cit9CisKK25hbWVzcGFjZSBKRmFsc2UgeworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisK
K25hbWVzcGFjZSBKVHJ1ZSB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
SlNSSW5mbzo6anNSZWdUMzIgfTsKK30KKworbmFtZXNwYWNlIFRocm93IHsKKyAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpOworCisgICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRocm93blZhbHVlSlNSIHsg
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKSB9OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpLCAiUmVxdWlyZWQgZm9y
IGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKK30KKworbmFtZXNwYWNlIFJlc29sdmVTY29wZSB7
CisgICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9m
ZnNldEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KKworbmFtZXNw
YWNlIEdldEZyb21TY29wZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiB7IEdQ
UkluZm86OnJlZ1Q0IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiB7IEdQUkluZm86
OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1QzIH07CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNj
b3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1
bmsiKTsKK30KKworbmFtZXNwYWNlIFB1dFRvU2NvcGUgeworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKK30KKworbmFtZXNw
YWNlIEdldEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xv
dyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVy
cworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisjZW5k
aWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIsIGRvbnRDbG9iYmVySlNSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAg
ICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xv
d1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUklu
Zm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZv
OjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VK
U1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwg
IlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1l
c3BhY2UgR2V0QnlJZFdpdGhUaGlzIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZh
c3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsg
SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEpTUkluZm86
OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycwor
ICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChi
YXNlSlNSLCB0aGlzSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3Ig
RGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAg
bmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1QzIH07Cisj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BS
LCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xv
dyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBHZXRCeVZhbCB7CisgICAgLy8g
UmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BS
SW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKwor
ICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKwor
ICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVn
VDQgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDcg
fTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOwor
ICAgIH0KK30KKworI2lmIFVTRShKU1ZBTFVFNjQpCituYW1lc3BhY2UgRW51bWVyYXRvckdldEJ5
VmFsIHsKKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVz
dWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgLy8gV2UgcmVseSBvbiB0aGlzIHdo
ZW4gbGlua2luZyBhIENvZGVCbG9jayBhbmQgaW5pdGlhbGl6aW5nIHJlZ2lzdGVycyBmb3IgYSBH
ZXRCeVZhbCBTdHViSW5mby4KKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0QnlWYWw6
OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlWYWw6OnBy
b3BlcnR5SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUiA9PSBHZXRCeVZhbDo6cmVz
dWx0SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEdldEJ5VmFsOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFIpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDEgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMyB7IEdQUkluZm86OnJlZ1Q1IH07Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFB1dEJ5SWQg
eworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUklu
Zm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAv
LyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5n
IHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKKyNlbmRpZgorICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BS
LCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAg
fQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQ
YXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
eyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQ
UiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwg
cHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93
IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIFB1dEJ5VmFsIHsKKyAgICAvLyBS
ZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAg
fTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdU
MSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Qy
IH07CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
KyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BS
SW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZv
OjpyZWdUNSB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgRmFzdFBhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
YmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQUiks
ICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkg
cmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgICAgICAgICAgICAg
IC8vIFdlIGFyZSBhIGJpdCBzaG9ydCBvbiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwgYnV0IHdl
IGNhbiBqdXN0IGFib3V0IGdldCBhd2F5IHdpdGggdGhpcworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hSZWdpc3RlcigpCisjZWxzZSAvLyBPdGhlciBKU1ZBTFVF
MzJfNjQKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUOAorI2VuZGlmCisgICAgICAgIH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmpl
Y3RHUFIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZv
R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVH
UFIsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8g
c2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBJbkJ5SWQgeworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR2V0QnlJZDo6YmFzZUpTUiB9OworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeUlkOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHZXRCeUlk
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUiB9OworfQorCituYW1lc3BhY2UgSW5CeVZhbCB7CisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBH
UFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUNyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1Q2IH07CisjZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0QnlWYWw6
OmJhc2VKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlWYWw6OnBy
b3BlcnR5SlNSKTsKK30KKworbmFtZXNwYWNlIERlbEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1
c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpT
UkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lz
dGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVx
dWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lz
dGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6
cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZv
R1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJ
IHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJSZXF1
aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNl
IERlbEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cg
cGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsK
KyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNl
IEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpT
UkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChi
YXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQg
Zm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycwor
ICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9
OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAi
UmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVz
cGFjZSBQcml2YXRlQnJhbmQgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R2V0QnlWYWw6OmJhc2VKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVu
aworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdldEJ5VmFsOjpwcm9wZXJ0
eUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisKKyAgICBuYW1l
c3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
YnJhbmRKU1IsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisK
KyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUiB9OyAv
LyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8v
IFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5m
b0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJzCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmNwcAppbmRleCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0MDk4Mjg5MzVl
Li5iMWRkZTkwZjkxMTc1MzRkNjhkMDQzY2QwYzJiYmRiYjc1MjhhZTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJNYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC05NCw2ICs5NSw0NyBAQCB2b2lkIENDYWxsSGVscGVyczo6ZW1p
dEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVy
ZQogICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2NyaXB0aW9uKTsK
IH0KIAorc3RhdGljX2Fzc2VydCghKChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCArIDIg
KiBzaXplb2YoQ1BVUmVnaXN0ZXIpKSAlIDE2KSwgIlN0YWNrIG11c3QgYmUgYWxpZ25lZCBhZnRl
ciBDVEkgdGh1bmsgZW50cnkiKTsKKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1By
b2xvZ3VlKGJvb2wgd2lsbFRhaWxDYWxsKQoreworICAgIC8vIElmIHRoZSB0aHVuayByZXR1cm5z
LCB3ZSBuZWVkIHRvIHRhZyB0aGUgcmV0dXJuIGFkZHJlc3MuCisgICAgLy8gSWYgaXQgdGFpbC1j
YWxscyByYXRoZXIgdGhhbiByZXR1cm4sIHdlIGRvIG5vdC4KKyAgICBpZiAoIXdpbGxUYWlsQ2Fs
bCkKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcygpOworCisgICAgLy8gU3Rhc2ggZnJhbWUgcG9p
bnRlciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQorICAgIHB1c2goWDg2UmVn
aXN0ZXJzOjplYnApOyAvLyByZXR1cm4gYWRkcmVzcyBwdXNoZWQgYnkgdGhlIGNhbGwgaW5zdHJ1
Y3Rpb24KKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAg
ICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsK
KyNlbHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgor
ICAgIC8vIE1ha2UgZW5vdWdoIHNwYWNlIG9uIHRoZSBzdGFjayB0byBwYXNzIGFyZ3VtZW50cyBp
biBhIGNhbGwKKyAgICBpZiBjb25zdGV4cHIgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KQorICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1p
dENUSVRodW5rRXBpbG9ndWUoKQoreworICAgIC8vIFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3Rl
eHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0
ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisj
aWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOyAvLyBSZXR1cm4gYWRk
cmVzcyBsZWZ0IG9uIHN0YWNrCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQor
ICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBD
UFUoTUlQUykKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNz
UmVnaXN0ZXIpOworI2Vsc2UKKyMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3Jt
IgorI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGFmYzVkY2M4
OTllNzU2MzM5YTgxMTYzNGUyM2MyMTdiZGExY2NmNjQuLmM2NDRlNGVhZmJhNzlhZDM2Y2M1OGJl
MzE2NmNhYTFhMTZhYWQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaApAQCAtODUzLDE0NSArODUzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1p
dEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVy
ZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKLXBy
aXZhdGU6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFy
Z051bT4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJh
aXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplb2YodHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxBcmdOdW0+KTsKLSAgICB9Ci0KLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3Qs
IEFyZ3MuLi4gcmVzdCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9w
ZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBo
YW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgZmlyc3QgfTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBk
dWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0sIEluZGV4IC0gMT4ocmVzdC4uLik7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdz
PgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3Qs
IEdQUlJlZyBzZWNvbmQsIEdQUlJlZyB0aGlyZCwgQXJncy4uLiByZXN0KQotICAgIHsKLSAgICAg
ICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1
cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMi
KTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIGNvbnN0
ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRml0cyBp
biBzaW5nbGUgR1BSCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90
aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICBVTlVTRURf
UEFSQU0odGhpcmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNv
bmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50
R1BSMykgewotICAgICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMg
bmVlZHMgdG8gc3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVu
dEdQUjEKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyB0aGlyZCwgc2Vjb25k
IH07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVp
dGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRv
IHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkg
ewotICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgotICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4
cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0s
IEluZGV4IC0gMT4oc2Vjb25kLCB0aGlyZCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAg
ICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8gc3RhcnQg
d2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEsIGJ1dCByZXVz
ZSBpdCBsYXRlcgotICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUs
IEFyZ051bSwgSW5kZXggLSAxPihmaXJzdCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lzdGVyLCBv
ciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywgc28gaXQgZG9lcyBu
b3QgbWF0dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtLCBJbmRleCAtIDE+KHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQ
UlJlZyBzZWNvbmQpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJl
bnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cg
dG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJz
dCcgYW5kICdzZWNvbmQnIGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBw
dXNoZWQgb24gdGhlIHN0YWNrIGFueXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkg
ewotICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAg
ICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcg
ZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBj
b25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBB
cmdOdW0sIEluZGV4IC0gMT4oc2Vjb25kKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJl
Z2lzdGVycyIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNS
KEdQUlJlZyBmaXJzdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3Vy
cmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhv
dyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2Zp
cnN0JyBpcyBuZXZlciBhbiBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQgb24g
dGhlIHN0YWNrIGFueXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcg
PD0gNCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3Qp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9X
SVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKLSAgICB9Ci0jZW5kaWYKLQotcHVibGlj
OgotICAgIC8vIFNlZSBwcmVmZXJyZWRBcmd1bWVudEdQUiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhp
cyBmdW5jdGlvbi4gVGhpcyB2ZXJzaW9uIHJldHVybnMgYSBKU1ZhbHVlUmVncwotICAgIC8vIGlu
c3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9u
IEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCi0gICAgLy8gcmVxdWlyZWQgdG8gaG9sZCBh
IDY0LWJpdCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50LCBzbyB1c2UgdGhpcyBpbiBwYXJ0aWN1bGFy
IHdoZW4gcGFzc2luZyBhCi0gICAgLy8gSlNWYWx1ZS9FbmNvZGVkSlNWYWx1ZSBiZSBjb21wYXRp
YmxlIHdpdGggYm90aCBKU1ZBTFVFNjQgYW4gSlNWQUxVRTMyXzY0IHBsYXRmb3JtcywgYW5kIHVz
ZQotICAgIC8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJz
LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxP
cGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KLSAgICBwcmVmZXJy
ZWRBcmd1bWVudEpTUigpCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0jaWYgIU9TKFdJTkRP
V1MpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAg
ICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBH
UFJJbmZvOjphcmd1bWVudEdQUjQsIEdQUkluZm86OmFyZ3VtZW50R1BSNSk7Ci0jZWxzZQotICAg
ICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgICBHUFJJbmZvOjpub25BcmdHUFIxKTsKLSNlbmRpZgotI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSNpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLy8gVGhlIGxhc3QgcmVn
aXN0ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBwdXNoZWQgb250byB0aGUgc3RhY2sgZm9yIGNhbGxz
LCBzbyB3ZSBjYW4gdXNlCi0gICAgICAgIC8vIHRoZSBsaW5rIHJlZ2lzdGVyIGFzIGEgdGVtcG9y
YXJ5LgotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAg
ICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywg
R1BSSW5mbzo6cmVnVDcsICAgICAgICBHUFJJbmZvOjpyZWdUNiwKLSAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBBUk1SZWdpc3RlcnM6Omxy
KTsKLSNlbGlmIENQVShNSVBTKQotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVnVDIsICAgICAgICBHUFJJbmZvOjpyZWdUMywKLSAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBH
UFJJbmZvOjpyZWdUNik7Ci0jZW5kaWYKLSNlbmRpZgotICAgIH0KLQotICAgIC8vIENvbXB1dGVz
IChzdGF0aWNhbGx5LCBhdCBjb21waWxhdGlvbiB0aW1lKSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVn
aXN0ZXIgYW4gYXJndW1lbnQgc2hvdWxkIGJlCi0gICAgLy8gbG9hZGVkIGludG8gZm9yIGEgZnVu
Y3Rpb24gY2FsbC4gVGhpcyB5aWVsZHMgdGhlIEFCSSBzcGVjaWZpYyBhcmd1bWVudCByZWdpc3Rl
cnMgZm9yIHRoZQotICAgIC8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVu
IHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKLSAgICAvLyBh
cmd1bWVudHMuIFRoZSBpZGVhIGlzIHRoYXQgJ3NldHVwQXJndW1lbnRzJyB3aWxsIGhhdmUgdG8g
ZG8gdGhlIG1pbmltYWwgYW1vdW50IG9mIHdvcmsgd2hlbgotICAgIC8vIHVzaW5nIHRoZXNlIHJl
Z2lzdGVycyB0byBob2xkIHRoZSBhcmd1bWVudHMsIHNvIGlmIHlvdSBhcmUgbG9hZGluZyBtb3N0
IGFyZ3VtZW50cyBmcm9tIG1lbW9yeQotICAgIC8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0
ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+Ci0gICAgcHJlZmVycmVkQXJndW1lbnRHUFIo
KQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkgPD0gNCwgIkFyZ3VtZW50IGRvZXMgbm90
IGZpdCBpbiBHUFIiKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gcHJlZmVycmVkQXJndW1lbnRK
U1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpLnBheWxvYWRHUFIoKTsKLSAgICB9CisgICAgdm9p
ZCBlbWl0Q1RJVGh1bmtQcm9sb2d1ZShib29sIHdpbGxUYWlsQ2FsbCk7CisgICAgdm9pZCBlbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4IDgx
ODBkNmFiYTU3NDA0MDFhMmZjYWIyZDVhMWZkZDUzYzlhMjA2YTMuLjFjNzRmMWY5ODJmYzUwOTk2
ZDhlMWZlZGIwMWZlM2FiYmQ3YWQ4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRl
ICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJS
ZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgpAQCAtOTUsOSArOTYsOSBAQCBDYWxsRnJhbWVTaHVmZmxl
RGF0YSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENh
bGwoY29ucwogICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgfQogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIo
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0
SlMpOworICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0
SlMpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBW
YWx1ZVJlY292ZXJ5OjppblBhaXIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFn
R1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7Cisg
ICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIHNodWZmbGVEYXRh
LnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycygmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFz
ZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIHNodWZmbGVEYXRhLnNocmlua1RvRml0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0
ZmE3ZWIxOTJiMDY4NDNjMmNjYjkyMjYuLjgyYWY3MTY5MzA5ZDdjOTAwYWM4ZjBlNTVkNmI1Nzdh
YTYxMmI2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC0yNyw2ICsyNyw4
IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPGFycmF5PgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvblRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTc2
LDYgKzk3OCwyMTEgQEAgaW5saW5lIE5vUmVzdWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRU
YWcpIHsgcmV0dXJuIE5vUmVzdWx0OyB9CiAvLyBXZSB1c2UgdGhpcyBoYWNrIHRvIGdldCB0aGUg
R1BSSW5mbyBmcm9tIHRoZSBHUFJSZWcgdHlwZSBpbiB0ZW1wbGF0ZXMgYmVjYXVzZSBvdXIgY29k
ZSBpcyBiYWQgYW5kIHdlIHNob3VsZCBmZWVsIGJhZC4uCiBjb25zdGV4cHIgR1BSSW5mbyB0b0lu
Zm9Gcm9tUmVnKEdQUlJlZykgeyByZXR1cm4gR1BSSW5mbygpOyB9CiAKK2NsYXNzIE5vT3Zlcmxh
cEltcGwgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01h
c2soR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykK
KyAgICAgICAgICAgIHJldHVybiAwVUxMOworICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZ3ByKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgY291bnRP
ZkJpdHM8dWludDY0X3Q+KTsKKyAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OworICAgIH0KKwor
ICAgIC8vIEJhc2UgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7
IH0KKworICAgIC8vIEdQUlJlZyBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBH
UFJSZWcgZ3ByLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0g
bm9PdmVybGFwSW1wbFJlZ01hc2soZ3ByKTsKKyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2Vk
IHwgbWFzaywgYXJncy4uLik7CisgICAgfQorCisgICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5v
T3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNy
LnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbWFzayB8PSBu
b092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkpOworI2VuZGlmCisgICAgICAgIGlmICh1
c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5v
T3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOworICAgIH0KKworcHVibGljOgorICAg
IC8vIEVudHJ5IHBvaW50CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGVudHJ5KEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFw
SW1wbCgwLCBhcmdzLi4uKTsgfQorfTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qg
b2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0
YXRpYworLy8gYXNzZXJ0aW9ucyB0byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUg
YXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1hcCB0byB0aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJh
bCByZWdpc3Rlci4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorY29uc3RleHByIGJvb2wg
bm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50cnkoYXJn
cy4uLik7IH0KKworY2xhc3MgUHJlZmVycmVkQXJndW1lbnRJbXBsIHsKKyAgICBwcml2YXRlOgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCisgICAgewor
ICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8QXJnTnVtPik7CisgICAgfQorCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
QXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBz
dGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4u
IHJlc3QpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25U
eXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxh
cmdlIGFyZ3VtZW50cyIpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZpcnN0IH07CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNv
bnN0ZXhwcgorICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
LCBJbmRleCAtIDE+KHJlc3QuLi4pOworICAgICAgICB9CisgICAgfQorI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
QXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBz
dGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcg
c2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0
ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBB
cmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJn
IDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNp
emVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xl
IEdQUgorICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ug
d2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRo
aXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQ
UkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsK
KyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRv
IHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4g
ZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3Rh
Y2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAg
ICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAt
IDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJz
dCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50
R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAg
ICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZl
biByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0
ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0s
IEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBh
cmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRl
cgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwg
SW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJn
TnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0
aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vj
b25kKQorICAgIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0g
c2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRs
ZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAn
c2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9u
IHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBj
b25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICBV
TlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHBy
CisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJ
bmRleCAtIDE+KHNlY29uZCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMi
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcg
Zmlyc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcg
PSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFu
ZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMg
bmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFj
ayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNT
QUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7CisgICAgfQorI2VuZGlmCisKK3B1YmxpYzoKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CisgICAgcHJlZmVycmVkQXJndW1l
bnRKU1IoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2lmICFPUyhXSU5ET1dTKQorICAg
ICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFy
Z3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQ
UjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlz
IGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2Ug
Y2FuIHVzZQorICAgICAgICAvLyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KKyAg
ICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86
OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVnVDYsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdU
NCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
PigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCisgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6
cmVnVDYpOworI2VuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJn
TnVtKSwgR1BSUmVnPgorICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKKyAgICB7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUs
IEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7CisgICAgfQorfTsKKworLy8gQ29tcHV0ZXMgKHN0YXRp
Y2FsbHksIGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBh
biBhcmd1bWVudCBzaG91bGQgYmUKKy8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwu
IFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUK
Ky8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBv
cmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhlIGlkZWEg
aXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91
bnQgb2Ygd29yayB3aGVuCisvLyB1c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJn
dW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkK
Ky8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29k
ZSByZXF1aXJlZCBmb3IgYSBjYWxsLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CitwcmVmZXJyZWRB
cmd1bWVudEdQUigpCit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVy
cmVkQXJndW1lbnRHUFI8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCisvLyBTZWUgcHJl
ZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMg
dmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKKy8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNo
IG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFs
dWVSZWdzIGlzCisvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJn
dW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFs
dWUvRW5jb2RlZEpTVmFsdWUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFu
IEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3VtZW50R1BS
IHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4K
K3ByZWZlcnJlZEFyZ3VtZW50SlNSKCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJ
bXBsOjpwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNjRkZGVmMjNkNGIyZDYyNGZiNzM0NTlmMDU0N2Fm
NTc4ODk0NjlmLi41MTViNzk2YjhhYjM4OTdmZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJl
c2V0U1AoKQogI2RlZmluZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25h
bWU6IHsgXAogICAgICAgICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRl
eCkgeyBcCi0gICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRf
T1BDT0RFX0lOX01BSU4ob3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBK
SVQ6OnJlc2V0U1AoKQogCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwK
ICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVu
dEluc3RydWN0aW9uLCBpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xv
d0Nhc2VDYWxsKGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAg
ICAgfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBT
bG93UGF0aEZ1bmN0aW9uIHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKQEAgLTY1Nyw5ICs2NTcsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChnZXRfcHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRp
ZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoK
QEAgLTg2MCw5ICs4NTcsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxp
emluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9
IGVudHJ5TGFiZWw7IC8vIE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQo
bV9qbXBUYWJsZS5pc0VtcHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMoKTsKLSAgICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9k
aXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6
ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC05MTQsMTIgKzkwOSwxMCBAQCB2b2lkIEpJVDo6bGlu
aygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAg
ICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1Yiho
YW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAg
IGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xs
YmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldp
dGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
Ci0jZW5kaWYKIAogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAg
ICAgaWYgKHJlY29yZC50YXJnZXQpCkBAIC0xMDQwLDM1ICsxMDMzLDYgQEAgQ29tcGlsYXRpb25S
ZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25FZmZvcnQKICAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsK
IH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0
aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NX
aXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0g
ICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUg
aXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxP
cGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQo
Y2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlv
bkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7
Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
dm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJD
YWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLX0KLQogdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29t
cGlsZSgpCiB7CiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0
byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6
YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4
N2NlOWRjNTllMWQyZTY4Y2FmODc1YzE3NjVjYWM0OTUxMmI4MGQ0Li5jMjY1Y2NjMDQ3OTg3YmY5
Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3
Niw4ICsyNzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCk7Ci0KICAgICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAg
ICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9p
ZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVu
Y3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25U
eXBlKTsKKyAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25z
dCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiop
OwogCkBAIC02MTQsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93
UGF0aEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lk
IGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lk
IGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAg
dm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVT
bG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAg
ICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkg
KzY1NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7
CiAKICAgICBwcml2YXRlOgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAv
LyBUaHVuayBnZW5lcmF0b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlz
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Io
Vk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVy
YXRvcihWTSYpOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFu
ZGxlckdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3Ry
YXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdGh1bmtJc1VzZWRGb3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBl
ZmZpY2llbnQgdG8gZW1pdCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8v
IFJlc29sdmVkQ2xvc3VyZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRo
ZXNlIHR5cGVzIHdpdGggb3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJl
VmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5
R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9z
Y29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+
CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
bmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZN
Jik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwog
CiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKICAgICAgICAgewpAQCAtNzE4LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIHZvaWQgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4pOwotI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVu
ZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVh
bFJlZ2lzdGVyIHJlc3VsdCk7CkBAIC03NjMsNyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4g
dGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCiAgICAgICAgICAgICBpZiBj
b25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7
CisgICAgICAgICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVy
YXRpb24pOworICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIHJldHVy
biBjYWxsOwogICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNjk5
ZWFmY2I3MjllY2E0MTQwNzVlYzEwY2NjOTI2MjIwYmQ0NTQ3NS4uNDQ0MmE4ODliNTQyOGQ1YTVk
YmRiMGVmMDA5MDUyMDExNTQ5ODEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9t
b2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9pZCBK
SVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
bW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9t
b2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDExIEBA
IHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAot
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcG93KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IHNsb3dfcGF0aF9wb3cpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3
ICs5NzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBM
aXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVt
cHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXgg
ZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uYzY4ZTQ3ZWU5Yzg4YjE2
ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUg
IkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNo
ZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgSklUOjpjb21w
aWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUpCiAgICAgSnVtcCBub3RCaWdnZXN0ID0g
YnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVz
cyhyZWdUMCwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCkpKTsKICAgICBub3RCaWdnZXN0LmxpbmsodGhpcyk7Ci0gICAgCisKICAgICAvLyBJbml0
aWFsaXplICd0aGlzJy4KICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9IGpzUmVn
VDEwOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCB0aGlzSlNSKTsKQEAg
LTE5NiwxMSArMTk3LDExIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxlZUpTUiwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHJlZ1Qz
KSk7Ci0gICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihS
ZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7CisgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAgICBsb2Fk
VmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOwogICAgIGxvYWRHbG9iYWxPYmplY3QocmVn
VDMpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxs
RXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKLSAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5n
R2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQ
UiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0
YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCks
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgIGVtaXRW
aXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICBy
ZXNldFNQKCk7CiB9CiAKQEAgLTIxMywxOCArMjE0LDE4IEBAIGJvb2wgSklUOjpjb21waWxlVGFp
bENhbGwoY29uc3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkKQogdGVtcGxh
dGU8PgogYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29k
ZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKIHsK
LSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6
Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZv
OjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJz
OjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50
ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNh
bGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BS
KTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERh
dGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNS
LnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQ
Uiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURh
dGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVP
ckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNodWZmbGVyIHsgKnRoaXMsIHNodWZm
bGVEYXRhIH07Ci0gICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJz
OjpjYWxsTGlua0luZm9HUFIpOworICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICBzaHVmZmxlci5wcmVw
YXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsK
IAogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAgICBtX2NhbGxDb21waWxhdGlv
bkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmRvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBj
YWxsTGlua0luZm9JbmQKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0
aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVlKEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOworICAgIHN0
b3JlVmFsdWUoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhz
dGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAg
ICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3
MSwxNyArMjcyLDE3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICAvLyBXZSBuZWVkIHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNW
QUxVRTY0IGEgcG9pbnRlciBjb21wYXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBh
dGggY2F0Y2hlcyB0aGlzLgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90
Q2VsbChCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAog
ICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRh
KGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8o
KSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYg
KG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewotICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxM
aW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpj
YWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgICAgIGF1dG8g
c2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhp
cywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2
b2lkKCk+KFsmXSB7CiAgICAgICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAg
ICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIH0pKTsKICAg
ICAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAgICAgICAgYXV0byBkb25lTG9jYXRpb24g
PSBsYWJlbCgpOwpAQCAtMjg5LDcgKzI5MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5m
bzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxl
ZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BS
KTsKKyAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRo
KCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIo
KSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0
byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAK
QEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogewogICAgIGNvbXBp
bGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CiB9Ci0gCisKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAtMzkzLDEyICszOTQsMTIgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3QKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BU
YWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxs
TGlua0luZm9JbmRleCsrKTsKIH0KLSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0
cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2Nh
bGxMaW5rSW5mb0luZGV4KyspOwogfQotICAgIAorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29u
c3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNl
PE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgpOwog
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5
RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRy
eUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RD
YXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwog
CkBAIC00MjcsOSArNDI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmV0dXJuVmFsdWVKU1IpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7
CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3
aXNlIHdpbGwgbmVlZCBtb3ZlKHJldHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNDY5LDcgKzQ3
MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JD
aGVja3BvaW50KGp1bXAoKSk7CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIEpT
VmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNS
OworICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OmJhc2VKU1I7CiAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgIG5vdE9iamVjdC5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJhdG9ySlNSKSk7CiAgICAgbm90T2JqZWN0LmFwcGVu
ZChicmFuY2hJZk5vdE9iamVjdChpdGVyYXRvckpTUi5wYXlsb2FkR1BSKCkpKTsKQEAgLTQ3OCw3
ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAor
CiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKQEAgLTUxOCwxNiAr
NTE5LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIHVzaW5nIEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRD
bG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9
IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRKU1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nh
c2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWws
IEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC02MTYsOCArNjE3LDggQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiAg
ICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsKIAogICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0YmUuLmYyNzNmNDJi
OTQ2NDYwMGJiMmQ5NmEzODU3MDQwNWI2YTA5ZmEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3Rl
cnMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTQ5LDkgKzE1MCw5
IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQ
YXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7
CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHVi
SW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQs
IHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMTg1LDkg
KzE4Niw5IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2Vs
aW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnCiAKICAgICBtX3N0YXJ0ID0gaml0Lmxh
YmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFz
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNo
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRo
aXM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5m
bywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0
dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE1LDEwICsy
MTYsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIGppdC5sb2FkQ29uc3RhbnQo
c3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsKIAogICAg
IGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRvIGRvSW5s
aW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAg
dm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChK
SVQmIGppdCwgdW5zaWduZWQgc3R1YkkKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8s
IHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlJZDo6c2NyYXRjaEdQUjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
ZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5
OGMuLjUyNGY5YjA0OWUwZjNmMzFjMjk2ZGM0ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAg
LTQ4LDE5MCArNDgsNiBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0g
Y2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7
CiAKLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShK
U1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qx
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1l
c3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0
KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29u
c3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJ
bmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2Ug
QmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkg
b24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3Rl
cnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5
SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19h
c3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7
Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSKTsKLQotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJ
bmZvOjpyZWdUMzsKLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6
cmVnVDQ7Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1
OwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewot
I2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BS
SW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86
OmFyZ3VtZW50R1BSMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5m
bzo6YXJndW1lbnRHUFIzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6YXJndW1lbnRHUFIxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5m
bzo6bm9uQXJnR1BSMCB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86
Om5vbkFyZ0dQUjEgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BS
SW5mbzo6YXJndW1lbnRHUFIyIH07Ci0jZWxzZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKLSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3RvSlNSIHsgSlNSSW5mbzo6anNSZWdUNTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3Zl
cmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRj
aDJHUFIpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsK
LSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSICB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJh
c2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNz
ZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNS
KTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJ
bmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3Nl
bWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
ZG9udENsb2JiZXJKU1IpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhp
c0pTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFt
ZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7
IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qy
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BS
IHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBz
aXplIG9uIEFSTV9USFVNQjIKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdU
MyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpy
ZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07
Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlm
Ci19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5k
SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChi
YXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fz
c2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7
Ci19Ci0KIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAppbmRleCAyNmViMmFmZWNhZWY1YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdmYTdlLi4z
OTgxZjE3ZjA0MmJkOTA5MWI0YzIxMmFjODkzZWM0MzBjZWFjNmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24p
CiAgICAgZXhjZXB0aW9uQ2hlY2soKTsKIH0KIAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQotewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwot
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0
dXJuVHlwZShmdW5jdGlvbik7Ci0gICAgZXhjZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2Fs
bDsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1l
KCk7IC8vIFRoZSBjYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1l
IHRvIHRoZWlyIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4N2M3MWEzOGYxZjY3NGNhNC4uNzAyZDViMGEy
N2I0NTYxMGYwYzBkZTM1NTY0NTg2YjRjMGI1NzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNp
bmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5j
bHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZp
cnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcg
QmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3Rh
bmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0
ZXJzOjpzY3JhdGNoMUdQUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6
OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9m
OjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6
OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpw
cm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNj
cmF0Y2gxR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpz
Y3JhdGNoMkdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNS
KTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUs
OSArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CiAgICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNl
bGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQs
ICdwcm90bycgd2lsbCBiZSBwYXNzZWQgb24gc3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2Vy
dChwcm90b0pTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8
IGlzMzJCaXQoKSk7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIHByb3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpm
YWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWUgPSBqc1JlZ1QxMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZh
bHNlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9j
b25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJl
Z1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRj
aDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVy
bywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlz
RmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0g
anNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0g
cmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhw
ciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwg
SlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEs
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQu
anVtcCgpOwotCi0gICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFs
c2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0
Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdU
MCk7CisgICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVl
PigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9u
LCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2
YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6
dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0
aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
ID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsK
LSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBn
bG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJl
Z1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRo
eUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlz
IGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVj
YXVzZQpAQCAtNjc5LDMxICs2NTQsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVn
VDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1Qx
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29s
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFn
UmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIg
PSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxP
YmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1
ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQu
bW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgp
OwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0g
aml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
LCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Cisg
ICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVH
UFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZl
c1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25W
YWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckp1bXAodm0oKS5nZXRDVElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNv
ZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhl
bHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFy
Z3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIAotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7
IC8vIEluY29taW5nCiAKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAK
LSAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBq
aXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRH
UFIwKTsKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2Jh
bE9iamVjdEdQUjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwg
dGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBp
bmNvbWluZyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZy
YW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7
CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAg
aml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIp
OwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFM
VUU2NCkKIApAQCAtMTI1MCw3NyArMTIxMSw3MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihj
b25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRo
ZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBz
dGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8g
b2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBj
b3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291
bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwot
ICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsK
IAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdU
MCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6
YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
ID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRH
UFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQ
UjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVf
dCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBs
b2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5p
dCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGxvY2Fsc1RvSW5pdCksIGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9
CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFk
ZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdp
c3Rlcik7Ci0jZW5kaWYKLSAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZz
ZXQgMC4KLSAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6ICovIGZhbHNlKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
aXRlcmF0b3JHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIg
PSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBhcmd1
bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3Vt
ZW50R1BSNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW50ZXI6OmNhbkJlT3B0
aW1pemVkR1BSOyAvLyBJbmNvbWluZwogCi0gICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFydExvY2FsKS5v
ZmZzZXQoKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoc3RhcnRPZmZzZXQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgIGppdC5zdWI2NChpdGVyYXRvckdQUiwgbG9j
YWxzVG9Jbml0R1BSLCBlbmRHUFIpOwotCi0gICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHVuZGVmaW5lZEdQUik7Ci0gICAgYXV0byBpbml0
TG9vcCA9IGppdC5sYWJlbCgpOwotICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNoMzIoTGVz
c1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKICAgICB7Ci0gICAgICAgIGppdC5z
dG9yZTY0KHVuZGVmaW5lZEdQUiwgQmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBpdGVyYXRvckdQUiwgVGltZXNPbmUpKTsKLSAgICAgICAgaml0LnN1YjY0KFRydXN0ZWRJbW0z
MihzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JHUFIpOwotICAgICAgICBqaXQuanVtcChpbml0
TG9vcCk7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6bG9jYWxz
VG9Jbml0R1BSOyAvLyBJbmNvbWluZworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9y
R1BSID0gcmVnVDQ7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gcmVnVDU7Cisg
ICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB1bmRlZmluZWRKU1IgPSBqc1JlZ1QzMjsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobG9jYWxzVG9Jbml0R1BSLCBjYW5CZU9wdGlt
aXplZEdQUiwgaXRlcmF0b3JHUFIsIHVuZGVmaW5lZEpTUikpOworCisgICAgICAgIHNpemVfdCBz
dGFydExvY2FsID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0
dWFsUmVnaXN0ZXJzKCk7CisgICAgICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKHN0YXJ0TG9jYWwpLm9mZnNldCgpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZz
ZXQgPD0gMCk7CisgICAgICAgIGppdC5zdWJQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IFRydXN0ZWRJbW0zMigtc3RhcnRPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgaXRlcmF0b3JH
UFIpOworICAgICAgICBqaXQubXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBs
b2NhbHNUb0luaXRHUFIsIGxvY2Fsc1RvSW5pdEdQUik7CisgICAgICAgIGppdC5zdWJQdHIoaXRl
cmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQUiwgZW5kR1BSKTsKKyAgICAgICAgaml0Lm1vdmVUcnVz
dGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdW5kZWZpbmVkSlNSKTsKKworICAgICAgICBhdXRvIGlu
aXRMb29wID0gaml0LmxhYmVsKCk7CisgICAgICAgIEp1bXAgaW5pdERvbmUgPSBqaXQuYnJhbmNo
MzIoTGVzc1RoYW5PckVxdWFsLCBpdGVyYXRvckdQUiwgZW5kR1BSKTsKKyAgICAgICAgeworICAg
ICAgICAgICAgaml0LnN0b3JlVmFsdWUodW5kZWZpbmVkSlNSLCBBZGRyZXNzKGl0ZXJhdG9yR1BS
KSk7CisgICAgICAgICAgICBqaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIp
KSwgaXRlcmF0b3JHUFIpOworICAgICAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgICAg
ICB9CisgICAgICAgIGluaXREb25lLmxpbmsoJmppdCk7CiAgICAgfQotICAgIGluaXREb25lLmxp
bmsoJmppdCk7CiAKICAgICAvLyBlbWl0V3JpdGVCYXJyaWVyKG1fY29kZUJsb2NrKS4KKyAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChjYW5CZU9wdGltaXplZEdQUiwgYXJndW1lbnRHUFIxLCBh
cmd1bWVudEdQUjIpKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGFyZ3VtZW50R1BSMSk7CiAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9y
SW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2godm0sIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIy
KTsKIAotICAgIGppdC5tb3ZlKGNhbkJlT3B0aW1pemVkR1BSLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7IC8vIHNhdmUuCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOworICAgIC8vIG9w
X2VudGVyIGlzIGFsd2F5cyBhdCBieXRlY29kZU9mZnNldCAwLgorICAgIGppdC5zdG9yZTMyKFRy
dXN0ZWRJbW0zMigwKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKworICAgIC8vIHNh
dmUgY2FuQmVPcHRpbWl6ZWRHUFIgKGFyZ3VtZW50cyB0byBjYWxsIGJlbG93IGFyZSBpbiByZWdp
c3RlcnMgb24gYWxsIHBsYXRmb3Jtcywgc28gb2sgdG8gc3RhY2sgdGhpcykuCisgICAgLy8gTm90
ZTogd2Ugd2lsbCBkbyBhIGNhbGwsIHNvIGNhbid0IHVzZSBwdXNoVG9TYXZlLCBhcyBpdCBkb2Vz
IG5vdCBtYWludGFpbiBBQkkgc3RhY2sgYWxpZ25tZW50LgorICAgIGppdC5zdWJQdHIoVHJ1c3Rl
ZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQuc3RvcmVQdHIoY2Fu
QmVPcHRpbWl6ZWRHUFIsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpKTsKKworICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCk+
KCZ2bSwgYXJndW1lbnRHUFIxKTsKICAgICBDYWxsIG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwg
PSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0Lm1vdmUoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gcmVzdG9yZS4KLSAgICBqaXQu
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIp
LCBjYW5CZU9wdGltaXplZEdQUik7IC8vIFJlc3RvcmUgY2FuQmVPcHRpbWl6ZWRHUFIKKyAgICBq
aXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJl
c3RvcmUgc3RhY2sgcG9pbnRlcgorCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5r
KCZqaXQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMzM1LDExICsxMjkyLDMwIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVy
R2VuZXJhdG9yKFZNJiB2bSkKICAgICAgICAgc2tpcE9wdGltaXplLmFwcGVuZChqaXQuYnJhbmNo
QWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3Jl
bWVudEZvckVudHJ5KCkpLCBBZGRyZXNzKGFyZ3VtZW50R1BSMSwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVEV4ZWN1dGVDb3VudGVyKCkpKSk7CiAKICAgICAgICAgaml0LmNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0udG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbk9wdGltaXplKT4oJnZtLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworCisjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
Nl82NCkKKyAgICAgICAgLy8gT24gV2luZG93cywgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4
IGJ5dGVzIGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAg
ICAgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUg
c2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKFNsb3dQYXRoUmV0dXJuVHlwZSkgPT0gMTYsICJBc3N1bWVkIGJ5IGdl
bmVyYXRlZCBjYWxsIHNpdGUgYmVsb3ciKTsKKyAgICAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgdm1Qb2lu
dGVyQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVJbmRleEJpdHNBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsK
KyNlbHNlCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgdm1Qb2ludGVyQXJnR1BSIHsgR1BSSW5m
bzo6YXJndW1lbnRHUFIwIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVJbmRl
eEJpdHNBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyNlbmRpZgorICAgICAgICBq
aXQubW92ZShUcnVzdGVkSW1tUHRyKCZ2bSksIHZtUG9pbnRlckFyZ0dQUik7CisgICAgICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgYnl0ZWNvZGVJbmRleEJpdHNBcmdHUFIpOworCiAgICAg
ICAgIG9wZXJhdGlvbk9wdGltaXplQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAK
KyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgICAgICBqaXQucG9wKEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsgLy8gdGFyZ2V0UEMKKyAgICAgICAgaml0LnBvcChHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIpOyAvLyBkYXRhQnVmZmVyICh1bnVzZWQsIGJ1dCBuZWVkcyBwb3BwaW5n
IHRvIHJlc3RvcmUgc3RhY2spCisjZW5kaWYKKwogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5k
KGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKSk7CiAgICAgICAgIGppdC5m
YXJKdW1wKHJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKQEAg
LTEzNDcsMTEgKzEzMjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1bmtF
cGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwpAQCAtMTM2Miw3ICsxMzM0LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogI2VuZGlmCiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IG9wX2VudGVyX2hhbmRsZXIiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTczLDU3ICsxNTQ0LDQyIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYW5kbGVUcmFwcywgYXJndW1lbnRHUFIwKTsK
LSNlbHNlCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMzsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zm
c2V0R1BSKTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDaGVja1RyYXBzOjpi
eXRlY29kZU9mZnNldEdQUjsKKworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0
KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9jaGVja190cmFwc19oYW5k
bGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgaml0LnN0b3JlMzIo
Ynl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBjb2RlQmxvY2tHUFIgPSBhcmd1
bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNoZWNrVHJhcHM6OmJ5
dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgY29kZUJsb2NrR1BSKTsKLSAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKLSAgICAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlv
bkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CisgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIsIGdsb2JhbE9iamVjdEdQUikp
OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlu
a1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5r
UHJvbG9ndWUoLyogd2lsbFRhaWxDYWxsOiAqLyB0cnVlKTsKKworICAgIC8vIENhbGwgc2xvdyBv
cGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
b3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIGppdC5lbWl0Q1RJ
VGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0
aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFuZGxlVHJhcHMpKTsKLSAgICBhdXRv
IGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Cisg
ICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXIiKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X3JlZ2V4cChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0NDFlNzVmNzU2YjBm
Yzg0NTEzNWE2NDA2MjEwZmM2ZmU4YzQwNzYxLi43Yjg4N2U3NjNiMjNmYWNmNTI5ZTYxY2Y2NTky
YWFkMzgxYjFjMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShKSVQpCiAjaW5jbHVk
ZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCkBAIC01MiwxMSArNTMsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzY3Jh
dGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBh
dGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
QEAgLTEwMSw1MSArMTAyLDIyIEBAIHZvaWQgSklUOjpnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2Uo
Y29uc3QgT3Bjb2RlVHlwZSYgYnl0ZWNvZGUsIFZlY3RvcjxTbG93Q2FzZUVuCiAgICAgaWYgKCFo
YXNBbnlTbG93Q2FzZXMoaXRlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZh
bHNbbV9nZXRCeVZhbEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJh
dGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmczSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnNEpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBzdGF0aWNfYXNz
ZXJ0KCFCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLm92ZXJsYXBzKGFyZzRKU1Ip
KTsKLSAgICBtb3ZlVmFsdWVSZWdzKEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5
SlNSLCBhcmc0SlNSKTsKLSAgICBtb3ZlVmFsdWVSZWdzKEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IsIGFyZzNKU1IpOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wY29kZVR5cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBh
cmczSlNSLCBhcmc0SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
KyAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJn
MSBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBh
cmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDApOwotICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5
bG9hZEdQUigpID09IHJlZ1QxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRhdGE6Om9mZnNldE9mQXJy
YXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgp
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtMTU1LDgg
KzEyNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgZ2VuZXJhdGVHZXRCeVZhbFNs
b3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeVZhbD4oKSwgaXRlcik7CiB9CiAK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Io
Vk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2NCwzNSArMTM1
LDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNl
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6
Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogd2lsbFRhaWxDYWxsOiAqLyB0cnVlKTsKKworICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0K
LSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCisgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24g
dmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7
CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGpp
dC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9n
ZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9w
cml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTIwMSwxMCArMTcyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKQEAgLTIzMCw1NSArMjAxLDI5IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBBU1NFUlQoaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKTsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwogCi0gICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21f
Z2V0QnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFByaXZhdGVOYW1lPigpOwotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1
c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02
NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0K
ICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3Jr
IHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBh
c3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBm
cm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0yODYsMzQgKzIzMSwzNCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9i
amVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6ICovIHRydWUpOworCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwot
ICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7
Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCisgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dP
cGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5
SlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVy
YXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGpp
dC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93
X29wX3h4eF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CkBAIC0zMjEsOSArMjY2LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZh
dGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJh
bmRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdp
c3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJy
YW5kOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OmJyYW5kSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRK
U1IpOwpAQCAtMzU0LDQ2ICsyOTksMjEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2
YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKIHsKICAg
ICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1f
cHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFNldFBy
aXZhdGVCcmFuZD4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBicmFuZEpTUik7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHJpdmF0ZUJy
YW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0
ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBicmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BS
ID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJyYW5k
R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVC
cmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmCisgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KQEAgLTQwNCw5ICszMjQsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2Jy
YW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5k
ID0gYnl0ZWNvZGUubV9icmFuZDsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpicmFuZEpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpi
cmFuZEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsK
QEAgLTQyOCw0OSArMzQ4LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzLmFwcGVuZChnZW4pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hl
Y2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrUHJp
dmF0ZUJyYW5kPigpOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZSk7Ci0KLSAgICBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9w
cml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYnJhbmQsIGJyYW5kSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRp
b24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBiYXNlSlNSLCBicmFuZEpTUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZh
dGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNlZC4KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBicmFuZEdQUiA9
IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KGJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPEZ1bmN0aW9uVHJhaXRzPGRlY2x0
eXBlKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywg
RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+
OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
QEAgLTQ4MywxOSArMzc3LDIwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJv
cGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWU7CiAKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5n
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHByb3BlcnR5SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2
YWx1ZUpTUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBP
cDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwogCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwotICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2FkR1BSKCksIHBy
b2ZpbGVHUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwg
T3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKKworICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChieXRlY29kZSwgYmFzZUpTUi5wYXlsb2Fk
R1BSKCksIC8qIHNjcmF0Y2hHUFI6ICovIHN0dWJJbmZvR1BSKTsKIAogICAgIEpJVFB1dEJ5VmFs
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgSklUVHlwZTo6QmFzZWxp
bmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLApAQCAtNTI5LDc2ICs0MjQsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZhbERpcmVjdD4oY3VycmVudEluc3RydWN0
aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBib29s
IGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9ieV92
YWxfZGlyZWN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlOwotICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWU7Ci0gICAgRUNNQU1vZGUgZWNt
YU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0KLSAgICBhdXRvIGxvYWQgPSBbJl0oYXV0byBi
eXRlY29kZSkgewotICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgICAgICBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92
YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOwotICAgIH07Ci0K
LSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIGxvYWQoY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dEJ5VmFsRGlyZWN0PigpKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWQoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDU+
KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
Ci0gICAgaWYgKGlzRGlyZWN0KQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRh
dGEoY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpLCBPcFB1dEJ5VmFs
RGlyZWN0OjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0g
ICAgZWxzZQotICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dEJ5VmFsPigpLCBPcFB1dEJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0
T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBw
cm9wZXJ0eUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1Ip
OwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0g
ICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0
QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAg
IC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3QgcGF0aCBhbmQgbm90IGNsb2JiZXJl
ZC4KLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICAvLyBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgLy8gY29uc3RleHByIEdQUlJl
ZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9
IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgbG9hZENv
bnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9i
eV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92
YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdl
bmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBC
YXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRo
ZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2Rl
QmxvY2soKS4KQEAgLTYwNiwzOSArNDUyLDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRvaW4gPSBkZWNs
dHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVl
R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9maWxlR1BS
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKLSAgICB7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHVzZWQoYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BS
LCBwcm9maWxlR1BSKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q0KSk7Ci0g
ICAgICAgIEFTU0VSVCghdXNlZC5jb250YWlucyhyZWdUNSkpOwotICAgIH0KKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogd2lsbFRhaWxD
YWxsOiAqLyB0cnVlKTsKIAorICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RDYWxsPFNsb3dPcGVyYXRvaW4+KHN0dWJJbmZv
R1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1
ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOworICAgIGppdC5jYWxsKEFkZHJlc3Mobm9u
QXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25QdXRCeVZhbFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKLSAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwog
Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAg
ICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAg
ICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1
bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsK
KyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTY0NywxMCArNDkwLDEwIEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAKLSAgICB1
c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKQEAgLTY3OSw1NiArNTIyLDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVC
YXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5z
dHJ1Y3Rpb24pOwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxz
W21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dFByaXZhdGVOYW1lPigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgbG9h
ZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxs
T3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9i
YWxPYmplY3RHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIs
IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1
dEJ5VmFsSW5kZXgrK107CiAKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgLy8g
Y29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9w
cml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihW
TSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8v
IGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcg
YXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTczNiwzNCArNTUwLDM5
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmlu
ZVByaXZhdGVGaWVsZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9
IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAor
ICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6ICovIHRydWUpOwor
CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7Ci0KKyAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICAvLyBMb2FkaW5nIG51bGxwdHIgdG8g
dGhpcyByZWdpc3RlciBpcyBuZWNlc3NhcnkgZm9yIHNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsCisgICAgLy8gdG8gbm90IGNsb2JiZXIgZ2xvYmFsT2JqZWN0R1BSIG9uIEFSTV9USFVNQjIs
IGFuZCBpcyBvdGhlcndpc2UgaGFybWxlc3MuCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgcHJvZmlsZUdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzRm9ySW5kaXJlY3RD
YWxsPFNsb3dPcGVyYXRpb24+KHN0dWJJbmZvR1BSLAorICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
OworICAgIGppdC5jYWxsKEFkZHJlc3Mobm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIs
IHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKLSAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAg
aml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAg
ICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJh
Q1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC04NDEsMTAgKzY2MCwxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6
OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1Ip
OwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTg3
NSw2MiArNjk0LDM2IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQorICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVs
QnlJZD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpOwotCiAgICAgSklURGVsQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeUlk
c1ttX2RlbEJ5SWRJbmRleCsrXTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAx
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVs
QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OwogCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJh
dGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52
YWx1ZSgpKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFN
b2RlR1BSID0gYXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5r
ZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUdQUiA9
PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICB1c2lu
ZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICBzdGF0aWNfYXNzZXJ0
KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkgPT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVz
dWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdv
cmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2Vz
IGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxl
IGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTkzOCwzMyArNzMxLDM2IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV9pZF9w
cmVwYXJlQ2FsbEdlbmVyYXRvCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKC8qIHdpbGxUYWlsQ2FsbDogKi8gdHJ1ZSk7CisKKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BS
ID0gYXJndW1lbnRHUFI0OwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9i
YWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkRlbGV0ZUJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxP
YmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7Cisg
ICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigp
ID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZp
YSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGppdC5ib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5WYWx1ZUpTUik7CiAKLSAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAg
ICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBU
YWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVj
ayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtOTcz
LDExICs3NjksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC0xMDEwLDYzICs4MDYsMzYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5OwotCiAgICAgSklURGVsQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
ZGVsQnlWYWxzW21fZGVsQnlWYWxJbmRleCsrXTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OworCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSk7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Ci0gICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Ci0KLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0g
YXJndW1lbnRHUFI0OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCBiYXNlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1
ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgc3RhdGljX2Fz
c2VydChyZXR1cm5WYWx1ZUdQUiA9PSByZWdUMCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCiAKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpT
UjsKLSAgICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUi5wYXlsb2FkR1BSKCkgPT0gR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yihz
bG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBib3hCb29sZWFuKHJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAg
LTEwNzQsMzMgKzg0MywzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVs
QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjplY21h
TW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6
ICovIHRydWUpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0g
YXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVu
dEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xv
d09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIGVjbWFNb2RlR1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFu
Y2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIs
IHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5r
RXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsK
KyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFy
ZUNhbGwiKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMTEwOSw5ICs4ODEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0
X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMTM4LDQ5ICs5MTAsMjcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Ci0gICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZp
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2Vu
ID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZElu
ZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBt
b3ZlKEpJVDo6VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8
fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91
bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
LSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09
IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRpY19hc3NlcnQo
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpT
Uik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwog
fQogCkBAIC0xMTkxLDkgKzk0MSw5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTEyMTksNDkgKzk2OSwyNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsK
LSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRp
bWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwK
LSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNl
Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7CisgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNb
bV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRH
UFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7
Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJ
ZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZh
bHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
KCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCkBAIC0xMjcyLDE1ICsxMDAwLDE1IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlVlJlZyk7Ci0gICAgCi0gICAgaWYgKCppZGVudCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7
CisKKyAgICBpZiAoKmlkZW50ID09IHZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICBsb2FkOEZyb21NZXRhZGF0YShieXRlY29kZSwg
T3BHZXRCeUlkOjpNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlTWV0YWRhdGEoKSArIEdldEJ5SWRNb2Rl
TWV0YWRhdGE6Om9mZnNldE9mTW9kZSgpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgSnVtcCBub3RB
cnJheUxlbmd0aE1vZGUgPSBicmFuY2gzMihOb3RFcXVhbCwgVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKApAQCAtMTMxMiw1MSArMTA0MCw2
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCk7Ci0gICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxv
YWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9H
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Cisg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFIzOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNf
YXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVl
SlNSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
YnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKK3sKKyAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCisgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlv
bnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gK
KyAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgorICAgIENDYWxsSGVscGVycyBqaXQ7CisK
KyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Z2xv
YmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpT
bG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKC8qIHdpbGxUYWlsQ2FsbDogKi8gdHJ1ZSk7CisKKyAgICAvLyBD
YWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3Bl
cmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQ
Uik7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0
aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJU
YWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNh
bGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5qdW1wKCk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwpAQCAtMTM2NSwxMCArMTEw
OCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNWUmVn
ID0gYnl0ZWNvZGUubV90aGlzVmFsdWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwog
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVn
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWUmVnLCB0aGlzSlNS
KTsKQEAgLTEzOTUsOTYgKzExMzgsMzIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZywgcmVzdWx0SlNSKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKLXsK
LSAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCi0gICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBm
dW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3Qg
bWF0Y2gKLSAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgotICAgIENDYWxsSGVscGVycyBq
aXQ7Ci0KLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1l
bnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCi0gICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAg
IGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
R2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsIik7Ci19Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
JihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
LQotICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1dpdGhU
aGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGlt
aXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX3RoaXNWYWx1ZSwgdGhpc0pTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxT
bG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dEJ5SWRXaXRoVGhpcz4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRC
eUlkV2l0aFRoaXNJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIg
PSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNS
KTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhl
IHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgpAQCAtMTQ5MiwzNSArMTE3MSwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYQog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6Omdsb2JhbE9i
amVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlz
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpwcm9wZXJ0
eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6ICov
IHRydWUpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyB0aGlzR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodGhpc0dQUiA9PSBhcmd1bWVu
dEdQUjEpOwotCisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVw
QXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHRoaXNKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpPihnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUo
KTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQot
ICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNl
Ci0gICAgICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNr
IHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlz
X3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1MzQsMTAgKzEy
MTMsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gdG8ganVzdCBhZnRlciB0aGUgYXJndW1lbnRzIGhh
dmUgYmVlbiBsb2FkZWQgaW50byByZWdpc3RlcnMgJ2hvdFBhdGhCZWdpbicsIGFuZCB3ZSBnZW5l
cmF0ZSBjb2RlCiAgICAgLy8gc3VjaCB0aGF0IHRoZSBTdHJ1Y3R1cmUgJiBvZmZzZXQgYXJlIGFs
d2F5cyBhdCB0aGUgc2FtZSBkaXN0YW5jZSBmcm9tIHRoaXMuCiAKLSAgICB1c2luZyBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0
dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0
Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlVlJlZywgdmFsdWVKU1IpOwpAQCAtMTU2
MSw3ICsxMjQwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgcmVzZXRTUCgpOyAvLyBXZSBtaWdodCBPU1Ig
ZXhpdCBoZXJlLCBzbyB3ZSBuZWVkIHRvIGNvbnNlcnZhdGl2ZWx5IHJlc2V0IFNQCiAgICAgYWRk
U2xvd0Nhc2UoKTsKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwotICAgIAorCiAgICAgLy8g
SUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFz
ZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBp
biBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKQEAgLTE1NzAsNTYgKzEy
NDksMzAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwotICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhp
cyk7Ci0gICAgCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1
dEJ5SWRJbmRleCsrXTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwog
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJ
ZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUUHV0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeUlkc1ttX3B1dEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1Bh
dGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKKworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
T2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsgLy8gYXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQ
dXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQ
UiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1
ZUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X2lk
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRf
YnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5l
cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFz
ZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUg
cmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCkBAIC0xNjI3LDM1ICsxMjgwLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6
cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogd2lsbFRhaWxD
YWxsOiAqLyB0cnVlKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBh
cmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh2YWx1ZUdQUiA9
PSBhcmd1bWVudEdQUjEpOwotCisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHZhbHVlSlNSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUik7CisgICAgc3RhdGljX2Fzc2Vy
dChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BS
MSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOwor
ICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk+KGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHZhbHVlR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7
Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuZW1pdENUSVRodW5r
RXBpbG9ndWUoKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxp
bmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsK
LSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0
aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAK
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRf
cHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE2NjQsOSArMTMxNyw5IEBAIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlm
aWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTE2OTEsNTEgKzEzNDQsMjkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwotICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKLQotICAgIEpJVEluQnlJZEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5SWRzW21f
aW5CeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQot
I2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRp
b248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRl
eCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+
KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEluQnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9pbkJ5SWRzW21faW5CeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpw
cm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zm
c2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMo
KSksIHByb3BlcnR5R1BSKTsKLSAgICAvLyBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9n
ZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2ls
bCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBp
biBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQg
bmFtZS4KICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1
ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2Vy
dChCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIApAQCAtMTc0NiwxMSArMTM3NywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkluQnlWYWw6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbkJ5VmFsOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0
eUpTUik7CkBAIC0xNzc3LDY0ICsxNDA4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5CeVZhbD4oKTsKLQotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5C
eVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0YWRhdGE6Om9mZnNl
dE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNs
b3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQot
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRo
Ojpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9
IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRH
UFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShi
eXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJv
ZmlsZUdQUik7Ci0gICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV92
YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Igd2lsbCBkbyBl
eGFjdGx5IHdoYXQgd2UgbmVlZC4KICAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVh
dGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4K
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFs
T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92
YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1
YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NU
eXBlIHR5cGUpCiB7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5CeVZhbDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2Us
IGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHlPckJyYW5kLCBw
cm9wZXJ0eUpTUik7CkBAIC0xODU4LDUxICsxNDYyLDI3IEBAIHZvaWQgSklUOjplbWl0SGFzUHJp
dmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJl
Z2lzCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CiB9CiAKLXZv
aWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSB0eXBlKQordm9pZCBKSVQ6OmVtaXRIYXNQcml2
YXRlU2xvdyhBY2Nlc3NUeXBlIHR5cGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJhc2UpOwotICAg
IFVOVVNFRF9QQVJBTShwcm9wZXJ0eSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09
IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lIHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJp
dmF0ZUJyYW5kKTsKIAotICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNb
bV9pbkJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0K
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0g
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRK
U1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpT
Uik7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNv
ZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUSW5CeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlPckJyYW5k
R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5T3JCcmFuZEdQUiA9PSBhcmd1bWVudEdQUjEp
OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZShvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIApAQCAtMTkxMiwxMiArMTQ5MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfcHJpdmF0
ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhh
c1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9w
ZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVOYW1lPigpOwotICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5
dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lKTsKKyAgICBlbWl0
SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTkyNiwxMiArMTUwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2Rl
Lm1fYnJhbmQsIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBK
SVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BIYXNQcml2YXRlQnJhbmQ+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1f
YmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKKyAg
ICBlbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpAQCAtMTk0MSw3ICsxNTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVz
b2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIg
c2NvcGUgPSBieXRlY29kZS5tX3Njb3BlOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4
KTsKICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVj
b2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CkBAIC0xOTQ5LDE0ICsxNTI0LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAvLyBJZiB3ZSBwcm9maWxlIGNlcnRhaW4gcmVzb2x2ZSB0eXBl
cywgd2UncmUgZ3VhcmFudGVlZCBhbGwgbGlua2VkIGNvZGUgd2lsbCBoYXZlIHRoZSBzYW1lCiAg
ICAgLy8gcmVzb2x2ZSB0eXBlLgogCi0gICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gTW9k
dWxlVmFyKSAKKyAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAg
ICAgIGxvYWRQdHJGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZMZXhpY2FsRW52aXJvbm1lbnQoKSwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGVs
c2UgewogICAgICAgICB1aW50MzJfdCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxv
Y2stPm1ldGFkYXRhKCkub2Zmc2V0SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKIAotICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDI7Ci0gICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NvcGVHUFIgPSByZWdUMDsKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IHJlZ1QzOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UmVzb2x2ZVNjb3BlOjptZXRhZGF0YUdQUjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6c2NvcGVHUFI7CisgICAgICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCiAgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7CiAgICAgICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIobWV0YWRhdGFPZmZzZXQpLCBzX21ldGFkYXRhR1BSLCBtZXRh
ZGF0YUdQUik7CkBAIC0xOTY0LDIzICsxNTM5LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNvZGU7CiAgICAgICAgIGlm
IChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgICAgICBjb2RlID0g
dm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcj4pOwor
ICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3Bl
VGh1bms8Q2xvc3VyZVZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBl
ID09IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHVi
KGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZh
cikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogICAgICAgICBlbHNlIGlm
IChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICAgICAgY29k
ZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3Bl
cnR5Pik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNv
bHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxl
ZFJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpCi0gICAgICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4p
OworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNj
b3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJl
c29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAg
ICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2
bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcz4pOwogICAgICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRD
VElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcz4pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAg
ICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVu
azxHbG9iYWxWYXI+KTsKIAogICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbChjb2RlLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7CiAgICAgfQpAQCAtMjAwMCwxMiArMTU3NSwxMiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rKFZNJiB2bSkKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgdXNpbmcgTWV0YWRh
dGEgPSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBtZXRh
ZGF0YUdQUiA9IHJlZ1QyOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVH
UFIgPSByZWdUMDsgLy8gaW5jb21pbmcKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDM7IC8vIGluY29taW5nIC0gcGFzcyB0aHJ1IHRvIHNsb3cgcGF0aC4KKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjptZXRhZGF0YUdQUjsg
Ly8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3Bl
OjpzY29wZUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UmVzb2x2ZVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcgLSBwYXNzIHRocm91
Z2ggdG8gc2xvdyBwYXRoLgogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1Q1
OyAvLyBsb2NhbCB0ZW1wb3JhcnkKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIp
OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlR1BSLCBtZXRhZGF0YUdQ
UiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNo
R1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChzY29wZUdQUiA9PSByZXR1cm5WYWx1ZUdQUik7IC8v
IGVtaXRSZXNvbHZlQ2xvc3VyZSBhc3N1bWVzIHRoaXMKIAogICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CkBAIC0yMTM2LDUwICsxNzExLDMzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgLy8gVGhlIGZhc3QgcGF0aCBhbHJlYWR5IHB1c2hlZCB0aGUgcmV0dXJuIGFkZHJlc3MuCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVz
aFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NS
ZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0i
Ci0jZW5kaWYKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5jb21pbmdCeXRlY29kZU9mZnNldEdQ
UiA9IHJlZ1QzOwotICAgIGppdC5zdG9yZTMyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BS
OyAvLyBJbmNvbWluZwogCiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7
CiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CiAg
ICAgY29uc3RleHByIEdQUlJlZyBpbnN0cnVjdGlvbkdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNo
R1BSICwgZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOworICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSICwgZ2xvYmFsT2JqZWN0
R1BSLCBpbnN0cnVjdGlvbkdQUikpOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKC8q
IHdpbGxUYWlsQ2FsbDogKi8gdHJ1ZSk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spLCBzY3JhdGNoR1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1
Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwotICAgIGppdC5hZGRQdHIoaW5j
b21pbmdCeXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotCisgICAgaml0LmFkZFB0
cihieXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSk+KGdsb2JhbE9i
amVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNr
KHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7
Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAg
ICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlm
IENQVShNSVBTKQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBs
YXRmb3JtIgotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lKSk7Ci0gICAgYXV0byBoYW5k
bGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0
aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2Rl
TG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBh
dGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENU
SVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
IkJhc2VsaW5lOiBzbG93X29wX3Jlc29sdmVfc2NvcGUiKTsKIH0KIApAQCAtMjE5MCwzOCArMTc0
OCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVj
b2RlLm1fc2NvcGU7CiAgICAgUmVzb2x2ZVR5cGUgcHJvZmlsZWRSZXNvbHZlVHlwZSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fcHJvZmlsZWRDb2RlQmxvY2spLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpOwogCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBBU1NFUlQobV91bmxp
bmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDQ7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLQogICAgIHVpbnQzMl90IG1ldGFkYXRh
T2Zmc2V0ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bWV0YWRhdGEoKS5vZmZzZXRJbk1ldGFkYXRh
VGFibGUoYnl0ZWNvZGUpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZy
b21TY29wZTo6bWV0YWRhdGFHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEZyb21TY29wZTo6c2NvcGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyUGF5bG9hZChzY29wZSwgc2NvcGVHUFIpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWV0
YWRhdGFPZmZzZXQpLCBzX21ldGFkYXRhR1BSLCBtZXRhZGF0YUdQUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNvZGU7CiAgICAgaWYgKHByb2ZpbGVk
UmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXI+KTsKKyAgICAgICAgY29kZSA9
IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8Q2xvc3VyZVZhcj4p
OwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVk
UmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOwog
ICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZy
b21TY29wZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAg
Y29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOworICAgICAgICBjb2Rl
ID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxQcm9w
ZXJ0eT4pOwogICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNh
bFZhcikKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1
YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOwogICAgIGVs
c2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwor
ICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVu
azxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwogICAgIGVsc2UKLSAg
ICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEds
b2JhbFZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKIAogICAgIGVtaXROYWtlZE5lYXJDYWxsKGNvZGUu
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmV0dXJuVmFsdWVKU1IpOwpAQCAtMjIzNSw5ICsxNzkyLDEwIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmso
Vk0mIHZtKQogICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRv
IG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIHVzaW5nIE1ldGFkYXRhID0gT3BHZXRGcm9tU2NvcGU6Ok1l
dGFkYXRhOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOyAvLyBVc2VkIG9ubHkgb24gc2xvdyBwYXRoCisKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsg
Ly8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3Bl
OjpzY29wZUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcgLSBwYXNzIHRocm91
Z2ggdG8gc2xvdyBwYXRoLgogICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1Q1
OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZU9mZnNldEdQUik7CiAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNv
ZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKQEAgLTIyNTYsNyArMTgxNCw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wR2V0RnJvbVNjb3Bl
VGh1bmsoVk0mIHZtKQogICAgICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIsIE9C
SkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV92YXJJbmplY3Rpb25XYXRjaHBvaW50KSks
IHNjcmF0Y2hHUFIpOwogICAgICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaDgoRXF1YWws
IEFkZHJlc3Moc2NyYXRjaEdQUiwgV2F0Y2hwb2ludFNldDo6b2Zmc2V0T2ZTdGF0ZSgpKSwgVHJ1
c3RlZEltbTMyKElzSW52YWxpZGF0ZWQpKSk7CiAgICAgfTsKLSAgICAKKwogICAgIGF1dG8gZW1p
dENvZGUgPSBbJl0gKFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKSB7CiAgICAgICAgIHN3aXRjaCAo
cmVzb2x2ZVR5cGUpIHsKICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKQEAgLTIzNzEsNjgg
KzE5MjksNDIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mIHYKICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAg
IGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wdXNoUGFp
cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0j
ICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgotCiAgICAgdXNp
bmcgTWV0YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5jb21pbmdC
eXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOwotICAgIGppdC5zdG9yZTMyKGluY29taW5nQnl0ZWNv
ZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6bWV0YWRhdGFHUFI7IC8v
IEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6
Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgY29uc3RleHByIEdQUlJlZyBpbnN0cnVj
dGlvbkdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRh
ZGF0YUdQUiwgaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUiwgZ2xvYmFsT2Jq
ZWN0R1BSLCBpbnN0cnVjdGlvbkdQUikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1l
dGFkYXRhR1BSLCBieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlv
bkdQUikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCByZXR1cm5W
YWx1ZUdQUikpOwogCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBzY3JhdGNoR1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hH
UFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
SW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgaW5zdHJ1Y3Rpb25HUFIpOwotICAgIGppdC5hZGRQ
dHIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5l
bWl0Q1RJVGh1bmtQcm9sb2d1ZSgvKiB3aWxsVGFpbENhbGw6ICovIGZhbHNlKTsKIAotICAgIC8v
IFByZXNlcnZlIG1ldGFkYXRhIGluIGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLgotI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUNTUiA9IEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyOwotICAgIGF1dG8gcmVzdG9yZUhpamFja2VkQ1NSID0gWyZdKCkgewot
ICAgICAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwotICAgIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBzX21ldGFkYXRhR1BSOwotICAgIGF1
dG8gcmVzdG9yZUhpamFja2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNfbWV0YWRhdGFHUFIpOwotICAgICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKHNfbWV0YWRhdGFHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZN
ZXRhZGF0YVRhYmxlKCkpLCBzX21ldGFkYXRhR1BSKTsKLSAgICB9OwotI2VuZGlmCi0gICAgQVNT
RVJUKFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkuY29udGFpbnMobWV0YWRhdGFD
U1IpKTsKLSAgICBqaXQubW92ZShtZXRhZGF0YUdQUiwgbWV0YWRhdGFDU1IpOwotCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEZyb21TY29wZSk+KGdsb2JhbE9i
amVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoaW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhp
bnN0cnVjdGlvbkdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIo
KSksIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBp
bnN0cnVjdGlvbkdQUik7CisKKyAgICAvLyBzYXZlIG1ldGFkYXRhR1BSIChhcmd1bWVudHMgdG8g
Y2FsbCBiZWxvdyBhcmUgaW4gcmVnaXN0ZXJzIG9uIGFsbCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0
YWNrIHRoaXMpLgorICAgIC8vIE5vdGU6IHdlIHdpbGwgZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2Ug
cHVzaFRvU2F2ZSwgYXMgaXQgZG9lcyBub3QgbWFpbnRhaW4gQUJJIHN0YWNrIGFsaWdubWVudC4K
KyAgICBqaXQuc3ViUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgaml0LnN0b3JlUHRyKG1ldGFkYXRhR1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyKSk7CisKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
CiAgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9u
Q2hlY2sodm0pOwogCi0gICAgaml0LnN0b3JlVmFsdWUocmV0dXJuVmFsdWVKU1IsIEFkZHJlc3Mo
bWV0YWRhdGFDU1IsIE1ldGFkYXRhOjpvZmZzZXRPZlByb2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6
b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciksIG1ldGFkYXRhR1BSKTsg
Ly8gUmVzdG9yZSBtZXRhZGF0YUdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisgICAgaml0
LnN0b3JlVmFsdWUocmV0dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE1ldGFkYXRh
OjpvZmZzZXRPZlByb2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgp
KSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAg
aml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBD
UFUoTUlQUykKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRk
cmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0
Zm9ybSIKLSNlbmRpZgorICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5y
ZXQoKTsKIAogICAgIGV4Y2VwdGlvbkNoZWNrLmxpbmsoJmppdCk7Ci0gICAgcmVzdG9yZUhpamFj
a2VkQ1NSKCk7CisgICAgaml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVy
UmVnaXN0ZXIpOyAvLyBSZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwogICAgIEp1bXAganVtcFRvSGFu
ZGxlciA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTI1
OTAsMjcgKzIxMjIsMjAgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3IKICAgICBpZiAocHJvZmls
ZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKICAgICAgICAgLy8gSWYgYW55IGxpbmtlZCBD
b2RlQmxvY2sgc2F3IGEgTW9kdWxlVmFyLCB0aGVuIGFsbCBsaW5rZWQgQ29kZUJsb2NrcyBhcmUg
Z3VhcmFudGVlZAogICAgICAgICAvLyB0byBhbHNvIHNlZSBNb2R1bGVWYXIuCi0gICAgICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwor
ICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiAgICAgICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgfSBlbHNlIHsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0gICAgICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBhcmd1bWVudEdQUjAsIGN1cnJlbnRJ
bnN0cnVjdGlvbik7Ci0jZWxzZQotICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAg
ICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAg
ICAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0
KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAg
ICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zm
c2V0R1BSOwogCi0gICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5k
aWYKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7CisgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93
X29wX3B1dF90b19zY29wZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAg
ICB9CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihW
TSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYx
OSw0MyArMjE0NCwzNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQp
Ci0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIz
OwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwog
ICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BS
OyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1l
bnRHUFIzOyAvLyBPbmx5IHVzZWQgYXMgc2NyYXRjaCByZWdpc3RlcgorICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIsIGJ5dGVjb2RlT2Zm
c2V0R1BSLCBjb2RlQmxvY2tHUFIpKTsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgv
KiB3aWxsVGFpbENhbGw6ICovIHRydWUpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgor
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgY29kZUJsb2NrR1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
ICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKICAgICBqaXQuYWRk
UHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFRvU2NvcGUpPihnbG9iYWxPYmplY3RHUFIsIGlu
c3RydWN0aW9uR1BSKTsKKyAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7CiAKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIEND
YWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhj
ZXB0aW9uQ2hlY2sodm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0jaWYg
Q1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShB
Uk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVy
KTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9u
IGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlv
biwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRUb1Njb3BlKSk7Ci0g
ICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5k
SGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlv
bkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19zY29wZSIpOwogfQotI2VuZGlm
CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjY2Myw3ICsyMTc5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAg
IFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKICAgICBp
bnQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIAorCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlclBheWxvYWQoYXJndW1lbnRzLCByZWdUMCk7CiAgICAgbG9hZFZhbHVlKEFkZHJlc3Mo
cmVnVDAsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpICsgaW5kZXggKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KSksIGpzUmVnVDEwKTsKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLCBqc1JlZ1QxMCk7CkBAIC0yNzQzLDcgKzIyNTksNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKIAogICAgIGdl
bmVyaWNDYXNlcy5saW5rKHRoaXMpOwotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0
b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogCiAgICAg
ZG9uZUNhc2VzLmxpbmsodGhpcyk7CkBAIC0yODA2LDcgKzIzMjIsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsodGhpcyk7CiAKLSAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1l
cmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogCiAgICAg
ZG9uZS5saW5rKHRoaXMpOwpAQCAtMjgyNCwxMyArMjM0MCwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cmVzdWx0R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVF
bnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJl
Z2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c3R1Yklu
Zm9HUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IEJhc2VsaW5lRW51bWVyYXRv
ckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJl
Z2lzdGVyczo6c2NyYXRjaDM7CisgICAgY29uc3RleHByIEdQUlJlZyByZXN1bHRHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpFbnVtZXJhdG9yR2V0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdl
dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnN0
dWJJbmZvR1BSOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzY3JhdGNoMTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6
c2NyYXRjaDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gzOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG1v
ZGUsIHNjcmF0Y2gzKTsKQEAgLTI5MDYsNyArMjQyMiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwgdHlwZW5hbWUgU2xvd1BhdGhG
dW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgY29uc3QgQnl0ZWNvZGUmIGJ5
dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2FzZSkKK3ZvaWQgSklUOjplbWl0
X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRlY29kZSYgYnl0ZWNvZGUsIFNs
b3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKQEAgLTI5MzYsNyArMjQ1Miw3IEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3Jf
aGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAK
ICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFsQ2FzZSk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2FzZSk7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI5NDQsMzEgKzI0NjAsMzEg
QEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZhbD4oKSwgc2xvd19wYXRoX2Vu
dW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1w
bChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0
b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJlbnRJbnN0cnVj
dGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4o
KSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CisgICAgZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2dl
dF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0
cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZ2V0X3Byb3BlcnR5
X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCk7CiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjQ5MywxNSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1l
cmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eSk7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmlu
ZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4YzgxZjguLmJmNjBjMGQyMjkw
YjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9y
CiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVuY3Rp
b25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQogewogICAg
IGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9yPihzbG93UGF0aEZ1bmN0aW9u
KTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mIHZtLAogICAgIH0pOwog
fQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHN0cnVjdCBKSVRUaHVu
a3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSG9z
dEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVFeGVjdXRhYmxlSGFzaDo6aGFz
aChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRpdmVFeGVjdXRh
YmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJldHVybiBXZWFrTmF0aXZlRXhl
Y3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2JmNTdlMTQ1MzhjZWZiLi5hMzc1
ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVibGljOgogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVj
dChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjdGlT
dHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU2xvd1BhdGhGdW5j
dGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRpZgogCiAgICAgTmF0aXZlRXhl
Y3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdn
ZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rp
b24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwgSW50
cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKaW5kZXggYjhhY2FiZTY4
ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uNWQ0YTIzZWJiMjhiOWNhNjkxZjdlMTk0
ZjAxYzcxN2JhYmVlNDBiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhD
YWxsLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQorbmFtZXNwYWNlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7Cit9CiAKIHZvaWQgSklUU2xvd1Bh
dGhDYWxsOjpjYWxsKCkKIHsKQEAgLTQ0LDkgKzQ2LDcgQEAgdm9pZCBKSVRTbG93UGF0aENhbGw6
OmNhbGwoKQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9qaXQtPm1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkg
PT0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBVTlVTRURfVkFSSUFCTEUobV9wYyk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMTsKLSAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0UmVnKTsKKyAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBtX2ppdC0+ZW1pdE5h
a2VkTmVhckNhbGwodm0uaml0U3R1YnMtPmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKHZtLCBtX3Ns
b3dQYXRoRnVuY3Rpb24pLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiB9CiAKQEAgLTU0LDQ2
ICs1NCw0OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFNsb3dQ
YXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayhWTSYgdm0sIFNsbwogewogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0UmVnID0gSklUOjphcmd1
bWVudEdQUjE7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAg
IGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2Rl
T2Zmc2V0UmVnLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjphZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKC8qIHdpbGxUYWlsQ2FsbDogKi8gdHJ1ZSk7
CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAot
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0g
Ynl0ZWNvZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCisgICAgLy8gT24gV2luZG93cywgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4
IGJ5dGVzIGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAg
ICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlm
dGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQg
Y2FsbCBzaXRlIGJlbG93Iik7CisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVBcmdHUFIgPSBHUFJJ
bmZvOjphcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBwY0FyZ0dQUiA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMjsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChHUFJJbmZvOjph
cmd1bWVudEdQUjAsIGNhbGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BS
KSk7CisjZWxzZQorICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BSID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjE7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FsbEZyYW1lQXJn
R1BSLCBwY0FyZ0dQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpKTsKKyNlbmRpZgorICAgIGppdC5tb3Zl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsRnJhbWVBcmdHUFIpOworICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBwY0FyZ0dQUik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBjQXJn
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgcGNBcmdH
UFIpOworICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIHBjQXJnR1BSKTsKIAogICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJs
ZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZS
ZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxI
ZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIp
OworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgaml0LnBvcChHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUik7IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UjIpOyAvLyBjYWxsRnJhbWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsKIAotICAgIGF1dG8gaGFu
ZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcik7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJ
VGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihzbG93UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRp
b25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRleCA4OTlhMjkw
MGZlZGUzN2RkMGVhNWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgyNjUyYTkzNmFl
MDk2NGIwNDQzZjYzNDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhD
YWxsLmgKQEAgLTM1LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xv
d1BhdGhDYWxsIHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0
IEluc3RydWN0aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAg
IEpJVFNsb3dQYXRoQ2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0
aW9uKQogICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRoRnVuY3Rpb24o
c2xvd1BhdGhGdW5jdGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAgICAgICAgYXNz
ZXJ0SXNDRnVuY3Rpb25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYsIFNsb3dQYXRo
RnVuY3Rpb24pOwogCi0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLSAg
ICBKSVQ6OkNhbGwgY2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZy
YW1lKCk7Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPmFk
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2pp
dC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0gICAg
ICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQ
UjIpOwotI2Vsc2UKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3Rlciwg
SklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1Q
dHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBKSVQ6OkNhbGwg
Y2FsbCA9IG1faml0LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0KLSNpZiBDUFUo
WDg2XzY0KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDApOyAv
LyB2UEMKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZyYW1lIHJlZ2lz
dGVyCi0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNoZWNr
KCk7Ci0gICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNsb3dQYXRoRnVu
Y3Rpb24gbV9zbG93UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX3BjOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5ZTFjYTIzNWU0ZGJkZWEz
MDkzM2IwLi4wNzU2NTVkMTkyNTE0Y2JhMGZmODQ0ZTgxYWRhOGYyMGQ5NmNmOWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00OSw5ICs0
OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0
LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCArNTcsNiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVy
YXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVF
eGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIEND
YWxsSGVscGVycyBqaXQ7CkBAIC03NywyMCArNzMsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5l
cmEKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0K
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNl
cnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigyICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNw
KTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQot
ICAgIGppdC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxs
SGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wb3BQYWly
KENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJu
QWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBw
bGF0Zm9ybSIKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKyNpZiBDUFUoWDg2XzY0
KSAvLyBPbiB0aGUgeDg2LCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSBsZWF2ZXMgdGhlIHJldHVybiBQ
QyBvbiB0aGUgc3RhY2suIERyb3AgaXQuCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgWDg2UmVnaXN0ZXJzOjplc3ApOwogI2Vu
ZGlmCiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAoKTsK
QEAgLTEwMSwzMiArOTAsMjAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNr
UHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNl
RXhjZXB0aW9uRnV6eigpKSkgewotICAgICAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2Fs
bCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4g
YWRkcmVzcyBoZXJlLgotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wdXNoKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgaml0LnB1c2hQYWlyKENDYWxs
SGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVy
KTsKLSNlbmRpZgotICAgIH0KKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1
bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVz
cyBoZXJlLgorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQor
ICAgICAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogd2lsbFRhaWxDYWxsOiAqLyBmYWxz
ZSk7CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlRXhjZXB0aW9uID0gaml0LmVtaXRO
b25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlRXhjZXB0aW9uRnV6eigpKSkgewotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5w
b3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucG9w
UGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6Omxp
bmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSkpCisgICAgICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwog
ICAgIGppdC5yZXQoKTsKIAogICAgIGF1dG8gaGFuZGxlckdlbmVyYXRvciA9IE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSA/IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IgOiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3I7CkBAIC0xNDMsOCArMTIwLDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZv
aWQgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRl
ckdQUiwgVGFnVHlwZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuaAppbmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUx
Li4xMDU0OTEwNGVmNjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVu
dW0gY2xhc3MgQ2FsbE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjsKIGNsYXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZN
Jik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQ
cmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhH
ZW5lcmF0b3IoVk0mKTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsK
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaAppbmRleCA2NjRiMGUyOWY2YmEzY2U0ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3
NDA5YmM5YWU4NmMzNDI4ZTYyZWMyMGE0NTBhZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKQEAgLTgzOSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05f
VkFMSURBVElPTiAxCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYm
ICFPUyhXSU5ET1dTKSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2Fu
IHVzZSB1cCB0byA2IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02
NCBsaWtlIGZlYXR1cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0
Zm9ybXMKLSAgIHRoYXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4K
LSovCi0jZGVmaW5lIEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUg
RU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449389</attachid>
            <date>2022-01-18 07:52:55 -0800</date>
            <delta_ts>2022-01-18 10:00:50 -0800</delta_ts>
            <desc>fix PACs in thunks - v2</desc>
            <filename>bug-233822-20220118155252.patch</filename>
            <type>text/plain</type>
            <size>1758542</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDM3NzliZTk4NzIyNjA1ZDMxZTVmYWZkMjg1NTQwODllZDJhMmYyLi5jNTVjMTIxYzFiYmEzNmFm
YmM0NzBlM2U2YTk4ZDMzZjY5YjY3N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMTggIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0xNiAgTGF1cm8gTW91cmEg
IDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggQysrMjAgYnVpbGQgd2FybmluZ3Mg
d2l0aCBHQ0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggM2I4Zjk0N2NjMmRkMzQwN2Y4ZWY2MzczMzgzYTY2Njk4ZTc1NmRiMy4u
N2ZkNWQwZTdlN2YxYjQ1YTAzYjdjYjliM2Q1NjQ4NTM3ZjMzYTBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wMS0xOCAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFi
bGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJBX0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3YXlz
IG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIwMjItMDEtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5pZCBhIFVV
SUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI5ODcx
MjE3NWM5YTdkOWU0NDM3ZmYzNTcyOWE4NGM0MWVlOGM2NGYuLjI1MWI5ZTQ1OTk2YjNmMjEwNzI3
OTU3NmE1NGUxOTI4ZjFmNDIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTg0Myw2ICs4NDMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIGppdC9Bc3NlbWJseUhlbHBlcnMuaAogICAgIGppdC9Bc3NlbWJseUhlbHBl
cnNTcG9vbGVycy5oCiAgICAgaml0L0Jhc2VsaW5lSklUQ29kZS5oCisgICAgaml0L0Jhc2VsaW5l
SklUUmVnaXN0ZXJzLmgKICAgICBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAogICAgIGppdC9D
Q2FsbEhlbHBlcnMuaAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTZiZGZlMDc1Mzg0NTI4ODg4MjBjY2I2NDM5ZmIyNzAzZWM1
NmZmMC4uMGE2MTJiNzA2ZDI5YmViZDZiMTVmNzZhMDQyODA4OTExYTlkM2FjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTUsNiArMTE5NSw3IEBACiAJCTcyMTMxQkZBMjY1
ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFuU3RhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTMxQkY2MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFu
U3RhZ2UuaCAqLzsgfTsKIAkJNzIxMzFCRkMyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdvcmtsaXN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzIxMzFCRkIyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdvcmtsaXN0SW5saW5lcy5oICovOyB9Owog
CQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjM5OThGNTI2NURCQ0RCMDA1
Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi87IH07CisJCTcyNDAwMEY3MjgyREJDREIxMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0MDA5RjUyNzhEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5l
SklUUmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzI2QjkxQjAyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBODI2
NTgxNjUyMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQuaCAqLzsgfTsKIAkJNzI2QjkxQjMy
NjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2QjkxQUIyNjU4MTY1MzAwOEU2RjgyIC8q
IEpJVENvbXBpbGF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyNkI5MUI3MjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBRjI2NTgx
NjUzMDA4RTZGODIgLyogSklUUGxhbi5oICovOyB9OwpAQCAtNDIyMSw2ICs0MjIyLDcgQEAKIAkJ
NzIxMzFCRkIyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdvcmtsaXN0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRXb3JrbGlzdElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5l
SklUUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFBs
YW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4
NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCYXNlbGluZUpJVFBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZWxpbmVKSVRSZWdpc3RlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJ
VFdvcmtsaXN0VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdv
cmtsaXN0VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUFBMjY1
ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpJVFBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZC
OTFBQjI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjQ3Miw2ICs2NDc0LDcgQEAKIAkJCQk1MkREMDAwNjI2RTAzOUIz
MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggKi8sCiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAgKi8sCiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovLAorCQkJCTcyNDAwOUY1Mjc4REJDREIwMDU3
ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICovLAogCQkJCTBGNjRCMjZGMUE3ODRCQUYw
MDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guY3BwICovLAogCQkJCTBGNjRCMjcwMUE3ODRCQUYwMDZF
NEU2NiAvKiBCaW5hcnlTd2l0Y2guaCAqLywKIAkJCQk2NUI4MzkyRDFCQUNBOUQzMDA0NEU4MjQg
LyogQ2FjaGVkUmVjb3ZlcnkuY3BwICovLApAQCAtOTgwNSw2ICs5ODA4LDcgQEAKIAkJCQkwRjJD
NjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJE
RDAwMDgyNkUwMzlCOTAwNTRFNDA4IC8qIEJhc2VsaW5lSklUQ29kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzIzOTk4RjcyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzI0MDAwRjcyODJEQkNEQjEwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVn
aXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzNUU4OUZEMjVDNTBGODcwMDcxRUUxRSAvKiBCaWdJbnQ2NEFycmF5LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLm9yaWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvai5vcmlnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2
YmRmZTA3NTM4NDUyODg4ODIwY2NiNjQzOWZiMjcwM2VjNTZmZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvai5vcmlnCkBAIC0wLDAgKzEsMTM0NzQgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNo
aXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA1MTsK
KwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwor
CQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2
ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMTRCRDY4OTkyMTUxOTE2RDAwNTBE
QUZGIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBP
ZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CisJCTE0
QkQ2ODhGMjE1MTkxNDUwMDUwREFGRiAvKiBMTEludCBTZXR0aW5ncyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNEJENjg5
MzIxNTE5MTQ1MDA1MERBRkYgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dy
ZWdhdGVUYXJnZXQgIkxMSW50IFNldHRpbmdzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CTE0QkQ2ODkyMjE1MTkxNDUwMDUwREFGRiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0QkQ2ODkwMjE1MTkxNDUwMDUwREFG
RiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgU2V0
dGluZ3MiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKKwkJNTMy
NUJEQkYyMURGRjJCMTAwQTBERUUxIC8qIEFwcGx5IENvbmZpZ3VyYXRpb24gdG8gWENGaWxlTGlz
dHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gNTMyNUJEQzQyMURGRjJCMjAwQTBERUUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBcHBseSBDb25maWd1cmF0aW9uIHRvIFhD
RmlsZUxpc3RzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTUzMjVCREM1MjFERkYyQkEw
MEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkpOworCQkJbmFtZSA9ICJBcHBseSBDb25maWd1cmF0aW9uIHRvIFhDRmlsZUxpc3RzIjsKKwkJ
CXByb2R1Y3ROYW1lID0gIkFwcGx5IENvbmZpZ3VyYXRpb24gdG8gWENGaWxlTGlzdHMiOworCQl9
OworCQk1M0I0QkQwNDFGNjhBRjg5MDBEMkJFQTMgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDUzQjRCRDBBMUY2OEFGODkwMEQyQkVBMyAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCURERTk5MzIzMjc4RTRDQ0YwMEY2MEQyNiAvKiBQ
cm9kdWN0IERlcGVuZGVuY2llcyAqLywKKwkJCQk1M0I0QkQwOTFGNjhBRjg5MDBEMkJFQTMgLyog
R2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgK
KwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFVuaWZpZWQgU291cmNlcyI7CisJCQlwcm9kdWN0
TmFtZSA9ICJPZmZsaW5lIEFzc2VtYmxlciI7CisJCX07CisJCTVENkIyQTQ3MTUyQjlFMTcwMDUy
MzFERSAvKiBUZXN0IFRvb2xzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDVENkIyQTRDMTUyQjlFMTcwMDUyMzFERSAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVGVzdCBUb29s
cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkJNTJDRDBGNjYyMjQyRjVBMzAwNEExOEE1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJNzk1NEJFMEQyMEI2MzM0ODAwOUJDODNBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJRkU1MzNDQUYxRjIxN0VDNjAwMTZBMUZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJMEY2MTgzNDcxQzQ1RjY3QTAwNzI0NTBCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJMEY5MzI3NUQxQzIwQkYzQTAwQ0Y2NTY0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJMEZFQzg1QjExQkRCNUQ4RjAwODBGRjc0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJNUQ2QjJBNEYxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJNUQ2QjJBNTExNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkJNUQ2QjJBNTUxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkpOworCQkJbmFtZSA9ICJUZXN0IFRvb2xzIjsKKwkJCXByb2R1Y3ROYW1lID0gIlRlc3QgVG9v
bHMiOworCQl9OworCQk2NTc4OEE5RDE4QjQwOUVCMDBDMTg5RkYgLyogT2ZmbGluZSBBc3NlbWJs
ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gNjU3ODhBQTIxOEI0MDlFQjAwQzE4OUZGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJPZmZsaW5lIEFzc2VtYmxlciIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQlEREU5OTMwQzI3OEQwODNEMDBGNjBEMjYgLyogUHJvZHVj
dCBEZXBlbmRlbmNpZXMgKi8sCisJCQkJNjU3ODhBQTAxOEI0MDlFQjAwQzE4OUZGIC8qIE9mZmxp
bmUgQXNzZW1ibGUgKi8sCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTY1MjQ0QkQz
MThFQ0I1MDAwMDEwQjcwOCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY1Nzg4QTlF
MThCNDA5RUIwMEMxODlGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5h
bWUgPSAiT2ZmbGluZSBBc3NlbWJsZXIiOworCQkJcHJvZHVjdE5hbWUgPSAiT2ZmbGluZSBBc3Nl
bWJsZXIiOworCQl9OworCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3Vy
Y2VzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKKwkJ
CWJ1aWxkUGhhc2VzID0gKAorCQkJCURERTk5MzExMjc4RDA4ODgwMEY2MEQyNiAvKiBQcm9kdWN0
IERlcGVuZGVuY2llcyAqLywKKwkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJh
dGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTM3NEY5NUM5MjA1Rjk5NzUwMDJCRjY4RiAvKiBN
YWtlIGxpYldURi5hIFN5bWJvbGljIExpbmsgKi8sCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJKTsKKwkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CisJCX07CisJCTkzMkY1QkUzMDgyMkExQzcwMDczNjk3NSAvKiBB
bGwgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQ5QzI3NkMwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovOworCQkJYnVpbGRQaGFzZXMg
PSAoCisJCQkJNURGN0UxQ0MxODhFNkI4NzAwM0Y5QTQ2IC8qIENvcHkganNjIGludG8gSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovLAorCQkJCTUzOTk2NkUzMjM3Q0Q2NzQwMDMzQjBEMiAvKiBD
cmVhdGUgVmVyc2lvbnMvQ3VycmVudC9IZWxwZXJzIHN5bWxpbmsgKi8sCisJCQkpOworCQkJZGVw
ZW5kZW5jaWVzID0gKAorCQkJCTkzMkY1QkU3MDgyMkExQzcwMDczNjk3NSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAorCQkJCTVENjlFOTEyMTUyQkU1NDcwMDI4RDcyMCAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAorCQkJCTVENkIyQTU3MTUyQjlFMkUwMDUyMzFERSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBBbGw7CisJCQlwcm9kdWN0TmFtZSA9IEFs
bDsKKwkJfTsKKwkJRTFBQzJFMjcyMEY3Qjk0QzAwQjA4OTdEIC8qIFVubG9jayBLZXljaGFpbiAq
LyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNENGQjEwNTIzMDM1RUYzMDBGMDA0OEMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlVubG9jayBLZXljaGFpbiIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQlFMUFDMkUyQzIwRjdCOTU4MDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovLAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gIlVu
bG9jayBLZXljaGFpbiI7CisJCQlwcm9kdWN0TmFtZSA9ICJVbmxvY2sga2V5Y2hhaW4iOworCQl9
OworLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCisJCTBGMDEyMzMzMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdWYWx1
ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjAxMjMzMTE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJlbmd0aC5oICovOyB9Owor
CQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3
OUEgLyogR2V0QnlWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYwMzMyQzYxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMzMyQzUxOEI1
M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWln
aHRlZFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwNDM5NkUxQjAz
REMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDQzOTZDMUIwM0RDMEIwMDk1OThCNyAvKiBE
RkdDb21iaW5lZExpdmVuZXNzLmggKi87IH07CisJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAv
KiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oICovOyB9OworCQkwRjA3MEE0NzFENTQzQThCMDA2RTcy
MzIgLyogQ2VsbENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwNzBBNDIxRDU0M0E4OTAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjA3MEE0
ODFENTQzQTkwMDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lcklubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDcwQTQzMUQ1NDNBODkwMDZFNzIz
MiAvKiBDZWxsQ29udGFpbmVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMDcwQTQ5MUQ1NDNBOTMwMDZFNzIzMiAvKiBIZWFwQ2Vs
bElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMDcwQTQ0MUQ1NDNBODkwMDZFNzIzMiAvKiBIZWFwQ2VsbElubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjA3MEE0QjFENTQzQTk4
MDA2RTcyMzIgLyogUHJlY2lzZUFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDcwQTQ2MUQ1NDNBODkwMDZFNzIzMiAvKiBQcmVjaXNl
QWxsb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNzc2QkQx
NEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjI4NkIxRUI4RTZDRjAwMEVC
NUQyIC8qIEpTV2Vha1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEIyODZBMUVCOEU2Q0QwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjI4
NkQxRUI4RTZENTAwMEVCNUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCMjg2ODFFQjhFNkNE
MDAwRUI1RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgz
QTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJD
RjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNCMTE0QkNGNzE4MDA4ODVCNEYg
LyogQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNBRjE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0FFRkMxRUM0
REE2QjAwOTcwRDEyIC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENBRUZBMUVDNERBNjIwMDk3MEQxMiAv
KiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQ0FFRkYxRUM0REE4ODAwOTcwRDEyIC8qIEhlYXBGaW5h
bGl6ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQ0FFRkUxRUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMENE
NEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENENEMwMTVGMUE2MDQwMDMyRjFD
MCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjEwRjFBMzFDNDIwQkYwMDAxQzA3RDIgLyogQWlyQ3VzdG9t
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEwRjFB
MjFDNDIwQkYwMDAxQzA3RDIgLyogQWlyQ3VzdG9tLmggKi87IH07CisJCTBGMTJERTEwMTk3OUQ1
RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEyREUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9u
RnV6ei5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzNkQ0QjE3NEFENjlCMDA3NUIzNTQgLyog
RGVmZXJHQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5MTI1
MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjEzOTEyQzE2NzcxQzNE
MDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8q
IFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJ
ZEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE1Q0QyMTFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYxNUYxNUYxNEI3QTczRTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MTgyOTY5MUU5MkVFNTQwMDVCMUVBOCAvKiBBaXJMaXZlbmVzc0FkYXB0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTgyOTY4MUU5MkVFNTEwMDVC
MUVBOCAvKiBBaXJMaXZlbmVzc0FkYXB0ZXIuaCAqLzsgfTsKKwkJMEYxOEQzRDAxQjU1QTZFMDAw
MkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxOEQzQ0UxQjU1QTZFMDAwMkM1QzlG
IC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyB9OworCQkwRjE5MENBRDE4
OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxOTBDQUIxODlEODJGNjAwMEFFNUYw
IC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjFDM0REQTFCQkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFD
M0REOTFCQkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYxREQ4NEExOEE5NDVCRTAwMjZGM0ZBIC8q
IEpTQ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMUREODQ5MThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYxRTNBNDYxNTM0Q0JBRjAw
MEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1
bWVudFBvc2l0aW9uLmggKi87IH07CisJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdE
b3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggKi87IH07CisJCTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3Rl
clNhdmVQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
ICovOyB9OworCQkwRjFGQjM4RjFFMTczQTY3MDBBOUJFNTAgLyogU3luY2hyb25vdXNTdG9wVGhl
V29ybGRNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjFGQjM4QjFFMTczQTYyMDBBOUJFNTAgLyogU3luY2hyb25vdXNTdG9w
VGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmggKi87IH07CisJCTBGMUZCMzk5MUUxRjY1RkIwMEE5
QkU1MCAvKiBNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjFGQjM5ODFFMUY2NUY5MDBBOUJFNTAgLyogTXV0YXRvclNjaGVk
dWxlci5oICovOyB9OworCQkwRjFGRTUxQzE5MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUZFNTFC
MTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjAxNzgwMURDQURDMzUwMEVBNTk1MCAvKiBE
RkdGbG93SW5kZXhpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMjAxNzdFMURDQURDMzAwMEVBNTk1MCAvKiBERkdGbG93SW5kZXhpbmcuaCAqLzsg
fTsKKwkJMEYyMDE3ODIxRENBREQ0MjAwRUE1OTUwIC8qIERGR0Zsb3dNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzgxMURDQURENDAwMEVB
NTk1MCAvKiBERkdGbG93TWFwLmggKi87IH07CisJCTBGMjAxNzg1MURDQUUxNDkwMEVBNTk1MCAv
KiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1By
b2plY3Rpb24uaCAqLzsgfTsKKwkJMEYyMDE3ODkxRENCOTQyNDAwRUE1OTUwIC8qIERGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMDE3ODgxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0cmFjdFZhbHVl
UGFpci5oICovOyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFy
Z3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMzVCRDYxNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkMwMTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMzVCRDcxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFN0YWNr
bWFwQXJndW1lbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjIzNUJDMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMU3RhY2ttYXBBcmd1bWVudExp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJDNTE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMRXhpdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkM3MTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMzVCRTAxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMzVCQ0ExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjM1QkUyMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkNDMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIz
NUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkU4MTcxNzhFNzMwMDY5MEM3RiAv
KiBERkdPU1JFeGl0QmFzZS5oICovOyB9OworCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyog
QXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NDIx
N0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxs
SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzRTE3RUE5RjU5MDBBQkIyMTcg
LyogRlBSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjRFNTQ0MTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTUzRjE3RUE5RjU5MDBBQkIy
MTcgLyogR1BSSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0NjE3RUUy
NzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1w
UmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjRFNTQ4MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjI0RTU1MjE3RUUy
NzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU0QjE3RUUyNzQ5MDBBQkIyMTcg
LyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyNEU1NTYxN0YwQjcxQzAwQUJCMjE3IC8qIElubGlu
ZUNhbGxGcmFtZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyNEU1NTQxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjU2QzM2
MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNTZD
MzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggKi87IH07CisJCTBGMjVGMUIyMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENh
bGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjVG
MUFCMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjI1RjFCNDE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI1RjFBRDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhD
YWxsS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYyQUM1NjcxRThBMEI3OTAwMDFFRTNGIC8qIEFpckZpeFNwaWxsc0FmdGVyVGVybWluYWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJBQzU2
NTFFOEEwQjc2MDAwMUVFM0YgLyogQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuaCAqLzsgfTsK
KwkJMEYyQUM1NkIxRThBMEJENTAwMDFFRTNGIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3Rh
Y2tCeUxpbmVhclNjYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkFDNTY5MUU4QTBCRDEwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0Fu
ZFN0YWNrQnlMaW5lYXJTY2FuLmggKi87IH07CisJCTBGMkFDNTZGMUU4RDdCMDMwMDAxRUUzRiAv
KiBBaXJQaGFzZUluc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQUM1NkQxRThEN0FGRjAwMDFFRTNGIC8qIEFpclBoYXNlSW5zZXJ0
aW9uU2V0LmggKi87IH07CisJCTBGMkFDNTcxMUU4RUU0NTQwMDAxRUUzRiAvKiBBaXJGb3JtVGFi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkFD
NTcwMUU4RUU0NTIwMDAxRUUzRiAvKiBBaXJGb3JtVGFibGUuaCAqLzsgfTsKKwkJMEYyQjY2QUMx
N0I2QjUzRjAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBODE3QjZCNTNEMDBBN0FFM0Yg
LyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyQjY2QUUxN0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZB
QTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZBRjE3QjZCNTQ1
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZBQjE3QjZCNTNEMDBBN0FF
M0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2REYxN0I2QjVBQjAwQTdBRTNG
IC8qIERhdGFWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZCMTE3QjZCNUFCMDBBN0FFM0YgLyogRGF0YVZpZXcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZFMDE3QjZCNUFCMDBB
N0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCMjE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyQjY2RTExN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkI2NkIzMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYyQjY2RTMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkI1MTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0FycmF5QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQjY2QjcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2
NkU3MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCOTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkU5MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0FycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2
RUExN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QkMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0RhdGFWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZCRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkVFMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRh
Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzExN0I2
QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCNjZDMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZGMTE3QjZC
NUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkMzMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZDNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QzUxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CisJCTBGMkI2
NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM2MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZGNTE3QjZC
NUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM3MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkY2MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM4MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjZG
NzE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0lu
dDhBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMkI2NkY4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDE2QXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkNBMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0ludDE2QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjJCNjZGOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZD
QjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2Q0QxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJh
eUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMkI2NkZEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJC
NjZDRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2NkZGMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZEMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMkI2NzAwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkQyMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU1VpbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCNjcwMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50OENsYW1wZWRB
cnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjcwMjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjJCNjcwMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVWludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MkI2NzA2MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkQ4MTdCNkI1QUIwMEE3
QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCNjcwODE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRB
cnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkI2NkRBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkI2
NzA5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2REIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5
cGVkQXJyYXlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyQjY3MEIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZERDE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJCOUNFMzE5RDBCQTdEMDBCMUQxQjUgLyogREZHQXZh
aWxhYmlsaXR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCOUNENzE5RDBCQTdEMDBCMUQxQjUgLyogREZHQXZhaWxhYmlsaXR5TWFwLmggKi87
IH07CisJCTBGMkI5Q0U3MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJCOUNEQjE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5oICovOyB9OworCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQjlDREQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEuaCAqLzsgfTsKKwkJMEYyQjlDRUIxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNo
aWxkcmVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJCOUNERjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCAqLzsgfTsKKwkJMEYy
QjlDRUQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCOUNFMTE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLzsgfTsKKwkJMEYyQjlDRjUx
OUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRQcm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCOUNFRjE5RDBCQUMxMDBCMUQxQjUg
LyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRp
bWVPYmplY3RNYXRlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkI5Q0YxMTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0VGltZU9i
amVjdE1hdGVyaWFsaXphdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGMkI5Q0Y5MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExPcGVyYXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCOUNG
MzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMkJCRDk2MUM1RkYzRjUwMDIzRUYyMyAv
KiBCM1NwYXJzZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkJCRDkxMUM1RkYzRjUwMDIzRUYyMyAvKiBCM1NwYXJzZUNvbGxlY3Rp
b24uaCAqLzsgfTsKKwkJMEYyQkJEOTgxQzVGRjNGNTAwMjNFRjIzIC8qIEIzVmFyaWFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJCRDkzMUM1
RkYzRjUwMDIzRUYyMyAvKiBCM1ZhcmlhYmxlLmggKi87IH07CisJCTBGMkJCRDlBMUM1RkYzRjUw
MDIzRUYyMyAvKiBCM1ZhcmlhYmxlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJCRDk1MUM1RkYzRjUwMDIzRUYyMyAvKiBCM1ZhcmlhYmxl
VmFsdWUuaCAqLzsgfTsKKwkJMEYyQkJEOUUxQzVGRjQwNTAwMjNFRjIzIC8qIEFpclN0YWNrU2xv
dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkJCRDlDMUM1RkY0MDUwMDIzRUYyMyAvKiBBaXJTdGFja1Nsb3RLaW5kLmggKi87IH07CisJCTBG
MkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAg
LyogREZHRml4dXBQaGFzZS5oICovOyB9OworCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyog
REZHSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJCREMxRjE1MUU4MDM4MDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggKi87
IH07CisJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMkIxNTFGREU4QjAwQ0Q4
OTEwIC8qIE9wZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyQkRDNDUxNTIyODAxQjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkR3JhcGgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzNE
MTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmllZEdyYXBoLmggKi87IH07CisJCTBGMkJEQzQ2
MTUyMjgwMjAwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzNFMTUyMjgwMTcwMENEODkxMCAvKiBE
RkdNaW5pZmllZE5vZGUuaCAqLzsgfTsKKwkJMEYyQkRDNDgxNTIyODAyOTAwQ0Q4OTEwIC8qIERG
R1ZhbHVlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJCREM0MDE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCAqLzsgfTsK
KwkJMEYyQkRDNDkxNTIyODA5NjAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzQxMTUyMjgwMTcw
MENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi87IH07CisJCTBGMkJEQzRCMTUyMjgwOUQw
MENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREM0MzE1MjI4MDE3MDBDRDg5MTAgLyogREZH
VmFyaWFibGVFdmVudFN0cmVhbS5oICovOyB9OworCQkwRjJDNjNBQTFFNEZBNDJFMDBDMTM4Mzkg
LyogUnVubmluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjJDNjNBOTFFNEZBNDJDMDBDMTM4MzkgLyogUnVubmluZ1Njb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQzYzQjAxRTYw
QUU0MzAwQzEzODM5IC8qIEIzQmFuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzYzQUMxRTYwQUUzQzAwQzEzODM5IC8qIEIzQmFuay5oICovOyB9
OworCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQUUxRTYwQUUzRDAwQzEzODM5
IC8qIEIzV2lkdGguaCAqLzsgfTsKKwkJMEYyQzYzQjcxRTYzNDNFRDAwQzEzODM5IC8qIEIzQXRv
bWljVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggKi87IH07CisJCTBG
MkM2M0I4MUU2MzQzRjcwMEMxMzgzOSAvKiBCM0dlbmVyaWNCbG9ja0luc2VydGlvblNldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQjUxRTYz
NDNFODAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBG
MkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQkExRTYzNDQwODAw
QzEzODM5IC8qIEFpckJsb2NrSW5zZXJ0aW9uU2V0LmggKi87IH07CisJCTBGMkM2M0MyMUU2NjRB
NUMwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZl
VHJhaXRzLmggKi87IH07CisJCTBGMkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZh
bHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQzYzQzMxRTY5RUY5MjAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87
IH07CisJCTBGMkQ0RERFMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5ODMyRDM0
MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNT
dGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkQ0REU2MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjJENERFQTE5ODMyREFDMDA3RDRC
MTkgLyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyRDRERUMx
OTgzMkRDNDAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5
cGVQcm9maWxlckxvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMkQ0REYwMTk4MzJERDYwMDdENEIxOSAvKiBUeXBlU2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNDE5ODMyRDkxMDA3
RDRCMTkgLyogVHlwZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMkREODEyMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjJERDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5oICovOyB9OworCQkwRjJERDgxNDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRz
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJERDgwRjFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzVXRpbGl0aWVzLmggKi87
IH07CisJCTBGMkREODE1MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdGb3JBbGxLaWxscy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyREQ4MTAxQUIzRDhC
RTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggKi87IH07CisJCTBGMkU4OTJDMTZEMDI4QUQw
MDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9pbnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdNaW5pZmllZElELmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIg
LyogREZHTWluaWZpZWRJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMkZDNzczMTZFMTJGNzQwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRkM3NzExNkUx
MkY2RjAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggKi87IH07CisJCTBGMkZDQ0ZBMThBNjAwNzAw
MDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRkNDRjMxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR0dyYXBo
U2FmZXBvaW50LmggKi87IH07CisJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjMwMEI3NzE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oICovOyB9OworCQkwRjMw
MEI3QzE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzAwQjdBMThB
QjFCMTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oICovOyB9Owor
CQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMENCNUQxRkNFNDZCNDAw
NEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjMwRDdDMDFEOTVENjMyMDA1MzA4OUQgLyogQ1BVLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMwRDdCRjFE
OTVENjJGMDA1MzA4OUQgLyogQ1BVLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYzMEZCNjExREMyREU5OTAwMzEyNEYyIC8qIEFycmF5QnVmZmVy
U2hhcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMzBGQjYwMURDMkRFOTYwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzMkJE
MTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMyQkQwRjFCQjM0RjE5MDA5M0E1N0YgLyog
SGVhcEhlbHBlclBvb2wuaCAqLzsgfTsKKwkJMEYzMzhERjIxQkU5M0FEMTAwMTNDODhGIC8qIEIz
U3RhY2ttYXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYzMzhERjAxQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5oICovOyB9
OworCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMzOERGNDFCRTkz
RDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggKi87IH07CisJCTBGMzM4REZBMUJF
OTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REY4MUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxs
VmFsdWUuaCAqLzsgfTsKKwkJMEYzMzhERkUxQkVENTEyNzAwMTNDODhGIC8qIEFpclNpbXBsaWZ5
Q0ZHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMz
OERGQzFCRUQ1MTI3MDAxM0M4OEYgLyogQWlyU2ltcGxpZnlDRkcuaCAqLzsgfTsKKwkJMEYzMzhF
MEUxQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4RTAyMUJGMDI3NkMwMDEzQzg4RiAvKiBC
M0RhdGFTZWN0aW9uLmggKi87IH07CisJCTBGMzM4RTEwMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01v
dmVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLzsgfTsK
KwkJMEYzMzhFMTUxQkYwMjc2QzAwMTNDODhGIC8qIEIzVmFsdWVLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4RTA5MUJGMDI3NkMwMDEzQzg4
RiAvKiBCM1ZhbHVlS2V5LmggKi87IH07CisJCTBGMzM4RTE2MUJGMDI3NkMwMDEzQzg4RiAvKiBC
M1ZhbHVlS2V5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzMzhFMEExQkYwMjc2QzAwMTNDODhGIC8qIEIzVmFsdWVLZXlJbmxpbmVzLmgg
Ki87IH07CisJCTBGMzM4RTFDMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2NrSW5zZXJ0aW9uU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMzOEUx
ODFCRjI4NkVBMDAxM0M4OEYgLyogQjNCbG9ja0luc2VydGlvblNldC5oICovOyB9OworCQkwRjMz
OEUxRTFCRjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMzhFMUExQkYyODZFQTAwMTNDODhGIC8q
IEIzTG93ZXJNYWNyb3MuaCAqLzsgfTsKKwkJMEYzM0ZDRjgxQzEzNkUyNTAwMzIzRjY3IC8qIEIz
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjMzRkNGNjFDMTM2RTI1MDAzMjNGNjcgLyogQjNTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMuaCAqLzsgfTsKKwkJMEYzM0ZDRkIxQzE2MjVCRTAwMzIzRjY3IC8qIEIz
Q0ZHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMz
RkNGOTFDMTYyNUJFMDAzMjNGNjcgLyogQjNDRkcuaCAqLzsgfTsKKwkJMEYzM0ZDRkMxQzE2MjVC
RTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzM0ZDRkExQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9y
cy5oICovOyB9OworCQkwRjM0QjE0QTE2RDQyMDEzMDAxQ0RBNUEgLyogREZHVXNlS2luZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNDgxNkQ0
MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLzsgfTsKKwkJMEYzNzMwOEQxQzBCRDI5MTAw
MDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMzczMDhCMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVu
LmggKi87IH07CisJCTBGMzczMDhGMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzczMDhFMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjM3MzA5MTFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYzNzMwOTMxQzBENjdFRTAwMDUyQkZBIC8qIEFpclVzZUNvdW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOTIxQzBENjdFRTAwMDUy
QkZBIC8qIEFpclVzZUNvdW50cy5oICovOyB9OworCQkwRjM4QjAxMjE3Q0YwNzgzMDBCMTQ0RDMg
LyogTExJbnRFbnRyeXBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjM4QjAxMDE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzOEQy
QTIxRDQ0MTk2ODAwNjgwNDk5IC8qIEF1eGlsaWFyeUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYzOEQyQTMxRDQ0MTk2RDAwNjgwNDk5IC8qIEF1eGlsaWFyeUJhcnJp
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjM4RDJBMTFENDQxOTY2MDA2ODA0OTkgLyogQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjM5MkM4
QTFCNDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzkyQzg4MUI0NjE4ODQwMDg0NDcyOCAvKiBE
RkdPU1JFeGl0RnV6ei5oICovOyB9OworCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGM0ExQkY4MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5oICovOyB9OworCQkwRjNBQzc1MjE4M0VBMTA0MDAzMjAyOUYgLyogU3RhY2tBbGln
bm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
M0FDNzUxMTgzRUExMDQwMDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0FDNzU0MTg4RTVFQzgwMDMy
MDI5RiAvKiBFeGl0aW5nSklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQUM3NTMxODhFNUVDODAwMzIwMjlGIC8qIEV4aXRpbmdKSVRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYz
QjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1M0U2OEVG
MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLzsgfTsKKwkJMEYzQjNBMjgx
NTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI1MTU0NEM5OTEwMDNF
RDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi87IH07CisJCTBGM0IzQTJDMTU0
NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlk
YXRlLmggKi87IH07CisJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjdFMjUx
OUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERG
R0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCAqLzsgfTsKKwkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzIxQzQ1
RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNv
ZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQwRTRBOTFD
NDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJP
cGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDE1NDVCMUZEMjBCMjIwMDFCNThGNiAvKiBDb25zdHJhaW50Q29uY3VycmVuY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDE1NDVB
MUZEMjBCMUYwMDFCNThGNiAvKiBDb25zdHJhaW50Q29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3Zlcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQy
NkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYg
LyogVmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2
MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NDc2NzAyMEM1RTJCNDAwOEIyQzM2IC8qIFN0dWJJ
bmZvU3VtbWFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NDc2NkYyMEM1RTJCMjAwOEIyQzM2IC8qIFN0dWJJbmZvU3VtbWFyeS5oICovOyB9Owor
CQkwRjQ0QTdCMDIwQkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAv
KiBFeGl0RmxhZy5oICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGlu
Z0lubGluZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDRBN0E3MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBC
RjY4Q0UwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVz
TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NEE3QjMyMEJGNjhEMTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FBMjBCRjY4NUUwMDIy
QjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi87IH07CisJCTBGNDRBN0I0MjBCRjY4RDkwMDIy
QjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luLmggKi87IH07CisJCTBGNDU3MDM5MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJF
bGltaW5hdGVEZWFkQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2Rl
LmggKi87IH07CisJCTBGNDU3MDNEMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVn
aXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ1NzAzQjFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovOyB9
OworCQkwRjQ1NzA0MTFCRTU4NENBMDA2MkE2MjkgLyogQjNUaW1pbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwM0YxQkU1ODRDQTAw
NjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCAqLzsgfTsKKwkJMEY0NjgwODIxNEJBNTcyRDAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
QTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcy
MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IH07CisJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuaCAqLzsgfTsKKwkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8qIERGR0Fy
aXRoTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0ODUzMjAxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oICovOyB9OworCQkwRjQ4
NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI0MTg3REZERUMwMDgz
QjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0OUU5QUEy
MEFCNEQwMDAwMUNBMEFBIC8qIEluc3RhbmNlT2ZBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ5RTlBODIwQUI0Q0ZCMDAxQ0EwQUEg
LyogSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCAqLzsgfTsKKwkJMEY0QTM4RkExQzhFMTNERjAwMTkw
MzE4IC8qIFN1cGVyU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0QTM4RjgxQzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNEFFMDQz
MUZFMEQyNTcwMEUyMDgzOSAvKiBJbmZlcnJlZFZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0QUUwNDIxRkUwRDI1NDAwRTIwODM5
IC8qIEluZmVycmVkVmFsdWVJbmxpbmVzLmggKi87IH07CisJCTBGNEI5NERDMTdCOUYwNzUwMERE
MDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJ
bmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0QzkxNjYxQzI5RjRGMjAwNDM0MUE2IC8qIEIzT3JpZ2luRHVtcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0QzkxNjUxQzI5RjRGMjAwNDM0
MUE2IC8qIEIzT3JpZ2luRHVtcC5oICovOyB9OworCQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMg
LyogVmlzaXRDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjREOEM3MjFGQzdBOTczMDAxRDMyQUMgLyogVmlzaXRDb3VudGVyLmggKi87IH07
CisJCTBGNEQ4Qzc1MUZDN0E5N0QwMDFEMzJBQyAvKiBDb25zdHJhaW50UGFyYWxsZWxpc20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEQ4QzczMUZD
N0E5NzQwMDFEMzJBQyAvKiBDb25zdHJhaW50UGFyYWxsZWxpc20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMy
QUMgLyogU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEQ4Qzc3MUZDQTNDRjMwMDFEMzJBQyAvKiBTaW1wbGVN
YXJraW5nQ29uc3RyYWludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3Bp
bGxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRE
RTFDRDFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1NwaWxscy5oICovOyB9OworCQkw
RjRGMTFFODIwOUJDREFCMDA3MDk2NTQgLyogQ29tcGlsZXJUaW1pbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RjExRTYyMDlCQ0RBMTAw
NzA5NjU0IC8qIENvbXBpbGVyVGltaW5nU2NvcGUuaCAqLzsgfTsKKwkJMEY0RjExRUIyMDlENDI2
NjAwNzA5NjU0IC8qIERGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEYxMUVBMjA5RDQyNjMwMDcwOTY1
NCAvKiBERkdBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmggKi87IH07CisJCTBGNEYyOUUwMThC
NkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0RjI5REUx
OEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNl
LmggKi87IH07CisJCTBGNEY4MjhDMUUzMUI5NzYwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VU
aW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0RjgyOEExRTMxQjk3MTAwNzUxODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRp
bWVNdXRhdG9yU2NoZWR1bGVyLmggKi87IH07CisJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAv
KiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTBBRjNCMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1
cmVDbG9iYmVyU3RhdGUuaCAqLzsgfTsKKwkJMEY1MTkzRjcyNjZDNDMyRDAwNDgzQTJDIC8qIEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTE5M0Y2MjY2QzQzMkQwMDQ4M0EyQyAvKiBFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY1NTEzQTYxRDVBNjgyQzAwQzMyQkQ4IC8qIEZyZWVMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1MTNBNTFENUE2ODJBMDBDMzJCRDgg
LyogRnJlZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU5ODk3MTdD
ODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNTZBMUQzMTUwMDBGMzUw
MDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9u
Q291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NzJENEQxNjg3OUZEQjAw
RTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1NzgwQTIxOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTc4MEEx
MThGRTFFOTgwMDFFNzJEOSAvKiBQdXJlTmFOLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01h
eUV4aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NTg3NEVDMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmggKi87IH07CisJCTBGNUExMjc0
MTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUExMjcyMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2Vz
R0MuaCAqLzsgfTsKKwkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUE2Mjgy
MTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY1QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8q
IFZNSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNUI0QTMzMUM4NEYwRDYwMEYx
QjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI0QTMyMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJl
dHVyblR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjVCRjE2NDFGMjMxNzEyMDAyOUQ5MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJG
MTYyMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oICovOyB9
OworCQkwRjVCRjE2NzFGMjNBMDk4MDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTY2MUYyM0EwOTgw
MDI5RDkxRCAvKiBCM0JhY2t3YXJkc0NGRy5oICovOyB9OworCQkwRjVCRjE2OTFGMjNBMEFBMDAy
OUQ5MUQgLyogQjNOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNUJGMTY4MUYyM0EwQUEwMDI5RDkxRCAvKiBCM05hdHVyYWxMb29w
cy5oICovOyB9OworCQkwRjVCRjE2QjFGMjNBMEMxMDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNEb21p
bmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjVCRjE2QTFGMjNBMEMxMDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNEb21pbmF0b3JzLmggKi87IH07
CisJCTBGNUJGMTcxMUYyM0E1QTEwMDI5RDkxRCAvKiBCM0Vuc3VyZUxvb3BQcmVIZWFkZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE2RjFG
MjNBNUExMDAyOUQ5MUQgLyogQjNFbnN1cmVMb29wUHJlSGVhZGVycy5oICovOyB9OworCQkwRjVD
Rjk4MTFFOTZGMTdGMDBDMTg2OTIgLyogQWlyVG1wTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4MDFFOTZGMTdEMDBDMTg2OTIgLyogQWly
VG1wTWFwLmggKi87IH07CisJCTBGNUNGOTg0MUU5RDUzNzcwMEMxODY5MiAvKiBBaXJMb3dlclN0
YWNrQXJncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1Q0Y5ODMxRTlENTM3NTAwQzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggKi87IH07CisJ
CTBGNUNGOTg5MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNGOTg3MUU5RUQ2NEUw
MEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLzsgfTsKKwkJMEY1RTBGRDgyMDdDNzI3
MzAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJDbG9iYmVyU3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUwRkQ2MjA3QzcyNzEw
MDk3RjBERSAvKiBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi87IH07CisJ
CTBGNUUwRkU3MjA4NkFENDgwMDk3RjBERSAvKiBJc29TdWJzcGFjZVBlclZNLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMEZFNTIwODZBRDQ2MDA5
N0YwREUgLyogSXNvU3Vic3BhY2VQZXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVG
OTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYwRkU5MDFGRkMzNzAyMDAwMzMyMEEgLyog
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYx
ODMyMTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJ
CTBGNjE4MzJEMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMjQxQzQ1QkYwNzAwNzI0
NTBCIC8qIEFpckVtaXRTaHVmZmxlLmggKi87IH07CisJCTBGNjE4MzJGMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzI2MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlckFm
dGVyUmVnQWxsb2MuaCAqLzsgfTsKKwkJMEY2MTgzMzExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxv
d2VyTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMyODFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJNYWNyb3MuaCAqLzsgfTsKKwkJ
MEY2MTgzM0MxQzQ1RjYyQTAwNzI0NTBCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2
QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQkwRjYxODMzRDFDNDVG
NjJBMDA3MjQ1MEIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJMEY2MTgzNDUxQzQ1RjY2MDAw
NzI0NTBCIC8qIHRlc3RhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MTgzNDQxQzQ1RjY2MDAwNzI0NTBCIC8qIHRlc3RhaXIuY3BwICovOyBz
ZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItTzAgLURSRUxFQVNFX1dJVEhPVVRfT1BUSU1J
WkFUSU9OUyI7IH07IH07CisJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAq
LzsgfTsKKwkJMEY2MjAxNzYxNDNGQ0QzQjAwNjhCNzdDIC8qIERGR0Jhc2ljQmxvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcwMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmggKi87IH07CisJCTBGNjIwMTc3MTQzRkNEM0Yw
MDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJh
Y3RWYWx1ZS5oICovOyB9OworCQkwRjYyMzc5ODFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRv
bUluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYyMzc5NjFBRTQ1Q0E3MDBENDAyRUEgLyogREZHUGhhbnRvbUluc2VydGlvblBo
YXNlLmggKi87IH07CisJCTBGNjM5NDNGMTVDNzVGMTkwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZS5oICovOyB9OworCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQ1MjE1
RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjM5NDc2MTVEQ0UzNDcwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmggKi87IH07CisJCTBGNjM5NDg1MTVFNDgxMUIwMDZBNTk3QyAvKiBERkdB
cnJheU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCAqLzsgfTsKKwkJMEY2
NDUzMTgxRkQyNDZBNzAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0NTMxNTFGRDI0
NkEwMDAyNDMyQTEgLyogTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQuaCAqLzsgfTsKKwkJMEY2
NEIyNzIxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEIyNzAxQTc4NEJBRjAwNkU0RTY2IC8q
IEJpbmFyeVN3aXRjaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEIyNzgxQTc5NTdCMjAw
NkU0RTY2IC8qIENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRFQUYy
MUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi87IH07CisJCTBGNjU4NUUxMUVF
MDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjU4NUUwMUVFMDgwNTcwMDk1MTc2RCAvKiBGcmVl
TGlzdElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjY2MEUzODFFMDUxN0JCMDAzMTQ2MkMgLyogTWFya2luZ0NvbnN0cmFpbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjYwRTM0MUUw
NTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNjYwRTNBMUUwNTE3QzEwMDMxNDYyQyAv
KiBNYXJraW5nQ29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NjBFMzYxRTA1MTdCODAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJh
aW50U2V0LmggKi87IH07CisJCTBGNjY0Q0U4MURBMzA0RUYwMEIwMEExMSAvKiBDb2RlQmxvY2tT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovOyB9
OworCQkwRjY2NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjY2NkVDMTE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJGMTgzNTY2Rjkw
MEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNjY2RUM3MTgzNTY3MkIwMEQwMTdGMSAvKiBE
RkdBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjY2RUMzMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuaCAqLzsg
fTsKKwkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZFMTY4MTRERjNG
MTMwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggKi87IH07CisJCTBGNjZFMTZDMTRERjNG
MTYwMEI3QjJFNCAvKiBERkdFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjY2RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovOyB9
OworCQkwRjY4MkZCMzE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2ODJGQjExOUJDQjM2
NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0b3IuaCAqLzsgfTsKKwkJMEY2OTcxRUExRDkyRjQy
NDAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2OTcxRTkxRDkyRjQyMTAwQkEwMkE1IC8qIEIzRmVuY2VWYWx1
ZS5oICovOyB9OworCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjlDQzg3
MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovOyB9OworCQkwRjZCMUNCOTE4
NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0
eUNoZWNrTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCOEFENzFDNEVE
REEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oICovOyB9OworCQkwRjZCOEFERDFDNEVG
QUMzMDA5NjkwNTIgLyogQjNTU0FDYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCOEFEQjFDNEVGQUMzMDA5NjkwNTIgLyogQjNTU0FD
YWxjdWxhdG9yLmggKi87IH07CisJCTBGNkI4QUUzMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFr
Q3JpdGljYWxFZGdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmgg
Ki87IH07CisJCTBGNkI4QUU1MUM0RUZFMTcwMDk2OTA1MiAvKiBCM0ZpeFNTQS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjhBRTExQzRFRkUxNzAw
OTY5MDUyIC8qIEIzRml4U1NBLmggKi87IH07CisJCTBGNkM3MzUxMUFDOUY5OUYwMEJFMTY4MiAv
KiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEYxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3Jp
dGVGaXJlRGV0YWlsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY2REI3RTkxRDYxMjRCNTAwQ0RCRjhFIC8qIFN0YWNrRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkRCN0U4MUQ2MTI0QjIw
MENEQkY4RSAvKiBTdGFja0ZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRT
dGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NkZDNzRGMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3MDI1QUExNzE0QjBGQzAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDI1QTgxNzE0QjBGODAwMzgyQzBFIC8qIERG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oICovOyB9OworCQkwRjcxNENBNTE2RUE5MkYyMDBGM0VC
RUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVCIC8qIERG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCAqLzsgfTsKKwkJMEY3MjVDQTgxQzUwM0RFRDAw
QUQ5NDNBIC8qIEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0E0MUM1MDNERUQwMEFEOTQz
QSAvKiBCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmggKi87IH07CisJCTBGNzI1Q0FB
MUM1MDNERUQwMEFEOTQzQSAvKiBCM1B1cmVDU0UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0E2MUM1MDNERUQwMEFEOTQzQSAvKiBCM1B1cmVD
U0UuaCAqLzsgfTsKKwkJMEY3MjVDQjAxQzUwNkQzQjAwQUQ5NDNBIC8qIEIzRm9sZFBhdGhDb25z
dGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzI1Q0FFMUM1MDZEM0IwMEFEOTQzQSAvKiBCM0ZvbGRQYXRoQ29uc3RhbnRzLmggKi87IH07CisJ
CTBGNzRCOTNCMUY4OTYxNDgwMEI5MzVEMyAvKiBQcm90b3R5cGVLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNBMUY4OTYxNDUwMEI5MzVE
MyAvKiBQcm90b3R5cGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjc1QTA2MDIwMEQyNjBCMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Rjc1QTA1QTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NUEwNjEyMDBE
MjYxODAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc1QTA1NzIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxB
bGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjc1QTA2MjIwMEQyNjFEMDAzOEUyQ0YgLyogQWxsb2NhdG9ySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NUEwNUQyMDBEMjVG
MTAwMzhFMkNGIC8qIEFsbG9jYXRvcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Rjc1QTA1NDIwMEQyNUVGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3NUEwNjYyMDEzRTRGMTAwMzhFMkNG
IC8qIEpJVEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NUEwNjUyMDEzRTRFRjAwMzhFMkNGIC8qIEpJVEFsbG9jYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzY2RDJDMTVB
OENDM0EwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMkExNUE4Q0MzNDAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NjZEMkUxNUE4RENERDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNzY2RDMxMTVBQTgx
MTIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3
OUM3Q0ExRTc0QzkzQjAwRUIzNEQxIC8qIEFpckJyZWFrQ3JpdGljYWxFZGdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OUM3QzYxRTc0QzkzNjAw
RUIzNEQxIC8qIEFpckJyZWFrQ3JpdGljYWxFZGdlcy5oICovOyB9OworCQkwRjdCMjk0QjE0QzND
RDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2Fw
YWJpbGl0aWVzLmggKi87IH07CisJCTBGN0IyOTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21t
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5
NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyog
UmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsK
KwkJMEY3QzM5RkQxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZDMUM4RjY1
OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVzLmggKi87IH07CisJCTBGN0MzOUZGMUM5
MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8u
aCAqLzsgfTsKKwkJMEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzVG
QjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGN0NGOTRGMURCRUVFODgwMDk4
Q0MxMiAvKiBSZWxlYXNlSGVhcEFjY2Vzc1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdDRjk0RTFEQkVFRTg2MDA5OENDMTIgLyogUmVsZWFz
ZUhlYXBBY2Nlc3NTY29wZS5oICovOyB9OworCQkwRjdDRjk1MjFEQzAyN0Q5MDA5OENDMTIgLyog
U3RvcElmTmVjZXNzYXJ5VGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGN0NGOTUxMURDMDI3RDcwMDk4Q0MxMiAvKiBTdG9wSWZOZWNlc3NhcnlU
aW1lci5oICovOyB9OworCQkwRjdDRjk1NzFEQzEyNTkwMDA5OENDMTIgLyogQXRvbWljc09iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3Q0Y5
NTUxREMxMjU4QjAwOThDQzEyIC8qIEF0b21pY3NPYmplY3QuaCAqLzsgfTsKKwkJMEY3REYxMzQx
RTI5NzBENzAwOTU5NTFCIC8qIENvbnN0cmFpbnRWb2xhdGlsaXR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEyRjFFMjk3MEQ1MDA5NTk1MUIg
LyogQ29uc3RyYWludFZvbGF0aWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjdERjEzNTFFMjk3MERDMDA5NTk1MUIgLyogTWFya2VkU3Bh
Y2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjdERjEzMDFFMjk3MEQ1MDA5NTk1MUIgLyogTWFya2VkU3BhY2VJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3REYxMzcxRTI5
NzBFMTAwOTU5NTFCIC8qIFN1YnNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzMjFFMjk3MEQ1MDA5NTk1MUIgLyogU3Vic3BhY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjdERjEz
ODFFMjk3MEU0MDA5NTk1MUIgLyogU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzMzFFMjk3MEQ1MDA5NTk1MUIgLyog
U3Vic3BhY2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY3REYxM0MxRTI5NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RI
ZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjdERjE0NjFFMkJFRjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjE0
NTFFMkJFRjY4MDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3Rjk4OEMxRDk1OTZDODAw
RjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAwRjRGMTJF
IC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5oICovOyB9OworCQkwRjgzMzVCODE2
MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1
IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87
IH07CisJCTBGODZBMjZGMUQ2RjdCMzMwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBMjZFMUQ2RjdCMzEwMENC
MEM5MiAvKiBHQ1R5cGVNYXAuaCAqLzsgfTsKKwkJMEY4NkFFMjAxQzUzMTFDNTAwNkJFOEVDIC8q
IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODZBRTFGMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZp
c2lvbk1hZ2ljLmggKi87IH07CisJCTBGODg1RTExMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29k
ZVVzZURlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4OThGMzIxQjI3Njg5RjAw
ODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg5OEYzMDFCMjc2ODlGMDA4M0Ez
M0MgLyogREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuaCAqLzsgfTsKKwkJMEY4RjE0
MzQxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMTQzMDFBREYwOTAxMDBFRDc5MkMgLyogREZHRXBv
Y2guaCAqLzsgfTsKKwkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjk0MTcyRTA0
OUUwMDdEQkRBNSAvKiBGVExMaW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY4RjJCOUExNzJGMDUwMTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4RjJCOTgxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oICov
OyB9OworCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4Rjk0M0UxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1i
b2xUYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQx
MTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MTlEMEYxNTdGMzMyNzAw
NEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRFN0Qg
LyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkzMjc1MjFDMjBCQ0JB
MDBDRjY1NjQgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCTBGOTMyNzUzMUMyMEJDQkEwMENGNjU2NCAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrICovOyB9OworCQkwRjkzMjc1QjFDMjBCQ0RGMDBDRjY1NjQgLyogZHluYmVu
Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5
MzI3NUExQzIwQkNERjAwQ0Y2NTY0IC8qIGR5bmJlbmNoLmNwcCAqLzsgfTsKKwkJMEY5MzI3NUYx
QzIxRUY3RjAwQ0Y2NTY0IC8qIEpTT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzI3NUUxQzIxRUY3RjAwQ0Y2NTY0IC8qIEpT
T2JqZWN0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTQxNENB
N0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdl
dEJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlTdGF0dXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjkzMzJBNDE0Q0E3REQ5MDA4
NUYzQzYgLyogUHV0QnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeVN0YXR1cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTMzMkE1
MTRDQTdEREQwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1
Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjkzQjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlWYXJpYW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzQjRBODE4QjkyQzREMDAx
NzhBM0YgLyogUHV0QnlWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5NTJBQTExREY3ODYwOTAwRTA2RkJEIC8qIFZpc2l0UmFjZUtl
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NTJB
QTAxREY3ODYwNzAwRTA2RkJEIC8qIFZpc2l0UmFjZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTUyQUJEMUI0ODdBNzcwMEMzNjdDNSAv
KiBUcmFja2VkUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5NTJBQkIxQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2Vz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5
NjMwM0ExRDQxOTJDODAwNTYwOUQ5IC8qIENlbGxBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2MzAzNjFENDE5MkMzMDA1NjA5RDkg
LyogQ2VsbEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2MzAz
ODFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIy
IC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTZFQkIzMTY2
NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8q
IENvZGVCbG9ja1dpdGhKSVRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5NzE1MzExRUIyOEJFRTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NzE1MkYx
RUIyOEJFOTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0Nl
bGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTgyMDYxMTZCRkUzODMw
MDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTgyMDVFMTZCRkUzN0YwMDI0MEQwMiAvKiBQcmVjaXNl
SnVtcFRhcmdldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjlCMURCODFDMEU0MkJEMDBFNUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5QjFEQjYxQzBF
NDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5kbGUuaCAqLzsgfTsKKwkJMEY5QzAzRDUxRTk0
NzZGMjAwQ0Q5MTI1IC8qIEFpclRtcFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5QzAzRDQxRTk0NzZGMDAwQ0Q5MTI1IC8qIEFpclRtcFNldC5o
ICovOyB9OworCQkwRjlDQUJDOTFEQjU0QTdBMDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlDQUJD
NzFEQjU0QTc2MDAwOEU4M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggKi87IH07CisJCTBGOUQz
Mzk3MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBE
RkdGbHVzaGVkQXQuaCAqLzsgfTsKKwkJMEY5RDM2OTUxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0Ns
ZWFuVXBQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5RDM2OTMxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5oICovOyB9Owor
CQkwRjlENEMwRDFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlENEMwQjFDM0UxQzEx
MDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggKi87IH07CisJCTBGOUQ0QzExMUMzRTJD
NzQwMDZDRDk4NCAvKiBGVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlENEMwRjFDM0UyQzc0MDA2Q0Q5
ODQgLyogRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oICovOyB9OworCQkwRjlEQUEwOTFG
RDFDM0NGMDA3OUM1QjIgLyogTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOURBQTA3MUZEMUMzQzgwMDc5QzVC
MiAvKiBNYXJraW5nQ29uc3RyYWludFNvbHZlci5oICovOyB9OworCQkwRjlEQUEwQTFGRDFDM0Qz
MDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VBZGFwdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEQUEwODFGRDFDM0M4MDA3OUM1QjIgLyogUGFy
YWxsZWxTb3VyY2VBZGFwdGVyLmggKi87IH07CisJCTBGOUUzMjY0MUIwNUFCMDQwMDgwMUVENSAv
KiBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RTMyNjIxQjA1QUIwNDAwODAxRUQ1IC8qIERGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmggKi87IH07CisJCTBGOUZCNEY1MTdGQ0I5MTcwMENC
NjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tM
YXlvdXRQaGFzZS5oICovOyB9OworCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4
QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVz
dFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkEyQzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5oICovOyB9OworCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI5
MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oICovOyB9OworCQkwRkE3NjIwNTFEQjky
NDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVj
dGlvblNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZBNzYyMDcxREI5MjQzMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNzYyMDMxREI5MjQyMzAw
QjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5n
U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QTc2MjBBMURCOTU5RjYwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCAqLzsgfTsKKwkJMEZB
N0E4RUMxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQURFNjcz
MUQ0RDIzQkUwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBREU2NzIxRDREMjNCQzAwNzY4NDU3IC8qIEhlYXBVdGls
LmggKi87IH07CisJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQUY3RUZC
MTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUg
LyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQjEwNTgzMTY3NTQ4MEMwMEY4QUI2RSAvKiBFeGl0S2luZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjEwNThDMTY3NTQ4MzMwMEY4
QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQjEwNTg4MTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4
aXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMTA1OEExNjc1NDgyRTAw
RjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyogSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjE0RTFEMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGQjE0RTIxMTgxMjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0RTIwMTgx
MjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaCAqLzsgfTsKKwkJMEZCMTRF
MjMxODEzMDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0RTIyMTgxMzA5
NTUwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggKi87IH07CisJCTBG
QjE3NjYxMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE3NjVEMTk2QjhGOUUwMDkxMDUy
QSAvKiBERkdIZWFwTG9jYXRpb24uaCAqLzsgfTsKKwkJMEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJB
IC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCMTc2NUYxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oICovOyB9
OworCQkwRkIzODc4RTFCRkJDNDREMDBFM0FCMUUgLyogQWlyQmxvY2tXb3JrbGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMzg3OEIxQkZCQzQ0
RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLzsgfTsKKwkJMEZCMzg3OTAxQkZCQzQ0
RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMzg3OEQxQkZCQzQ0RDAwRTNBQjFFIC8qIEFp
ck9wdGltaXplQmxvY2tPcmRlci5oICovOyB9OworCQkwRkIzOTlCRTIwQUY2QjNEMDAxN0UyMTMg
LyogSUNTdGF0dXNVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLzsg
fTsKKwkJMEZCMzk5QkYyMEFGNkIzRjAwMTdFMjEzIC8qIEluc3RhbmNlT2ZTdGF0dXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjM5OUJCMjBBRjZC
MkEwMDE3RTIxMyAvKiBJbnN0YW5jZU9mU3RhdHVzLmggKi87IH07CisJCTBGQjM5OUMwMjBBRjZC
NDMwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCMzk5QjkyMEFGNkIyQTAwMTdFMjEzIC8qIEluc3Rh
bmNlT2ZWYXJpYW50LmggKi87IH07CisJCTBGQjQ2NzdGMUZEREE2RTkwMDNGQ0IwOSAvKiBBdG9t
SW5kaWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZCNDY3N0UxRkREQTZFNTAwM0ZDQjA5IC8qIEF0b21JbmRpY2VzLmggKi87IH07CisJCTBGQjQ2
NzgwMUZEREE2RjEwMDNGQ0IwOSAvKiBJc29DZWxsU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0Njc3RDFGRERBNkQ5MDAzRkNCMDkgLyogSXNv
Q2VsbFNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGQjQ2NzgxMUZEREE2RjcwMDNGQ0IwOSAvKiBJc29DZWxsU2V0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNDY3N0IxRkREQTZE
ODAwM0ZDQjA5IC8qIElzb0NlbGxTZXRJbmxpbmVzLmggKi87IH07CisJCTBGQjQ3NjdFMUQ5OUFF
QTkwMDhFQTZDQiAvKiBHQ0RlZmVycmFsQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNDc2N0MxRDk5QUVBNzAwOEVBNkNCIC8qIEdDRGVm
ZXJyYWxDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZCNDc2N0YxRDk5QUVBRDAwOEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
NDc2N0QxRDk5QUVBNzAwOEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oICovOyB9
OworCQkwRkI0RkI3NDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MTFCQzg0MzE0
MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggKi87IH07CisJCTBGQjRGQjc1MUJDODQzMTQw
MDI1Q0E1QSAvKiBGVExMYXp5U2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI0RkI3MjFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6
eVNsb3dQYXRoQ2FsbC5oICovOyB9OworCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjU0Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1
NDY3QTE0RjVDN0Q0MDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjU3MDY5
MjY3QTY0MkUwMDgwRkE4QiAvKiBIYXNoYWJsZVJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI1NzA2ODI2N0E2NDJFMDA4MEZBOEIg
LyogSGFzaGFibGVSZWdpc3RlclNldC5oICovOyB9OworCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCN0YzODkxNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkI3RjM5NjE1RUQ4RTQ2MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIg
LyogQXJyYXlTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEIxNUVEOEUz
ODAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQjdGMzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkI3RjM4QzE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjdGMzk5MTVFRDhFNDYw
MEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEQxNUVEOEUzODAwRjE2N0IyIC8qIEluZGV4aW5nSGVh
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOEUxNUVEOEUz
ODAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAv
KiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjdGMzhGMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkI3RjM5QzE1RUQ4
RTQ2MDBGMTY3QjIgLyogUHJvcGVydHlTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyogUHJvcGVy
dHlTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFR5cGVFcnJvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCN0YzOTExNUVEOEUzODAwRjE2
N0IyIC8qIFR5cGVFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGQjdGMzlFMTVFRDhFNDYwMEYxNjdCMiAvKiBTcGFyc2VBcnJheVZhbHVl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI3
RjM5MjE1RUQ4RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQkI3M0I4MURFRjNBQUUw
MDJDMDA5RSAvKiBQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJCNzNCNjFERUYzQUFDMDAyQzAwOUUgLyogUHJl
dmVudENvbGxlY3Rpb25TY29wZS5oICovOyB9OworCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUg
LyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCQjczQkExREVGODY0NDAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVF
ZmZvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRkJDMEFFODE0OTZDN0M3MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkMwQUU1MTQ5NkM3QzEwMEQ0
RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkJEN0U2
NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQkRCOUFEMUFCMEZCQzYwMDBCNTdFNSAvKiBE
RkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkRCOUFDMUFCMEZCQzYwMDBC
NTdFNSAvKiBERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJMEZCRTBGNzMxNkMxREIwNTAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFkaW5nUGhh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUw
RjZDMTZDMURCMDEwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmggKi87IH07CisJ
CTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUwRjZF
MTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCAqLzsgfTsK
KwkJMEZCRTBGNzcxNkMxREIxMjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkUwRjcwMTZDMURC
MDEwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmggKi87IH07CisJCTBGQkYxNThEMTlC
N0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkYxNThCMTlCN0E1MzEwMDY5NUREMCAvKiBE
RkdCbG9ja1NldElubGluZXMuaCAqLzsgfTsKKwkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8q
IERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggKi87IH07CisJCTBG
QzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAvKiBE
RkdUaHVua3MuaCAqLzsgfTsKKwkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmggKi87IH07CisJCTBGQzIwQ0JBMTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dl
cmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkMyMENCODE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oICovOyB9
OworCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzMxNDEwMTgxNDU1OTEwMDAz
MzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDM0NDRjUx
OUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggKi87IH07CisJCTBGQzNDQ0ZEMTlBREE0
MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzNDQ0Y2MTlBREE0MTAwMDZBQzcyQSAvKiBERkdC
bG9ja01hcElubGluZXMuaCAqLzsgfTsKKwkJMEZDM0NDRkUxOUFEQTQxMDAwNkFDNzJBIC8qIERG
R0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkMzQ0NGNzE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCAqLzsgfTsKKwkJMEZD
M0NEMDAxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzNDQ0Y5MTlBREE0MTAwMDZBQzcy
QSAvKiBERkdCbG9ja1dvcmtsaXN0LmggKi87IH07CisJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRkM3MTJFMzE3Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzcxMkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGQzgxNTBBMTQwNDNCRjUwMENGQTYwMyAvKiBXcml0ZUJh
cnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzk3RjM0
MTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzk3RjMwMTgyMDIw
RDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkM5N0YzRTE4MjAyMTE5
MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGMzgxODIwMjExOTAw
MkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaCAqLzsgfTsKKwkJ
MEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGM0ExODIwMjExOTAw
MkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oICovOyB9OworCQkwRkM5N0Y0MjE4MjAyMTE5
MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDOTdGM0MxODIwMjExOTAwMkM5QjI2
IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCAqLzsgfTsKKwkJMEZDQ0FFNDUxNkQw
Q0Y3NDAwRDBDNjVCIC8qIFBhcnNlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNDQUU0MzE2RDBDRjZFMDBEMEM2NUIgLyogUGFyc2VyRXJy
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RkNFRkFBQzE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQUFBMTgwNEMxM0UwMDQ3MkNF
NCAvKiBGVExTYXZlUmVzdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRUZBREUx
ODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEMEU1RTkxRTQzRDM0OTAwMDZBQjA4IC8qIENv
bGxlY3RvclBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQwRTVFNjFFNDNEMzQ3MDAwNkFCMDggLyogQ29sbGVjdG9yUGhhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQwRTVFQTFFNDNE
MzREMDAwNkFCMDggLyogR0NDb25kdWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDBFNUU4MUU0M0QzNDcwMDA2QUIwOCAvKiBHQ0NvbmR1Y3Rv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RDBFNUVFMUU0NjhBNTcwMDA2QUIwOCAvKiBTd2VlcGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQwRTVFRDFFNDY4QTU0MDAwNkFCMDgg
LyogU3dlZXBpbmdTY29wZS5oICovOyB9OworCQkwRkQwRTVGMDFFNDZCRjI1MDAwNkFCMDggLyog
UmVnaXN0ZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZEMEU1RUYxRTQ2QkYyMzAwMDZBQjA4IC8qIFJlZ2lzdGVyU3RhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQwRTVGMjFFNDZD
OEFGMDAwNkFCMDggLyogQ29sbGVjdGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQwRTVGMTFFNDZDOEFEMDAwNkFCMDggLyogQ29sbGVj
dGluZ1Njb3BlLmggKi87IH07CisJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1
cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkQyQzkyMzE2RDAxRUU5MDBDNzgwM0YgLyogU3RydWN0dXJlSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDJGRDk0MjBCNTJC
REUwMEYwOTQ0MSAvKiBDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMkZEOTMyMEI1MkJERDAwRjA5NDQxIC8q
IENvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEMkZEOTIyMEI1MkJEQzAwRjA5NDQxIC8qIElzb1N1YnNwYWNlSW5saW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDNDODI4MTQx
MTVENEYwMEZEODFDQiAvKiBERkdEcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIu
aCAqLzsgfTsKKwkJMEZEM0U0MDIxQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEM0U0MDAxQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oICovOyB9OworCQkwRkQzRTQwQTFCNjE4
QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDNFNDA0MUI2MThCNjYwMEM4MEUxRSAv
KiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRDNFNDBDMUI2MThCNjYwMEM4MEUxRSAvKiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZEM0U0MDYxQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzRTQwODFCNjE4
QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ3OUEyRDFFQkJCREJCMDBEQTg4RDMgLyog
U3luY2hyb25vdXNuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkQ3OUEyQzFFQkJCREIyMDBEQTg4RDMgLyogU3luY2hyb25vdXNuZXNzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEODFBRDMx
NTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdE
b21pbmF0b3JzLmggKi87IH07CisJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBTcGVjdWxh
dGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEODJFNTcxNDFEQUYxMDAw
MTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkQ4MkU1MzE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCAq
LzsgfTsKKwkJMEZEOEEzMTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMTIxN0Q0MzI2
QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRDhBMzFBMTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JP
U1JFbnRyeUpJVENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ4
QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDhBMzE4MTdENTFGMjIwMENBMkM0MCAvKiBG
VExPU1JFbnRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEOEEzMUUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmggKi87IH07CisJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQ4QTMyMDE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5oICovOyB9OworCQkwRkQ4QTMyQTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRDhBMzIyMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovOyB9OworCQkwRkQ4QTMyQzE3RDUxRjU3MDBDQTJD
NDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEOEEzMjQxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCAqLzsgfTsKKwkJMEZEQjJDQzkxNzNEQTUyMDAwN0IzQzFCIC8qIEZUTEFiYnJldmlh
dGVkVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGREIyQ0M3MTczREE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEQjJDQ0ExNzNE
QTUyMzAwN0IzQzFCIC8qIEZUTFZhbHVlRnJvbUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRM
VmFsdWVGcm9tQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkRCMkNFQTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3VycmVudEpTTG9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjJDRTkx
NzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRKU0xvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEg
LyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRDRTExQjFGQUU2MUY0MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZh
aWx1cmVNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZEQ0UxMjIxRkFFODU4QzAwNkYzOTAxIC8qIEhlYXBDZWxsVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQ0UxMUYxRkFFODU4NzAw
NkYzOTAxIC8qIEhlYXBDZWxsVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGRENFMTJBMUZBRkE4NUYwMDZGMzkwMSAvKiBDb21wbGV0ZVN1
YnNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkRDRTEyODFGQUZBODU5MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRENFMTJEMUZBRkI0RTUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZEQ0UxMkIxRkFGQjRERTAwNkYzOTAxIC8qIElzb1N1YnNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEQ0Ux
MzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRENFMTMwMUZCMTFEOUQw
MDZGMzkwMSAvKiBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZEREJGQjYxNjY2RUVEQTAwQzU1RkVG
IC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkIzMTY2NkVFRDUwMEM1NUZFRiAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmggKi87IH07CisJCTBGREU4N0ZDMURGRTZFNTEwMDY0QzM5MCAv
KiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRFODdGQjFERkU2RTUwMDA2NEMzOTAgLyogU3BhY2VUaW1l
TXV0YXRvclNjaGVkdWxlci5oICovOyB9OworCQkwRkRGNjdEMjFEOUM2RDI3MDAxQjk4MjUgLyog
QjNLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkRGNjdEMTFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmggKi87IH07CisJCTBGREY2N0Q3MUQ5
REM0NDIwMDFCOTgyNSAvKiBBaXJLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkRGNjdENTFEOURDNDNFMDAxQjk4MjUgLyogQWlyS2luZC5oICov
OyB9OworCQkwRkRGNzA4NjFEM0YyQzI1MDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRjaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZERjcwODQx
RDNGMkMxRjAwOTI3NDQ5IC8qIEFpckxvd2VyRW50cnlTd2l0Y2guaCAqLzsgfTsKKwkJMEZFMDUw
MTQxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDBDMUFBOTA5MTEwMEQzM0IzMyAvKiBB
cmd1bWVudHNNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEZFMDUwMTYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMDUw
MEUxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTA1MDE4MUFBOTA5MTEw
MEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1
bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRkUwNTAxOTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMDUwMTExQUE5MDkxMTAw
RDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwNTAxMzFBQTkwOTExMDBEMzNC
MzMgLyogR2VuZXJpY09mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGRTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTA1
MDFEMUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkUwNTAxRjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZF
MDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUwNTAyMDFBQTkwOTU2MDBE
MzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2Nv
cGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRTA1MDIyMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTA1MDJEMUFBOTA5NTYwMEQz
M0IzMyAvKiBWYXJPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTA1MDI0MUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUwRTRBRTFDMjRD
OTRBMDAyRTE3QjYgLyogQWlyVG1wV2lkdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAvKiBBaXJUbXBXaWR0
aC5oICovOyB9OworCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIy
MzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkUyNTRGNzFBQkRERDIyMDBBN0M2RDIgLyogREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFMjU0RjUxQUJEREQyMjAwQTdDNkQyIC8qIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhh
c2UuaCAqLzsgfTsKKwkJMEZFMzRDMUExQzRCMzlBRTAwMDNBNTEyIC8qIEFpckxvZ1JlZ2lzdGVy
UHJlc3N1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRTM0QzE4MUM0QjM5QUUwMDAzQTUxMiAvKiBBaXJMb2dSZWdpc3RlclByZXNzdXJlLmggKi87
IH07CisJCTBGRTcyMTFFMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MjExQzE5M0I5QzU5
MDAzMUY2RUQgLyogREZHVHJhbnNpdGlvbi5oICovOyB9OworCQkwRkU4MzQxODFBNkVGOTdCMDBE
MDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTgzNDE2MUE2RUY5N0IwMEQwNDg0NyAvKiBQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNp
cmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMu
aCAqLzsgfTsKKwkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTA5RkYx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAv
KiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVBMEEwMTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTBFMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBMEEwMzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMSklUQ29kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTEw
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvQjMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTA1MTcwNTEzREIwMEJCNzIyQyAvKiBG
VExMb3dlckRGR1RvQjMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkVBMEExMjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMU3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTA3MTcwNTEzREIw
MEJCNzIyQyAvKiBGVExTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEw
QTE4MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcy
MkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMUExNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkVBMEEyMDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMVHlwZWRQb2lu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVB
MEExQjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMVHlwZWRQb2ludGVyLmggKi87IH07CisJCTBGRUEw
QTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEwQTIxMTcwOTYwNjkwMEJCNzIyQyAv
KiBGVExDb21tb25WYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkVBMEEyQzE3MEI2NjE5MDBCQjcyMkMgLyogRlRMRm9ybWF0dGVkVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUEw
QTJCMTcwQjY2MTkwMEJCNzIyQyAvKiBGVExGb3JtYXR0ZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRUEwQTMyMTcwRDQwQkYwMEJC
NzIyQyAvKiBERkdDb21tb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBMEEyRTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5o
ICovOyB9OworCQkwRkVBMEEzNDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMzAxNzBENDBC
RjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCAqLzsgfTsKKwkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5
QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMzQzUxMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZFQzNDNTcxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVDM0M1NTFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkVDM0M1QjFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDM0M1OTFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmggKi87IH07CisJCTBGRUMzQzYwMUYzNzlGNTMwMEY1OUI2QyAvKiBDYWdlZEJhcnJpZXJQ
dHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUMz
QzVGMUYzNzlGNTMwMEY1OUI2QyAvKiBDYWdlZEJhcnJpZXJQdHIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkVDODRGRjFCREFDREFDMDA4MEZG
NzQgLyogQjNBcmd1bWVudFJlZ1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJl
Z1ZhbHVlLmggKi87IH07CisJCTBGRUM4NTAxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxv
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4
NEI3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2suaCAqLzsgfTsKKwkJMEZFQzg1MDIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEI4MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0Jhc2ljQmxvY2tJbmxpbmVzLmggKi87IH07CisJCTBGRUM4NTAzMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0Jhc2ljQmxvY2tVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQzg0QjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmFzaWNCbG9ja1V0
aWxzLmggKi87IH07CisJCTBGRUM4NTA0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jsb2NrV29ya2xp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4
NEJBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jsb2NrV29ya2xpc3QuaCAqLzsgfTsKKwkJMEZFQzg1
MDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVjaWFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRCQzFCREFDREFDMDA4MEZGNzQgLyog
QjNDaGVja1NwZWNpYWwuaCAqLzsgfTsKKwkJMEZFQzg1MDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
Q2hlY2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFQzg0QkUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tWYWx1ZS5oICovOyB9OworCQkw
RkVDODUwQTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEMwMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGRUM4NTBDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW11dGF0aXZpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEMyMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0NvbW11dGF0aXZpdHkuaCAqLzsgfTsKKwkJMEZFQzg1MEUxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRDNDFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDMyVmFs
dWUuaCAqLzsgfTsKKwkJMEZFQzg1MTAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRD
NjFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFsdWUuaCAqLzsgfTsKKwkJMEZFQzg1MTIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0QzgxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQ29uc3REb3VibGVWYWx1ZS5oICovOyB9OworCQkwRkVDODUxNjFCREFDREFDMDA4MEZGNzQg
LyogQjNGcmVxdWVuY3lDbGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg0Q0MxQkRBQ0RBQzAwODBGRjc0IC8qIEIzRnJlcXVlbmN5Q2xhc3Mu
aCAqLzsgfTsKKwkJMEZFQzg1MTcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzRnJlcXVlbnRlZEJsb2Nr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRD
RDFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsKKwkJMEZFQzg1
MTkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dl
bmVyYXRlLmggKi87IH07CisJCTBGRUM4NTFBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNG
cmVxdWVudGVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLzsgfTsKKwkJMEZFQzg1MUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDQx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5oICovOyB9OworCQkwRkVDODUyMDFCREFD
REFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5
VmFsdWUuaCAqLzsgfTsKKwkJMEZFQzg1MjIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3Bjb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODREODFC
REFDREFDMDA4MEZGNzQgLyogQjNPcGNvZGUuaCAqLzsgfTsKKwkJMEZFQzg1MjQxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkVDODREQTFCREFDREFDMDA4MEZGNzQgLyogQjNPcmlnaW4uaCAqLzsgfTsK
KwkJMEZFQzg1MjYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFNwZWNpYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NERDMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRTcGVjaWFsLmggKi87IH07CisJCTBGRUM4NTI4MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0REUxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UGF0Y2hwb2ludFZhbHVlLmggKi87IH07CisJCTBGRUM4NTJBMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1BoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NEUwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuaCAqLzsgfTsKKwkJ
MEZFQzg1MkMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRFMjFCREFDREFDMDA4MEZGNzQg
LyogQjNQcm9jZWR1cmUuaCAqLzsgfTsKKwkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQzg0RTMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5o
ICovOyB9OworCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEU3
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oICovOyB9OworCQkwRkVDODUz
NTFCREFDREFDMDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRFQjFCREFDREFDMDA4MEZGNzQgLyog
QjNTbG90QmFzZVZhbHVlLmggKi87IH07CisJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUM4NEVDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxl
Y3Rpb24uaCAqLzsgfTsKKwkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2Fz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0
RUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2FzZS5oICovOyB9OworCQkwRkVDODUzQTFC
REFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RjAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dp
dGNoVmFsdWUuaCAqLzsgfTsKKwkJMEZFQzg1M0MxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RjIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRUM4NTNFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Vwc2ls
b25WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg0RjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmggKi87IH07CisJCTBG
RUM4NTQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RjYxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzVXNlQ291bnRzLmggKi87IH07CisJCTBGRUM4NTQyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Zh
bGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVDODRGODFCREFDREFDMDA4MEZGNzQgLyogQjNWYWxpZGF0ZS5oICovOyB9OworCQkwRkVDODU0
NDFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RkExQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWUu
aCAqLzsgfTsKKwkJMEZFQzg1NDcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVSZXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEZEMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1ZhbHVlUmVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFQzg1NkUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckFsbG9j
YXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUM4NTQ5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJBbGxvY2F0ZVN0
YWNrQnlHcmFwaENvbG9yaW5nLmggKi87IH07CisJCTBGRUM4NTcwMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJBcmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NTRCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJBcmcuaCAqLzsgfTsKKwkJMEZFQzg1NzIx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTREMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJC
YXNpY0Jsb2NrLmggKi87IH07CisJCTBGRUM4NTc0MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDQ2Fs
bFNwZWNpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NTRGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDQ2FsbFNwZWNpYWwuaCAqLzsgfTsKKwkJ
MEZFQzg1NzYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTUxMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJDb2RlLmggKi87IH07CisJCTBGRUM4NTc3MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJGcmVxdWVu
dGVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NTUyMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsK
KwkJMEZFQzg1NzkxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU1NDFCREFDREM3MDA4MEZG
NzQgLyogQWlyR2VuZXJhdGUuaCAqLzsgfTsKKwkJMEZFQzg1N0ExQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckdlbmVyYXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVDODU1NTFCREFDREM3MDA4MEZGNzQgLyogQWlyR2VuZXJhdGlvbkNv
bnRleHQuaCAqLzsgfTsKKwkJMEZFQzg1N0MxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckhhbmRsZUNh
bGxlZVNhdmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODU1NzFCREFDREM3MDA4MEZGNzQgLyogQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaCAqLzsg
fTsKKwkJMEZFQzg1N0UxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc2VydGlvblNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1NTkxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckluc2VydGlvblNldC5oICovOyB9OworCQkwRkVDODU4MDFCREFDREM3
MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg1NUIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3QuaCAqLzsgfTsK
KwkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU1QzFCREFDREM3MDA4
MEZGNzQgLyogQWlySW5zdElubGluZXMuaCAqLzsgfTsKKwkJMEZFQzg1ODQxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclBoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmgg
Ki87IH07CisJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2MzFCREFDREM3
MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oICovOyB9OworCQkwRkVDODU4QzFCREFDREM3MDA4MEZG
NzQgLyogQWlyU3RhY2tTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkVDODU2NzFCREFDREM3MDA4MEZGNzQgLyogQWlyU3RhY2tTbG90LmggKi87
IH07CisJCTBGRUM4NThFMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJUbXAuaCAqLzsgfTsKKwkJMEZFQzg1OEYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRt
cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NTZBMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJbmxpbmVzLmggKi87IH07CisJCTBG
RUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1NkMxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpclZhbGlkYXRlLmggKi87IH07CisJCTBGRUM4NUEzMUJEQjVDRjEwMDgwRkY3NCAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLzsgfTsKKwkJMEZFQzg1QTQxQkRCNUNGMTAwODBGRjc0IC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87
IH07CisJCTBGRUM4NUFGMUJEQjVENUUwMDgwRkY3NCAvKiB0ZXN0YjNfMS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODVBRTFCREI1RDVFMDA4
MEZGNzQgLyogdGVzdGIzXzEuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
TzAgLURSRUxFQVNFX1dJVEhPVVRfT1BUSU1JWkFUSU9OUyI7IH07IH07CisJCTBGRUM4NUIzMUJE
RUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUIyMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0Nv
bnN0UHRyVmFsdWUuaCAqLzsgfTsKKwkJMEZFQzg1QkExQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVDODVCNTFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuaCAqLzsgfTsKKwkJ
MEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1QjYxQkUxNDYy
RjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovOyB9OworCQkwRkVDODVCRDFC
RTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1QjgxQkUxNDYyRjAwODBGRjc0IC8qIEIz
UmVkdWNlU3RyZW5ndGguaCAqLzsgfTsKKwkJMEZFQzg1QzExQkUxNjdBMDAwODBGRjc0IC8qIEIz
RWZmZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg1QkUxQkUxNjdBMDAwODBGRjc0IC8qIEIzRWZmZWN0cy5oICovOyB9OworCQkwRkVDODVD
MzFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hl
YXBSYW5nZS5oICovOyB9OworCQkwRkVENjdCQTFCMjYyNTZEMDA2NkNFMTUgLyogREZHQ29uc3Rh
bnRIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVENjdCODFCMjYyNTZEMDA2NkNFMTUgLyogREZHQ29uc3RhbnRIb2lzdGluZ1Bo
YXNlLmggKi87IH07CisJCTBGRUU5ODQxMUE4ODY1QjcwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
RTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFRkM5QUIxNjgxQTNCNjAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmggKi87IH07CisJCTBGRjA1NEZBMUFDMzVCNDQwMEU1
QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVj
dXRhYmxlQWxsb2NhdGlvbkZ1enouaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRkYwRjFBMDE2QjcyQTFBMDA1REY5NUIgLyogRnVuY3Rpb25FeGVj
dXRhYmxlRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCNEI1MjIxNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkYyQ0Q1
QzFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjJDRDVBMUI2MUE0RjgwMDQ5
NTVBOCAvKiBERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5oICovOyB9OworCQkwRkY0MjczMTE1OEVC
RDU0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1i
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEZGNDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENC
OUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovOyB9OworCQkwRkY0N0M1QTFFQkZFODQ2MDBGMjgw
QjcgLyogSlNPYmplY3RHZXRQcm94eVRhcmdldFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDdDNTgxRUJGRTgzNTAwRjI4MEI3IC8qIEpT
T2JqZWN0R2V0UHJveHlUYXJnZXRUZXN0LmNwcCAqLzsgfTsKKwkJMEZGNEI0QkQxRTg4NDQ5QTAw
REJCRTg2IC8qIEFpclJlZ0xpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkY0QjRCQjFFODg0NDk1MDBEQkJFODYgLyogQWlyUmVnTGl2ZW5l
c3MuaCAqLzsgfTsKKwkJMEZGNEI0QzcxRTg4OTNDNTAwREJCRTg2IC8qIEFpckNGRy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNEI0QzYxRTg4OTNC
RjAwREJCRTg2IC8qIEFpckNGRy5oICovOyB9OworCQkwRkY0QjRDQjFFODg5RDdFMDBEQkJFODYg
LyogQjNWYXJpYWJsZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkY0QjRDOTFFODg5RDc4MDBEQkJFODYgLyogQjNWYXJpYWJsZUxpdmVu
ZXNzLmggKi87IH07CisJCTBGRjYwQUMyMTY3NDBGODMwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY2
MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcxNjhDMTVBM0IyMzUwMDhG
NURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGNzE2OEExNUEzQjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZG
NzI5QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTkzMTY2QUQzNDcwMDBGNUJB
MyAvKiBQcm9maWxlckJ5dGVjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0
ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCQTE2NkFEMzYw
MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2Zp
bGVyQ29tcGlsYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRkY3MjlCQjE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlv
bktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RjcyOTk5MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRjcyOUJDMTY2
QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjcyOTlCMTY2QUQzNDcwMDBGNUJB
MyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRDE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGNzI5OUQxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlCRTE2
NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY3Mjk5RTE2NkFEMzQ3MDAwRjVC
QTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGNzI5QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFBy
b2ZpbGVyT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkY3MjlBMDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY3MjlDMDE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8qIFBy
b2ZpbGVyT3JpZ2luU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRkY4QkRFQjFBRDRDRjcxMDBERkU4ODQgLyogSW5mZXJyZWRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGOEJERTkx
QUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OworCQkwRkY5Q0U3NDFCOUNENkQwMDA0RURDQTYgLyogUG9seW1v
cnBoaWNBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRjlDRTcyMUI5Q0Q2RDAwMDRFRENBNiAvKiBQb2x5bW9ycGhpY0FjY2Vzcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRkE1NDk4MTZC
ODgzNTMwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
RkI2QzM5MUFGNDhEREMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZCNkMzNzFBRjQ4RERDMDBEQjFCRjcgLyog
VHlwZW9mVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGRkI4MEJDMjBBNzk0NzMwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQjgwQkIyMEE3OTQ3
MDAwMDZBQUY2IC8qIEpJVENvZGVJbmxpbmVzLmggKi87IH07CisJCTBGRkI5MjFBMTZEMDJFQzUw
MDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZENTY1MjIxNkFCNzgwQTAwMTk3NjUzIC8qIERGR0Jh
c2ljQmxvY2tJbmxpbmVzLmggKi87IH07CisJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBE
RkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oICovOyB9OworCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyogREZH
U2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVyYXRv
ci5oICovOyB9OworCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwREFE
MDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZDOTIxNjFCOTRGQjNFMDA3MURE
NjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlU
eXBlS2V5LmggKi87IH07CisJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkM5
OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIg
LyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyB9Owor
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRFMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdDU0VQaGFzZS5oICovOyB9OworCQkwRkZGQzk1QzE0RUY5MEFGMDBDNzI1MzIgLyog
REZHUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRkZDOTUwMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQaGFzZS5oICovOyB9OworCQkwRkZGQzk1
RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTUyMTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oICovOyB9OworCQkw
RkZGQzk2MDE0RUY5MEJEMDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZG
Qzk1NDE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNl
LmggKi87IH07CisJCTE0MDlFQ0JGMjI1RTE3NzQwMEJFREQ1NCAvKiBMZWFmRXhlY3V0YWJsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4QjE0MTcy
MjVERDFENzAwRDZFOTk4IC8qIExlYWZFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQwOUVDQzAyMjVFMTc4MTAwQkVERDU0IC8q
IENhY2hlVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDhCMTQxODIyNUREMUQ3MDBENkU5OTggLyogQ2FjaGVVcGRhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDA5RUNDMTIyNUUxNzhD
MDBCRURENTQgLyogQ2FjaGVQYXlsb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDhCMTQxNjIyNUREMUQ3MDBENkU5OTggLyogQ2FjaGVQYXlsb2Fk
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQw
RDE3RDcwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEQxN0Q2MEU4QUQ0QTkwMDBDRDE3RCAv
KiBKU0Jhc2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMTQxMjExMzEwQTQ4Nzk0RDAwNDgwMjU1IC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87
IH07CisJCTE0MTIxMTM0MEE0ODc5NTgwMDQ4MDI1NSAvKiBtaW5pZG9tLmMgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwMjBBNDg3ODA5MDA0ODAy
NTUgLyogbWluaWRvbS5jICovOyB9OworCQkxNDE0MkU1MTFCNzk2RUNFMDBGNEJGNEIgLyogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MTQyRTUwMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0MTQyRTUzMUI3OTZFREQwMEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxNDJFNTIxQjc5
NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1h
cmtlZEJsb2NrU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDE0NDhDRDEzQTE3
ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJs
b29tRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQxNTAxMzMxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE1MDEzMjE1NEJCMTNG
MDA1RDhDOTggLyogV2Vha1NldElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxNDIwMUQ1OTFERUNGMjZBMDA5MDRCRDMgLyogU291cmNl
Q29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
MDFENTgxREVDRjI2QTAwOTA0QkQzIC8qIFNvdXJjZUNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDI5RDc3QzBFRDIwRDczMDBCODk2MTkg
LyogSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MjlENzdCMEVEMjBENzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovOyB9Owor
CQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDI5RDhEQzBFRDIyMDVCMDBCODk2MTkg
LyogQ2FsbEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMTQyOUQ5MzAwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyOUQ5MkUwRUQyMkQ3MDAwQjg5NjE5
IC8qIEpJVC5oICovOyB9OworCQkxNDJEMzkzOTEwM0U0NTYwMDA3RENCNTIgLyogTnVtZXJpY1N0
cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0MkQ2RjA5MTM1MzlBMjgwMEIw
MkU4NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQyRDZGMTIx
MzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0
MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkUzMTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5k
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkx
NDJFMzEzNjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJFMzEyRDEzNEZGMEE2MDBBRkFEQjUgLyog
SGFuZGxlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQyRTMxM0IxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRTMxMzIxMzRGRjBBNjAwQUZBREI1
IC8qIFN0cm9uZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTE0MkUzMTNDMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJFMzEzMzEzNEZGMEE2MDBBRkFEQjUg
LyogV2Vhay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTE0MkYxNkUwMjE1NTg4MDIwMDNENDlDOSAvKiBNZXRhZGF0YVRhYmxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJGMTZERjIxNTU4NUM4MDAz
RDQ5QzkgLyogTWV0YWRhdGFUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTE0MzU5NTIxMjJBNTIxQ0QwMEU4MDg2RCAvKiBCeXRlY29kZUNh
Y2hlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0MzU5NTFGMjJBNTIxQ0EwMEU4MDg2RCAvKiBCeXRlY29kZUNhY2hlRXJyb3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDM4NkE3NTFERDY5
ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0Mzg2QTczMURENjk4OTUwMDg2NTJDNCAvKiBE
aXJlY3RFdmFsRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTE0Mzg2QTc5MURENjk4OUMwMDg2NTJDNCAvKiBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDM4NkE3NzFERDY5ODlDMDA4NjUyQzQgLyogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0NDAwNTdG
MEE1MzM1NjQwMDA1RjA2MSAvKiBKU05vZGUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGNjQyMEE0RjhCNkEwMDA1RjA2MSAvKiBKU05vZGUuYyAq
LzsgfTsKKwkJMTQ0MDA1Q0IwQTUzMzhEMTAwMDVGMDYxIC8qIEpTTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY2NDEwQTRGOEI2QTAwMDVG
MDYxIC8qIEpTTm9kZS5oICovOyB9OworCQkxNDQwMDVDQzBBNTMzOEY4MDAwNUYwNjEgLyogTm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA1
MUYwQTUzMUQzQjAwMDVGMDYxIC8qIE5vZGUuaCAqLzsgfTsKKwkJMTQ0MDA2M0YwQTUzNTk4QTAw
MDVGMDYxIC8qIE5vZGUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NDAwNTIwMEE1MzFEM0IwMDA1RjA2MSAvKiBOb2RlLmMgKi87IH07CisJCTE0NDAw
NzRBMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA3NDgwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVM
aXN0LmggKi87IH07CisJCTE0NDAwNzRCMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5jIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA3NDkwQTUz
NkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmMgKi87IH07CisJCTE0NDAwNzU3MEE1MzcwRDIwMDA1
RjA2MSAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDQwMDc1NTBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5oICovOyB9
OworCQkxNDQwMDc1ODBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5jIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MDA3NTYwQTUzNzBEMjAwMDVG
MDYxIC8qIEpTTm9kZUxpc3QuYyAqLzsgfTsKKwkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8q
IHRlc3RhcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi87IH07CisJCTE0NDI1NjYy
MTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MjU2NjAxNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0
aFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMTQ0ODM2RTcxMzJEQTdCRTAwNUJFNzg1IC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDlEQUFGMjEyRUI1NTlE
MDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDRDQTM1MDIyMjQxODAxMDA4MTc3ODkgLyogQ2Fj
aGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0NENBMzRGMjIxRjAzNzkwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0NTBGQTFDMjM1N0JE
QkUwMDkzQ0Q0RCAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzVBRDZCMjJGMzNGQzAwMEYx
RkI4MyAvKiBXYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDUwRkExRjIzNTdCRUM5MDA5M0NE
NEQgLyogV2FzbUxMSW50VGllclVwQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1MEZBMUUyMzU3QkVDNDAwOTNDRDREIC8qIFdhc21MTElu
dFRpZXJVcENvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkxNDU3MjI4NjE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ1NzIyODUxNDM3
RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNN
QU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
NUZGMkM3MjQzQkI5OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0NkMzODRCMjE3N0FDREYwMDc5RjZEOSAv
KiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFk
YXRhVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkxNDcxNDgzMDIwRDMyM0QzMDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDcxNDgyRjIwRDMy
MzY1MDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0gKi87IH07CisJCTE0NzM0MUNDMURD
MDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MzQxQ0IxREMwMkQ3MjAwQUEyOUJBIC8qIEV4ZWN1
dGFibGVCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQ3MzQxQ0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzM0MUNEMURDMDJE
NzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ3MzQxRDAxREMwMkRCNDAwQUEyOUJBIC8qIE5h
dGl2ZUV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NzM0MUNGMURDMDJEQjQwMEFBMjlCQSAvKiBOYXRpdmVFeGVjdXRhYmxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ3MzQxRDIx
REMwMkUyRTAwQUEyOUJBIC8qIEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDczNDFEMTFEQzAyRTJFMDBBQTI5QkEgLyogRXZh
bEV4ZWN1dGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxNDczNDFENDFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzM0MUQzMURD
MDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0NzM0MUQ2MURDMDJFQjkwMEFBMjlCQSAv
KiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ3MzQxRDUxREMwMkVCOTAwQUEyOUJBIC8qIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMTQ3MzQxRDgxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3MzQxRDcx
REMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0NzgyOTdCMTM3OUU4QTgwMEE3QzJB
MyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ2RkE1QTgxMzc4RjZCMDAwMzYyN0EzIC8qIEhhbmRsZVR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ3QjgzQUMwRTZE
QjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdCODNBQTBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyog
UHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDdCODQ2MjBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ4NTIxRDgy
NkVBRUJGRTAwQ0MxRDFBIC8qIFdhc21IYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4NTIxRDcyNkVBRUJGRTAwQ0MxRDFBIC8qIFdh
c21IYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0ODZBOEMwMjRBQkVENDgwMDczOTIyRCAvKiBKU0xvY2tSZWZQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDg2QThCRjI0
QUJFRDNDMDA3MzkyMkQgLyogSlNMb2NrUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0ODc0QUU2MTVFQkRFNEEwMDJFMzU4NyAv
KiBKU1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDg3NEFFMjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0OEE3QkYwMUI4Mjk3NUEwMDJEOTE1
NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0OEE3QkVFMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDhD
RDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4Q0QxRDcxMDhDRjkwMjAwODE2
M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxNDk4Q0FENjIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJ
ZE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDk4Q0FENTIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJZE1ldGFkYXRhLmggKi87IH07CisJ
CTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBMTU2MzAxMDk2NjM2NTAw
NkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRBNDY4MEMyMTZGQTU2NTAwMEQyQjFBIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEE0NjgwQTIxNkZBNTM1MDAwRDJCMUEgLyogSW5zdHJ1Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEE0NjgwRDIxNkZBNTZBMDAwRDJC
MUEgLyogT3Bjb2RlU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRBNDY4MEIyMTZGQTUzNTAwMEQyQjFBIC8qIE9wY29kZVNpemUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEFCNjY3NjFERUNG
NDA5MDBBNTZDMjYgLyogVW5saW5rZWRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCNjY3NTFERUNGNDA5MDBBNTZDMjYgLyogVW5s
aW5rZWRTb3VyY2VDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMTRBRDkxMEMxRENBOTI5NDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUQ5MTA2MURD
QTkyOTQwMDE0RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmggKi87IH07CisJCTE0QUQ5MTBEMURDQTky
OTQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBRDkxMDcxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0
aW9uQ29kZUJsb2NrLmggKi87IH07CisJCTE0QUQ5MTBFMURDQTkyOTQwMDE0RjlGRSAvKiBHbG9i
YWxDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0QUQ5MTA4MURDQTkyOTQwMDE0RjlGRSAvKiBHbG9iYWxDb2RlQmxvY2suaCAqLzsgfTsK
KwkJMTRBRDkxMEYxRENBOTI5NDAwMTRGOUZFIC8qIE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUQ5MTA5MURD
QTkyOTQwMDE0RjlGRSAvKiBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggKi87IH07CisJCTE0QUQ5
MTEwMURDQTkyOTQwMDE0RjlGRSAvKiBQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFEOTEwQTFEQ0E5Mjk0MDAxNEY5RkUg
LyogUHJvZ3JhbUNvZGVCbG9jay5oICovOyB9OworCQkxNEFEOTEyMjFEQ0E5RkE0MDAxNEY5RkUg
LyogVW5saW5rZWRHbG9iYWxDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUQ5MTFDMURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEds
b2JhbENvZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0QUQ5MTIzMURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEFEOTExRDFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0QUQ5MTI0
MURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEV2YWxDb2RlQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QUQ5MTFFMURDQTlGQTQwMDE0RjlG
RSAvKiBVbmxpbmtlZEV2YWxDb2RlQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxNEFEOTEyNTFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEFEOTExRjFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMTRBRDkxMjYxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTRBRDkxMjAxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Qjcy
M0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QjcyMzQwMTJEN0QwREEwMDNCRDVF
RCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkxNEI4RUM3MjBBNTY1MjA5MDA2MkJFNTQgLyogQ29yZUZvdW5k
YXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1l
d29yayAqLzsgfTsKKwkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJBNzhGMDEz
QUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCQTdB
OTYxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxNEJENTlDNTBBM0U4RjlGMDBCQUY1OUMgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayAqLzsgfTsKKwkJMTRCRDY4OUQyMTUxOTFDMTAwNTBEQUZGIC8qIExMSW50U2V0dGlu
Z3NFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRCRDY4OUMyMTUxOTFCMzAwNTBEQUZGIC8qIExMSW50U2V0dGluZ3NFeHRyYWN0b3Iu
Y3BwICovOyB9OworCQkxNEJFN0QzMzE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkU3RDMyMTcx
MzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0QkZDRTY5MTBDREIxRkMwMDM2NENDRSAvKiBXZWFr
R0NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEMyNUI5RTIxNkVBMzZBMDAxMzc3NjQg
LyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0Q0MzQkEyMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVh
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0
Q0E5NThCMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNENBOTU4QTE2QUI1MERF
MDA5MzhBMDYgLyogU3RhdGljUHJvcGVydHlBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0Q0E5NThEMTZBQjUwRkEwMDkzOEEwNiAv
KiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMTREMDFBNzcyMUZCMzUxRjAwQkM1NEU5IC8qIEpTU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDAx
QTc2MjFGQjM1MDMwMEJDNTRFOSAvKiBKU1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi87IH07CisJ
CTE0RDAxQkU2MjZERUVGMzgwMENBRTBEMCAvKiBXZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQwMUJEQTI2
REVFRjM3MDBDQUUwRDAgLyogV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvci5oICovOyB9OworCQkx
NEQwMUJFNzI2REVFRjM4MDBDQUUwRDAgLyogV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDAxQkRCMjZERUVG
MzcwMENBRTBEMCAvKiBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oICovOyB9OworCQkxNEQwMUJF
OTI2REVFRjM4MDBDQUUwRDAgLyogV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDAxQkREMjZERUVG
MzcwMENBRTBEMCAvKiBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5oICovOyB9OworCQkx
NEQwMUJFQzI2REVFRjM4MDBDQUUwRDAgLyogSlNXZWJBc3NlbWJseVRhZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMDFCRTAyNkRFRUYzNzAwQ0FF
MEQwIC8qIEpTV2ViQXNzZW1ibHlUYWcuaCAqLzsgfTsKKwkJMTREMDFCRUQyNkRFRUYzODAwQ0FF
MEQwIC8qIEpTV2ViQXNzZW1ibHlFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDAxQkUxMjZERUVGMzgwMENBRTBEMCAvKiBKU1dlYkFz
c2VtYmx5RXhjZXB0aW9uLmggKi87IH07CisJCTE0RDAxQkVGMjZERUVGMzgwMENBRTBEMCAvKiBX
ZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQwMUJFMzI2REVFRjM4MDBDQUUwRDAgLyogV2ViQXNz
ZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQkxNEQwMUJGNTI2REVFRjUzMDBD
QUUwRDAgLyogV2FzbVRhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTREMDFCRjMyNkRFRUY1MjAwQ0FFMEQwIC8qIFdhc21UYWcuaCAqLzsgfTsKKwkJ
MTREMkYzREIxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEg
LyogTWFya2VkU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkxNERGMDREQTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFs
eXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRE
RjA0RDkxNkIzOTk2RDAwMTZBNTEzIC8qIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEU4NEY5RjE0RUUx
QUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5QTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRFODRG
QTExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTg0RjlDMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTRF
ODRGQTIxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU4NEY5RDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vh
a0ltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkxNEYwOUMyQTIyMzE5MjMxMDBDRjg4RUIgLyogQ2FjaGVkVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0JFMjY1MjFDODU3NzcwMDIwQ0Qx
NyAvKiBDYWNoZWRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTE0RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjcyNTY0
MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNEY3OUY3MDIxNkVBRkQyMDAwNDZEMzkg
LyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTND
IC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFF
RTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi87IH07CisJCTI2MkQ4NUI3MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJG
aXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLzsgfTsKKwkJMjY4NEQ0MzgxQzAwMTYxQzAwODFE
NjYzIC8qIEFpckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNjg0RDQzNzFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCAqLzsg
fTsKKwkJMjY5RDYzNkUxQkZCRTVEMTAwMTAxQjFEIC8qIEZUTE91dHB1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY5RDYzNkQxQkZCRTVEMDAwMTAx
QjFEIC8qIEZUTE91dHB1dC5oICovOyB9OworCQkyQTA1QUJENjE5NjFERjI0MDAzNDE3NTAgLyog
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTA1QUJENDE5NjFERjI0MDAzNDE3NTAgLyogSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkExMTEyNDQx
OTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1
RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oICovOyB9OworCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2Vk
VmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwu
aCAqLzsgfTsKKwkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJB
ODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzOEExOEQ3
RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAv
KiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBQUJDREU3MThFRjI5NDIw
MDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBQUJDREU2MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQUFDRTYzRDE4
Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMkVE
RkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3
NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCAqLzsgfTsKKwkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlE
VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJB
RjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQzNDJGMzZGNzI0NDA5Njgw
NEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMzMTEx
QjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTVDNzA1MjI1NTVGNkQw
MEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CisJCTMzQTkyMEJEMjNEQTJD
NkQwMDBFQkFGMCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0E5MjBCQzIzREEyQzZEMDAwRUJBRjAgLyog
Q29tbW9uU2xvd1BhdGhzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTMzQjJBNTQ3MjI2NTM0ODEwMDVBMEY3OSAvKiBCM1ZhbHVlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
Qzg0RkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVJbmxpbmVzLmggKi87IH07CisJCTMzQjJB
NTQ4MjI2NTQzQkYwMDVBMEY3OSAvKiBGVExMb3dlckRGR1RvQjMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMDQxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTExvd2VyREZHVG9CMy5jcHAgKi87IH07CisJCTM3QzczOEQyMUVEQjU2RTQwMDNGMkIw
QiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdDNzM4RDExRURCNTY3MjAwM0YyQjBCIC8qIFBhcnNlSW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDEyOTUyNzcxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQy
Q0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFk
ZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193
cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEyOTUyNzQxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMjk1Mjc5MUQyQ0Y2QkMwMEU3OEI4
OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAv
KiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTI5NTI3QTFEMkNGNkJDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMzU5Q0YzMEZE
RDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVD
b252ZXJzaW9uLmggKi87IH07CisJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGlu
VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
REVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MzE5REEwNDFDMUJFNDBEMDAxRDI2
MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMxOURBMDIxQzFCRTNDMTAwMUQyNjBCIC8q
IEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCAqLzsgfTsKKwkJNDM0MEE0ODUxQTkw
NTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDBBNDgzMUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDM0
MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQyMkE2MTFDMTU4NzFCMDBFMkVC
OTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCAqLzsgfTsKKwkJNDM0MjJBNjcxQzE2MjY3ODAwRTJF
Qjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNl
RG91YmxlVG9GbG9hdC5oICovOyB9OworCQk0MzZFNTQ1MzFDNDY4RTc0MDBCNUFGNzMgLyogQjNM
ZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNkU1NDUyMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5
T2Zmc2V0cy5oICovOyB9OworCQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0
cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0FC
MjZDNTFDMUE1MkY3MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggKi87IH07CisJCTQzQzM5MkFC
MUMzQkVCMDUwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBB
c3NlbWJsZXJDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYw
RUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCTQ1
MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RB
NEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRC
MDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0QkFBMDdDRUI4MUY0OUEyOTZFMDIyMDMg
LyogV2FzbVNpZ25hdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMwQTVGNDAzRjExQzRGNTk5Q0Q1OTZENSAvKiBXYXNtU2lnbmF0dXJl
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUyMEQ5OUYxMjM4OENDODEwMDA1MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMEQ5OUYwMjM4OENDNzgw
MDA1MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCAqLzsgfTsKKwkJNTIxMTMxRjcxRjgyQkYxNDAw
N0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjExMzFGNjFGODJCRjExMDA3Q0NFRUUgLyogUG9seVBy
b3RvQWNjZXNzQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MjEzMjI0NjFFQ0JDRTgyMDBGNjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlv
bkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
MTMyMjQ0MUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oICovOyB9
OworCQk1MjI5MjdENTIzNUZEMEI5MDA1Q0IxNjkgLyogR0NNZW1vcnlPcGVyYXRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjcyOTg3QjIzNUZD
OEJBMDA1Qzk4MkMgLyogR0NNZW1vcnlPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTI0RTlENzMyMjA5MkI1MjAwQTZCRUVFIC8q
IEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNEU5RDcyMjIwOTJCNDYwMEE2
QkVFRSAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmggKi87
IH07CisJCTUyNTBEMkQyMUU4REEwNUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjUwRDJEMDFFOERBMDVBMDAy
OUE5MzIgLyogV2FzbVRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjVDMEREODFF
OTM1ODQ3MDAyMTg0Q0QgLyogV2FzbUNhbGxlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBXYXNt
QWlySVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5j
cHAgKi87IH07CisJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhEMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MjY3OEY5MTFBMDQxNzdDMDA2
QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOTAxQTA0MTc3QzAwNkEzMDZEIC8qIENvbnRyb2xG
bG93UHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MjY3Q0Y4MjI0OTMxNkIxMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3Q0Y4MTI0
OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUx
IC8qIFdhc21DYWxsZWVHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21DYWxsZWVHcm91cC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyN0NF
MzU0MjI1NTVGRTUwMEM2RjM4MiAvKiBKU1RvV2FzbUlDQ2FsbGVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjdDRTM1MzIyNTU1RkREMDBDNkYzODIg
LyogSlNUb1dhc21JQ0NhbGxlZS5oICovOyB9OworCQk1MjdFNkNFQzI3NzJCOUNCMDA1RTA3ODIg
LyogV2FzbU9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTI3RTZDRUIyNzcyQjlDNTAwNUUwNzgyIC8qIFdhc21PU1JFbnRyeVBsYW4u
aCAqLzsgfTsKKwkJNTI4NDdBREMyMUZGQjg2OTAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI4NDdB
REEyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oICovOyB9OworCQk1MkIz
MTBGQjE5NzRBRTYxMDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTBGQTE5NzRBRTYx
MDA4MDg1N0MgLyogRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdD
IC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkIzMTEwMDE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
MkI1MTAwRDI2NUVGQ0RCMDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjUxMDBCMjY1RUZDRDQwMDg5
NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oICovOyB9OworCQk1MkMwNjExRjFBQTUxRTFDMDBC
NEFEQkEgLyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyQzA2MTFEMUFBNTFFMUIwMEI0QURCQSAvKiBSdW50aW1lVHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUyQzU1NTY2
MjI0QzJBRUEwMDk5RjVDQyAvKiBERkdWYWx1ZVJlcFJlZHVjdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkM1NTU2NTIyNEMyQUU3MDA5
OUY1Q0MgLyogREZHVmFsdWVSZXBSZWR1Y3Rpb25QaGFzZS5oICovOyB9OworCQk1MkM5NTJCNzE5
QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkM5NTJCNjE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVBy
b2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTJDRDBGNUQyMjQyRjU2OTAwNEExOEE1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4
NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQk1MkNEMEY1RTIy
NDJGNTY5MDA0QTE4QTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2
OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJNTJDRDBGNjgyMjQyRjcx
QzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwICov
OyB9OworCQk1MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkREMDAwNjI2RTAz
OUIzMDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTJFNjVBMUMyNzY4Mjc2MDAwMkI0QzBBIC8qIEIz
RXN0aW1hdGVTdGF0aWNFeGVjdXRpb25Db3VudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFNjVBMUEyNzY4Mjc2MDAwMkI0QzBBIC8qIEIzRXN0
aW1hdGVTdGF0aWNFeGVjdXRpb25Db3VudHMuY3BwICovOyB9OworCQk1MkU2NUExRTI3NjgyNzcx
MDAyQjRDMEEgLyogQjNFc3RpbWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFNjVBMUIyNzY4Mjc2MDAwMkI0
QzBBIC8qIEIzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25Db3VudHMuaCAqLzsgfTsKKwkJNTJFRUQ3
OTQyNDkyQjg3MDAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMg
LyogRnVuY3Rpb25BbGxvd2xpc3QuaCAqLzsgfTsKKwkJNTJGNkMzNUUxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNTJGREFCQzMyNzg4MDc2QjAwQzE1QjU5
IC8qIFdhc21JUkdlbmVyYXRvckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRkRBQkMyMjc4ODA3NjkwMEMxNUI1OSAvKiBXYXNtSVJHZW5l
cmF0b3JIZWxwZXJzLmggKi87IH07CisJCTUzMEE2NkI5MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMy1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMEE2NkIxMUZBM0U3N0EwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMy1tbS5tbSAq
LzsgfTsKKwkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMwQTY2Qjgx
RkEzRTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tICovOyB9OworCQk1MzBBNjZC
QjFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZCNTFGQTNFNzdEMDAyNkE1NDUg
LyogVW5pZmllZFNvdXJjZTUtbW0ubW0gKi87IH07CisJCTUzMEE2NkJDMUZBM0U3OEIwMDI2QTU0
NSAvKiBVbmlmaWVkU291cmNlMTM3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMEE2NkIyMUZBM0U3N0IwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNl
MTM3LmNwcCAqLzsgfTsKKwkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3Vy
Y2UxMzguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTMwQTY2QjQxRkEzRTc3QzAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzguY3BwICovOyB9Owor
CQk1MzBBNjZCRTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzOS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZBRTFGQTNFNzc4
MDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEzOS5jcHAgKi87IH07CisJCTUzMEE2NkJGMUZBM0U3
OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEE2NkIzMUZBM0U3N0MwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMTQwLmNwcCAqLzsgfTsKKwkJNTMwQTY2QzAxRkEzRTc4QjAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxNDEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTMwQTY2QUYxRkEzRTc3OTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDEuY3Bw
ICovOyB9OworCQk1MzBBNjZDMTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0Mi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZC
NjFGQTNFNzdEMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0Mi5jcHAgKi87IH07CisJCTUzMEE2
NkMyMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMEE2NkI3MUZBM0U3N0QwMDI2QTU0
NSAvKiBVbmlmaWVkU291cmNlMTQzLmNwcCAqLzsgfTsKKwkJNTMwQTY2QzMxRkEzRTc4QjAwMjZB
NTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTMwQTY2QUQxRkEzRTc3NzAwMjZBNTQ1IC8qIFVuaWZpZWRTb3Vy
Y2UxNDQuY3BwICovOyB9OworCQk1MzBBNjZDNDFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTE0NS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzBBNjZCMDFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTE0NS5jcHAgKi87IH07
CisJCTUzMEE2NkNEMUZCMTM0NkQwMDI2QTU0NSAvKiBTdXBlclNhbXBsZXJCeXRlY29kZVNjb3Bl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZD
QzFGQjEzNDZEMDAyNkE1NDUgLyogU3VwZXJTYW1wbGVyQnl0ZWNvZGVTY29wZS5oICovOyB9Owor
CQk1MzBGQjMwMjFFN0EwQjZFMDAzQzE5REQgLyogV2FzbVdvcmtsaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGQjMwMTFFN0EwQjZFMDAzQzE5
REQgLyogV2FzbVdvcmtsaXN0LmggKi87IH07CisJCTUzMEZERTc1MjFGQUIwMDYwMDA1OUQ2NSAv
KiB0ZXN0SW5jbHVkZXMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLzsgfTsK
KwkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzExQkQ0OTFFQTU4MUU1MDA1MjUy
ODEgLyogV2FzbU9NR1BsYW4uaCAqLzsgfTsKKwkJNTMxMzc0QkQxRDVDRTY3NjAwQUY3QTBCIC8q
IFdhc21QbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLzsgfTsKKwkJNTMxODA0
NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyog
QjNFeHRyYWN0VmFsdWUuaCAqLzsgfTsKKwkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0
aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAqLzsgfTsKKwkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVD
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwICovOyB9OworCQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyog
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklU
LmNwcCAqLzsgfTsKKwkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9
OworCQk1MzM4RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhF
MkE2MjM5NkVGRUMwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzMzhFQkEzMjNB
QjA0QjgwMDM4MjY2MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzOEVCQTIyM0FCMDRBMzAwMzgyNjYy
IC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi87IH07CisJCTUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NzIyQzJEOUQyMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDYyMkMyRDlEMTAwNEQy
RkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLzsgfTsKKwkJNTM0MUZDNzIxREFDMzQz
QzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFGQzcxMURBQzM0M0MwMEU3RTRENyAvKiBC
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CisJCTUzNDYzODcxMUU3MENGM0QwMEYxMkFD
MSAvKiBKU1J1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM0NjM4
NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEg
LyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJC
NjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MzQ5MDI4NTFDNzI3NkI3MDAxMkJDQjggLyog
VHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3Bw
ICovOyB9OworCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzRDNDU3QjFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmggKi87IH07CisJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzRFMDM0RDFFNEQ0
QjE2MDAyMTNGNjQgLyogQWNjZXNzQ2FzZS5oICovOyB9OworCQk1MzRFMDM1NDFFNTNCRDI5MDAy
MTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0RTAzNTMxRTUzQkQyOTAwMjEzRjY0IC8qIElu
dHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaCAqLzsgfTsKKwkJNTM0RTAzNTYxRTUzQkVERTAwMjEz
RjY0IC8qIFByb3h5YWJsZUFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNEUwMzU1MUU1M0JFREUwMDIxM0Y2NCAvKiBQcm94eWFibGVB
Y2Nlc3NDYXNlLmggKi87IH07CisJCTUzNEUwMzU4MUU1M0JGMkYwMDIxM0Y2NCAvKiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzRFMDM1NzFFNTNCRjJGMDAyMTNGNjQgLyogR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5oICovOyB9OworCQk1MzUwMzU2NTI3MTQ3RTVBMDBFQzFBN0UgLyogU291cmNlSUQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTAzNTY0MjcxNDdF
NTkwMEVDMUE3RSAvKiBTb3VyY2VJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MjlBNEIx
QzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CisJCTUzNTU1NzE0MUQ5RDlFQTUw
MDZENTgzQiAvKiBXYXNtTWVtb3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyogV2FzbU1lbW9yeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzNUMyNDYx
MUY3ODkyOEUwMDZFQzQwRSAvKiBjcmVhdGVfcmVnZXhfdGFibGVzIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8q
IGNyZWF0ZV9yZWdleF90YWJsZXMgKi87IH07CisJCTUzNUMyNDZDMUY3QTE3NzgwMDZFQzQwRSAv
KiBVbmlmaWVkU291cmNlMTM2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNUMyNDZCMUY3QTE3NzcwMDZFQzQwRSAvKiBVbmlmaWVkU291cmNlMTM2
LmNwcCAqLzsgfTsKKwkJNTM2NjNGREEyMzU2MkY5NjAwNUVBNjhDIC8qIEJ5dGVjb2RlSW5kZXgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNjYzRkQ5
MjM1NjJGOTAwMDVFQTY4QyAvKiBCeXRlY29kZUluZGV4LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM2QjMxMEMxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMTkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM2QjMwODcxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTku
Y3BwICovOyB9OworCQk1MzZCMzEwRDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEy
NS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZC
MzA4ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNS5jcHAgKi87IH07CisJCTUz
NkIzMTBFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTMxLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMDg5MUY3MUM1MzgwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMTMxLmNwcCAqLzsgfTsKKwkJNTM2QjMxMEYxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzA4QTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTIyLmNwcCAqLzsgfTsKKwkJNTM2QjMxMTAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UzNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzZCMzA4QjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM2LmNwcCAqLzsgfTsK
KwkJNTM2QjMxMTExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzNy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzA4QzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM3LmNwcCAqLzsgfTsKKwkJNTM2QjMxMTIxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyMy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzA4RDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTIzLmNwcCAqLzsgfTsKKwkJNTM2QjMxMTMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMzAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM2QjMwOEUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzAuY3BwICov
OyB9OworCQk1MzZCMzExNDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzA4RjFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNC5jcHAgKi87IH07CisJCTUzNkIzMTE1
MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTE4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMDkwMUY3MUM1MzgwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMTE4LmNwcCAqLzsgfTsKKwkJNTM2QjMxMTYxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2QjMwOTExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Ux
MzIuY3BwICovOyB9OworCQk1MzZCMzExNzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTEyNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzZCMzA5MjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNi5jcHAgKi87IH07CisJ
CTUzNkIzMTE4MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOTMxRjcxQzUzODAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzNS5jcHAgKi87IH07CisJCTUzNkIzMTE5MUY3MUM1OTkw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOTQxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UyMS5jcHAgKi87IH07CisJCTUzNkIzMTFBMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMjAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM2QjMwOTUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyMC5jcHAgKi87IH07
CisJCTUzNkIzMTFCMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOTYxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzNC5jcHAgKi87IH07CisJCTUzNkIzMTFDMUY3MUM1
OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTI3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMDk3MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMTI3LmNwcCAqLzsgfTsKKwkJNTM2QjMxMUQxRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMzMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM2QjMwOTgxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzMuY3Bw
ICovOyB9OworCQk1MzZCMzExRTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyMy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzA5
OTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyMy5jcHAgKi87IH07CisJCTUzNkIz
MTFGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOUExRjcxQzUzODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UzMC5jcHAgKi87IH07CisJCTUzNkIzMTIwMUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2QjMwOUIxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
NC5jcHAgKi87IH07CisJCTUzNkIzMTIxMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MTguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2
QjMwOUMxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxOC5jcHAgKi87IH07CisJCTUz
NkIzMTIyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOUQxRjcxQzUzODAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxOS5jcHAgKi87IH07CisJCTUzNkIzMTIzMUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMjUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwOUUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UyNS5jcHAgKi87IH07CisJCTUzNkIzMTI0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlMzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM2QjMwOUYxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzMS5jcHAgKi87IH07CisJ
CTUzNkIzMTI1MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTIyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEEwMUY3MUM1Mzgw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTIyLmNwcCAqLzsgfTsKKwkJNTM2QjMxMjYxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQTExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMjAuY3BwICovOyB9OworCQk1MzZCMzEyNzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTEwOC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzZCMzBBMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAg
Ki87IH07CisJCTUzNkIzMTI4MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMjcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQTMx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyNy5jcHAgKi87IH07CisJCTUzNkIzMTI5
MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQTQxRjcxQzUzODAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UzMy5jcHAgKi87IH07CisJCTUzNkIzMTJBMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM2QjMwQTUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzMi5j
cHAgKi87IH07CisJCTUzNkIzMTJCMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMjYu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMw
QTYxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyNi5jcHAgKi87IH07CisJCTUzNkIz
MTJDMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEE3MUY3MUM1MzgwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMTA5LmNwcCAqLzsgfTsKKwkJNTM2QjMxMkQxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQTgxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMjEuY3BwICovOyB9OworCQk1MzZCMzEyRTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTgyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNkIzMEE5MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODIuY3BwICovOyB9Owor
CQk1MzZCMzEyRjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk2LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEFBMUY3MUM1Mzgw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTYuY3BwICovOyB9OworCQk1MzZCMzEzMDFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEFCMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlNjkuY3BwICovOyB9OworCQk1MzZCMzEzMTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTQxLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNkIzMEFDMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDEuY3BwICovOyB9
OworCQk1MzZCMzEzMjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU1LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEFEMUY3MUM1
MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTUuY3BwICovOyB9OworCQk1MzZCMzEzMzFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEFFMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNTQuY3BwICovOyB9OworCQk1MzZCMzEzNDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTQwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzNkIzMEFGMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDAuY3BwICov
OyB9OworCQk1MzZCMzEzNTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY4LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEIwMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjguY3BwICovOyB9OworCQk1MzZCMzEzNjFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk3LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEIxMUY3MUM1MzgwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlOTcuY3BwICovOyB9OworCQk1MzZCMzEzNzFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTgzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNkIzMEIyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODMuY3Bw
ICovOyB9OworCQk1MzZCMzEzODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk1LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEIz
MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTUuY3BwICovOyB9OworCQk1MzZCMzEz
OTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgxLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEI0MUY3MUM1MzgwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlODEuY3BwICovOyB9OworCQk1MzZCMzEzQTFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTU2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNkIzMEI1MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTYu
Y3BwICovOyB9OworCQk1MzZCMzEzQjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIz
MEI2MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDIuY3BwICovOyB9OworCQk1MzZC
MzEzQzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTguY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQjcxRjcxQzUzODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U4LmNwcCAqLzsgfTsKKwkJNTM2QjMxM0QxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNkIzMEI4MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOS5j
cHAgKi87IH07CisJCTUzNkIzMTNFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMw
QjkxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0My5jcHAgKi87IH07CisJCTUzNkIz
MTNGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQkExRjcxQzUzODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U1Ny5jcHAgKi87IH07CisJCTUzNkIzMTQwMUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlODAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2QjMwQkIxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4
MC5jcHAgKi87IH07CisJCTUzNkIzMTQxMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
OTQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2
QjMwQkMxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5NC5jcHAgKi87IH07CisJCTUz
NkIzMTQyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQkQxRjcxQzUzODAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U5MC5jcHAgKi87IH07CisJCTUzNkIzMTQzMUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlODQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQkUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2U4NC5jcHAgKi87IH07CisJCTUzNkIzMTQ0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlNTMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM2QjMwQkYxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1My5jcHAgKi87IH07CisJ
CTUzNkIzMTQ1MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzAxRjcxQzUzODAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0Ny5jcHAgKi87IH07CisJCTUzNkIzMTQ2MUY3MUM1OTkw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2U0Ni5jcHAgKi87IH07CisJCTUzNkIzMTQ3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlNTIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM2QjMwQzIxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1Mi5jcHAgKi87IH07
CisJCTUzNkIzMTQ4MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzMxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4NS5jcHAgKi87IH07CisJCTUzNkIzMTQ5MUY3MUM1
OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzQxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2U5MS5jcHAgKi87IH07CisJCTUzNkIzMTRBMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlODcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM2QjMwQzUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4Ny5jcHAgKi87
IH07CisJCTUzNkIzMTRCMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzYxRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5My5jcHAgKi87IH07CisJCTUzNkIzMTRDMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzcxRjcxQzUzODAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2U0NC5jcHAgKi87IH07CisJCTUzNkIzMTREMUY3MUM1OTkwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlNTAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM2QjMwQzgxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1MC5jcHAg
Ki87IH07CisJCTUzNkIzMTRFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQzkx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3OC5jcHAgKi87IH07CisJCTUzNkIzMTRG
MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQ0ExRjcxQzUzODAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3OS5jcHAgKi87IH07CisJCTUzNkIzMTUwMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlNTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM2QjMwQ0IxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1MS5j
cHAgKi87IH07CisJCTUzNkIzMTUxMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMw
Q0MxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0NS5jcHAgKi87IH07CisJCTUzNkIz
MTUyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwQ0QxRjcxQzUzODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U5Mi5jcHAgKi87IH07CisJCTUzNkIzMTUzMUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlODYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2QjMwQ0UxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4
Ni5jcHAgKi87IH07CisJCTUzNkIzMTU0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NDguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2
QjMwQ0YxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0OC5jcHAgKi87IH07CisJCTUz
NkIzMTU1MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRDAxRjcxQzUzODAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U2MC5jcHAgKi87IH07CisJCTUzNkIzMTU2MUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlNzQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRDExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2U3NC5jcHAgKi87IH07CisJCTUzNkIzMTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzZCMzBEMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3BwICovOyB9OworCQk1
MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRDMxRjcxQzUzODAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UzLmNwcCAqLzsgfTsKKwkJNTM2QjMxNTkxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U3NS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBENDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTc1LmNwcCAqLzsgfTsKKwkJNTM2QjMxNUExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2U2MS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzZCMzBENTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYxLmNwcCAqLzsgfTsKKwkJ
NTM2QjMxNUIxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0OS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBENjFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ5LmNwcCAqLzsgfTsKKwkJNTM2QjMxNUMxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4OC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBENzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTg4LmNwcCAqLzsgfTsKKwkJNTM2QjMxNUQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2U3Ny5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzZCMzBEODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc3LmNwcCAqLzsgfTsK
KwkJNTM2QjMxNUUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2My5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBEOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYzLmNwcCAqLzsgfTsKKwkJNTM2QjMxNUYxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMERBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMS5jcHAgKi87IH07CisJCTUzNkIzMTYwMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlNjIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTM2QjMwREIxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2Mi5jcHAgKi87IH07
CisJCTUzNkIzMTYxMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzYuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwREMxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3Ni5jcHAgKi87IH07CisJCTUzNkIzMTYyMUY3MUM1
OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwREQxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2U4OS5jcHAgKi87IH07CisJCTUzNkIzMTYzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlOTkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM2QjMwREUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5OS5jcHAgKi87
IH07CisJCTUzNkIzMTY0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwREYxRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3Mi5jcHAgKi87IH07CisJCTUzNkIzMTY1MUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRTAxRjcxQzUzODAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2U2Ni5jcHAgKi87IH07CisJCTUzNkIzMTY2MUY3MUM1OTkwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlNC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzZCMzBFMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQuY3BwICov
OyB9OworCQk1MzZCMzE2NzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRTIxRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1LmNwcCAqLzsgfTsKKwkJNTM2QjMxNjgxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2Ny5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBFMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTY3LmNwcCAqLzsgfTsKKwkJNTM2QjMxNjkxRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2U3My5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzZCMzBFNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTczLmNwcCAq
LzsgfTsKKwkJNTM2QjMxNkExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBFNTFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCAqLzsgfTsKKwkJNTM2QjMxNkIx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2NS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBFNjFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTY1LmNwcCAqLzsgfTsKKwkJNTM2QjMxNkMxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3MS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzZCMzBFNzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcxLmNw
cCAqLzsgfTsKKwkJNTM2QjMxNkQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1OS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBF
ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU5LmNwcCAqLzsgfTsKKwkJNTM2QjMx
NkUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEU5MUY3MUM1MzgwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlNy5jcHAgKi87IH07CisJCTUzNkIzMTZGMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzZCMzBFQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYuY3Bw
ICovOyB9OworCQk1MzZCMzE3MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU4LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEVC
MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTguY3BwICovOyB9OworCQk1MzZCMzE3
MTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEVDMUY3MUM1MzgwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlNzAuY3BwICovOyB9OworCQk1MzZCMzE3MjFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNkIzMEVEMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjQu
Y3BwICovOyB9OworCQk1MzZCMzE3MzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEw
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZC
MzBFRTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNC5jcHAgKi87IH07CisJCTUz
NkIzMTc0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTEwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEVGMUY3MUM1MzgwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMTEwLmNwcCAqLzsgfTsKKwkJNTM2QjMxNzUxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxNy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBGMDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTE3LmNwcCAqLzsgfTsKKwkJNTM2QjMxNzYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzZCMzBGMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE2LmNwcCAqLzsgfTsK
KwkJNTM2QjMxNzcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRjIxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEuY3BwICovOyB9OworCQk1MzZCMzE3ODFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBGMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTEwNS5jcHAgKi87IH07CisJCTUzNkIzMTc5MUY3MUM1OTkwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMTEzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzNkIzMEY0MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTEzLmNw
cCAqLzsgfTsKKwkJNTM2QjMxN0ExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMw
RjUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3BwICovOyB9OworCQk1MzZC
MzE3QjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI4LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEY2MUY3MUM1MzgwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMjguY3BwICovOyB9OworCQk1MzZCMzE3QzFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTE0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzNkIzMEY3MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MTQuY3BwICovOyB9OworCQk1MzZCMzE3RDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTE1LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NkIzMEY4MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTUuY3BwICovOyB9OworCQk1
MzZCMzE3RTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMEY5MUY3MUM1MzgwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMjkuY3BwICovOyB9OworCQk1MzZCMzE3RjFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBGQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTEwNi5jcHAgKi87IH07CisJCTUzNkIzMTgwMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMTEyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzNkIzMEZCMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTEyLmNwcCAqLzsg
fTsKKwkJNTM2QjMxODExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMwRkMxRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovOyB9OworCQk1MzZCMzE4MjFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzBGRDFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEwMi5jcHAgKi87IH07CisJCTUzNkIzMTgzMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM2QjMwRkUxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMS5j
cHAgKi87IH07CisJCTUzNkIzMTg0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMw
RkYxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzOS5jcHAgKi87IH07CisJCTUzNkIz
MTg1MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzguY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMxMDAxRjcxQzUzODAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UzOC5jcHAgKi87IH07CisJCTUzNkIzMTg2MUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMTAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM2QjMxMDExRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Ux
MC5jcHAgKi87IH07CisJCTUzNkIzMTg3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MTAzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NkIzMTAyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTAzLmNwcCAqLzsgfTsKKwkJ
NTM2QjMxODgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMxMDMxRjcxQzUzODAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwICovOyB9OworCQk1MzZCMzE4OTFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZCMzEwNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTEwMS5jcHAgKi87IH07CisJCTUzNkIzMThBMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlMTE1LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzNkIzMTA1MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTE1LmNwcCAq
LzsgfTsKKwkJNTM2QjMxOEIxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMxMDYx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjkuY3BwICovOyB9OworCQk1MzZCMzE4
QzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMTA3MUY3MUM1MzgwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMTIuY3BwICovOyB9OworCQk1MzZCMzE4RDFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTEzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzNkIzMTA4MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTMu
Y3BwICovOyB9OworCQk1MzZCMzE4RTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEy
OC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzZC
MzEwOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyOC5jcHAgKi87IH07CisJCTUz
NkIzMThGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTE0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMTBBMUY3MUM1MzgwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMTE0LmNwcCAqLzsgfTsKKwkJNTM2QjMxOTAxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMxMEIxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMDAuY3BwICovOyB9OworCQk1MzZCMzE5QTFGNzM1RTc4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzZCMzE5ODFGNzM1RTVDMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gKi87
IH07CisJCTUzNkIzMTlCMUY3MzVFNzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkIzMTk2MUY3
MzVFNUIwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSAqLzsgfTsKKwkJNTM2QjMxOUMx
RjczNUU3RDAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2QjMxOTcxRjczNUU1QjAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMzQuY3BwICovOyB9OworCQk1MzZCMzE5RDFGNzM1RTdEMDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTEzNS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzZCMzE5OTFGNzM1RTVEMDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEz
NS5jcHAgKi87IH07CisJCTUzNkIzMTlFMUY3MzVGMTYwMDM3RkMzMyAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsg
fTsKKwkJNTM3MDgwNkIxRkUyMzJERjAwMjk5RTQ0IC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCNjZCQjE3QjZC
NUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLzsgfTsKKwkJNTM3MEI0RjYxQkYy
NjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBC
NEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmggKi87IH07CisJCTUzODFCOTM5MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzgxQjkzODFFNjBFOTdEMDA5MEY3OTQgLyogV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUz
OEYxNUU3MjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEYxNUREMjY4RkJCQjMwMEQ2
MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ4LmNwcCAqLzsgfTsKKwkJNTM4RjE1RTgyNjhGQkJCNjAw
RDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM4RjE1REUyNjhGQkJCMzAwRDYwMUM0IC8qIFVuaWZpZWRT
b3VyY2UxNTEuY3BwICovOyB9OworCQk1MzhGMTVFOTI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmll
ZFNvdXJjZTE1Mi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzhGMTVERjI2OEZCQkIzMDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1Mi5jcHAgKi87
IH07CisJCTUzOEYxNUVBMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTU0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOEYxNUUwMjY4
RkJCQjQwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTU0LmNwcCAqLzsgfTsKKwkJNTM4RjE1RUIy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM4RjE1RTEyNjhGQkJCNDAwRDYwMUM0IC8q
IFVuaWZpZWRTb3VyY2UxNTAuY3BwICovOyB9OworCQk1MzhGMTVFRDI2OEZCQkI2MDBENjAxQzQg
LyogVW5pZmllZFNvdXJjZTE1My5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzhGMTVFMzI2OEZCQkI1MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1
My5jcHAgKi87IH07CisJCTUzOEYxNUVFMjY4RkJCQjYwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNl
MTQ3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
OEYxNUU0MjY4RkJCQjUwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ3LmNwcCAqLzsgfTsKKwkJ
NTM4RjE1RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM4RjE1RTUyNjhGQkJCNTAw
RDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwICovOyB9OworCQk1MzhGMTVGMDI2OEZCQkI2
MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzhGMTVFNjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmll
ZFNvdXJjZTE0OS5jcHAgKi87IH07CisJCTUzOEYxNUYyMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlm
aWVkU291cmNlMTQ2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzOEYxNUYxMjY4RkJDN0IwMEQ2MDFDNCAvKiBVbmlmaWVkU291cmNlMTQ2LmNwcCAq
LzsgfTsKKwkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLzsgfTsKKwkJNTM5OTMwQzgyMkFEM0I5QTAw
NTFDREUyIC8qIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5OTMwQzcyMkFEM0I5QTAwNTFDREUyIC8qIFdl
YWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzlCRkJBRTIyQUQzQzNBMDAyM0Y0
QzAgLyogV2Vha09iamVjdFJlZlByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5QkZCQUQyMkFEM0MzQTAwMjNGNEMwIC8qIFdlYWtPYmpl
Y3RSZWZQcm90b3R5cGUuaCAqLzsgfTsKKwkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpT
V2Vha09iamVjdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM5QkZCQUYyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oICovOyB9
OworCQk1MzlERDdGNTIzQzFCQkI1MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzlERDdGNDIzQzFCQkE5
MDA5MDVGMTMgLyogSlNBcnJheUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM5RkI4QkExQzk5REE3QzAwOTQwRkExIC8qIEpTQXJy
YXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1M0I0QkQxMjFGNjhCMzI1
MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMzQjE1REUxREM3RjQ2MzAwNEQ1MDBBIC8qIFdhc21PcHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1M0I2MDFFQzIwMzRC
OEM1MDA2QkU2NjcgLyogSlNDYXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0I2MDFFQjIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNDMkNFOUMyMkZD
QzNENjAwOEIyODUzIC8qIEFpckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzJDRTlCMjJGQ0MzRDYwMDhCMjg1MyAvKiBBaXJIZWxwZXJz
LmggKi87IH07CisJCTUzQzRGNjZCMjFCMUE0MDkwMDJGRDAwOSAvKiBKU0FQSUdsb2JhbE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDNEY2
NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggKi87IH07CisJCTUzQzZG
RUVGMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M2RkVFRTFFOEFERkE5MDBCMTg0MjUg
LyogV2FzbU9wY29kZU9yaWdpbi5oICovOyB9OworCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQg
LyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzQ0E3MzA4MUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oICovOyB9Owor
CQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRDM1
NDk3MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oICov
OyB9OworCQk1M0Q0MUVDOTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Q0MUVD
ODIzQzAwODEwMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNENDQ0REMxREFGMDhBQjAw
QjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNENDQ0REIxREFGMDhBQjAwQjkyNzg0IC8qIEIzV2FzbUFk
ZHJlc3NWYWx1ZS5oICovOyB9OworCQk1M0UxRjhGODIxNTQ3MTVBMDAwMUREQkMgLyogSlNWYWx1
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRTFGOEY3MjE1NDcxNDkwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzRTc3N0U0MUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNt
TW9kdWxlSW5mb3JtYXRpb24uaCAqLzsgfTsKKwkJNTNFOUUwQUMxRUFFODNERjAwRkVFMjUxIC8q
IFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFk
cy5oICovOyB9OworCQk1M0U5RTBBRjFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0U5RTBB
RTFFQUVDNDU3MDBGRUUyNTEgLyogV2FzbVRpZXJVcENvdW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTNFQUZFMkYyMDhERkFCNDAwN0Q1MjRC
IC8qIHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTMxRDRFMTkxRjU5Q0REMjAwRUM4MzZDIC8qIHRlc3RhcGkuY3BwICovOyB9OworCQk1
M0VFMDFCNjIxOEY2OTE2MDBBRDFGOEQgLyogSlNTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUUwMUI1MjE4RjY5MEYwMEFEMUY4RCAvKiBK
U1NjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUzRUUwMUI4MjE4RjdFRkYwMEFEMUY4RCAvKiBKU1NjcmlwdEludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VFMDFCNzIxOEY3RUZG
MDBBRDFGOEQgLyogSlNTY3JpcHRJbnRlcm5hbC5oICovOyB9OworCQk1M0YxMUY0MTIwOTEzOEQ3
MDBFNDExQTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjExRjQwMjA5MTM4RDcwMEU0MTFBNyAvKiBKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTUzRjQwRTg1MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTg0MUQ1
OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2Fz
bUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmgg
Ki87IH07CisJCTUzRjQwRThEMUQ1OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYy
MDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovOyB9OworCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUEx
QjYgLyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVy
YXRvci5oICovOyB9OworCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUzRkQwNEQ0MUQ3QUIyOTEwMDMy
ODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEODFE
QjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi87IH07CisJCTVCNzBDRkUwMURC
NjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk1QjcwQ0ZFMjFEQjY5RTY2MDBF
QzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IH07CisJCTVDM0E3N0I0MjJGMjQ3RkMwMDM4MjdG
RiAvKiB0ZXN0YjNfOC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzNBNzdCMzIyRjI0N0NCMDAzODI3RkYgLyogdGVzdGIzXzguY3BwICovOyB9Owor
CQk1QzNBNzdCNTIyRjI0ODAwMDAzODI3RkYgLyogdGVzdGIzXzcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3QUQyMkYyNDdDOTAwMzgyN0ZG
IC8qIHRlc3RiM183LmNwcCAqLzsgfTsKKwkJNUMzQTc3QjYyMkYyNDgwMzAwMzgyN0ZGIC8qIHRl
c3RiM182LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDM0E3N0FGMjJGMjQ3Q0EwMDM4MjdGRiAvKiB0ZXN0YjNfNi5jcHAgKi87IH07CisJCTVDM0E3
N0I3MjJGMjQ4MDYwMDM4MjdGRiAvKiB0ZXN0YjNfNS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNBNzdCMDIyRjI0N0NCMDAzODI3RkYgLyogdGVz
dGIzXzUuY3BwICovOyB9OworCQk1QzNBNzdCODIyRjI0ODA5MDAzODI3RkYgLyogdGVzdGIzXzQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzQTc3
QUUyMkYyNDdDQTAwMzgyN0ZGIC8qIHRlc3RiM180LmNwcCAqLzsgfTsKKwkJNUMzQTc3QjkyMkYy
NDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDM0E3N0IxMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMy5j
cHAgKi87IH07CisJCTVDM0E3N0JBMjJGMjQ4MEYwMDM4MjdGRiAvKiB0ZXN0YjNfMi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzNBNzdCMjIyRjI0
N0NCMDAzODI3RkYgLyogdGVzdGIzXzIuY3BwICovOyB9OworCQk1QzQxOTY2MjIyNzBFMDAwMDA0
N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRpYmlsaXR5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDE5NjYxMjI3MERG
RjMwMDQ3QjdDRCAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckNvbXBhdGliaWxpdHkuY3Bw
ICovOyB9OworCQk1QzRFOEU5NjFEQkVCRTYyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRFOEU5NDFE
QkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgKi87IH07CisJCTVENUQ4QUQxMEUw
RDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVk
aXQuZHlsaWIgKi87IH07CisJCTVEQkIxNTI1MTMxRDBCRDcwMDU2QUQzNiAvKiBtaW5pZG9tLmpz
IGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQxMjExMEQwQTQ4Nzg4NzAwNDgwMjU1IC8qIG1pbmlkb20uanMgKi87IH07CisJCTVERTZF
NUIzMEUxNzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAv
KiBjcmVhdGVfaGFzaF90YWJsZSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9
OworCQk2MjNBMzdFQzFCODdBN0MwMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyM0EzN0VCMUI4N0E3QkQwMDc1
NDIwOSAvKiBSZWdpc3Rlck1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTYyNzY3MzI0MUI2ODBDMUUwMEZEOUYyRSAvKiBDYWxsTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI3NjczMjIxQjY4
MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9u
UmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjJENzU1RDcxQjg0RkI0
QTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkQ3NTVEMTFCODRGQjM5MDAxODAxRkEgLyogQ2FsbEZy
YW1lU2h1ZmZsZXIuaCAqLzsgfTsKKwkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQxIC8qIENhbGxG
cmFtZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MkVDOUJCNTFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2MkYy
QUEzODFCMEJFREUzMDA2MTBDN0EgLyogREZHTGF6eU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyQTlBMjlGMUIwQkVENDgwMEJENTRDQSAvKiBE
RkdMYXp5Tm9kZS5oICovOyB9OworCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBl
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUw
N0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTExMjJGRDE0MDQ2QTRDMDAyQjEwMUQg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJNjUxMTIyRkUxNDA0NkE0QzAwMkIxMDFEIC8qIGxp
YmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKKwkJ
NjUxMTIzMDcxNDA0NkIwQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAuY3BwICovOyB9OworCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyog
Qnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NTE0RjIxNzE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjUzMDNENjQxNDQ3QjlFMTAwRDNG
OTA0IC8qIFBhcnNlclRva2Vucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTY1M0JDNDNG
MjZEMDEzQTYwMEQ4QkUyMCAvKiBZYXJySklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTNCQzQzRTI2RDAxM0E2MDBEOEJFMjAgLyog
WWFyckpJVFJlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTY1NTcwRjVBMUFBNEMzRUEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1NzBGNTkx
QUE0QzAwQTAwOUIzQzIzIC8qIFJlZ3Jlc3MxNDEyNzUubW0gKi87IH07CisJCTY1N0NGNDU5MTlC
RjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4ODI0
QUYxRTVDRkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25m
aWdGaWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OEQzQTU1MTk2MzgyNjgwMDND
NDVENiAvKiBWTUVudHJ5UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNjU5Q0RBNUIxRjY3NTNGMjAwRDNFNTNGIC8qIFlhcnJVbmljb2Rl
UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU5Q0RBNUExRjY3NTA5ODAwRDNFNTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTY1QjgzOTJF
MUJBQ0FEMzYwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODM5MkMxQkFDQTkyQTAwNDRFODI0IC8qIENh
Y2hlZFJlY292ZXJ5LmggKi87IH07CisJCTZBMzhDRkFBMUUzMkI1QUIwMDYwMjA2RiAvKiBBc3lu
Y1N0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZBMzhDRkE4MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLzsgfTsK
KwkJNkFEMkNCNEQxOUI5MTQwMTAwMDY1NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZBRDJDQjRDMTlCOTE0
MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkIyMzYwQ0UyNkM2MjUzRDAwNTRBRUVDIC8q
IEpJVE9wZXJhdGlvblZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZCMjM2MENEMjZDNjI1M0MwMDU0QUVFQyAvKiBKSVRPcGVyYXRpb25W
YWxpZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNkI3NjdFN0IyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Qjc2N0U3
QTI2NzkxRjI3MDAxN0Y4RDEgLyogQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2QkNDRUMwNDI1RDFGQTI3
MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCQ0NFQzAzMjVEMUZBMjcwMDBGMzkxRCAv
KiBWZXJpZmllclNsb3RWaXNpdG9ySW5saW5lcy5oICovOyB9OworCQk3MDExM0Q0QzFBOERCMDkz
MDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDExM0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0
b3JPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDEzQ0E4QTFCNDkxQTk0
MDBDQUU2MTMgLyogSlNNaWNyb3Rhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MDVCNDFBQzFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBNDFB
NkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzA1QjQxQUUxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MDVCNDFBNjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sQ29uc3RydWN0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MDVCNDFCMDFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQUExQTZFNTAxRTAwNzE2
NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzA4RUJFMjMxQ0U4RjM1MDAwNDUzMTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggKi87IH07CisJ
CTcwOTRDNERGMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDk0QzRERDFB
RTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwOUZCODY4MUFFMzM1QzYw
MDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwOUZCODYyMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MDlGQjg2QTFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NDFBRTMzNUM2MDAzOUQwNjkgLyog
V2Vha1NldENvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZC
ODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCMEE5RDExQTlCNjY0NjAwMDEz
MDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTkx
MUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291
cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5
MTk3MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODgxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBCNzkxOTkxQzAyNEEyOTAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEExQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvclBy
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTcwQjc5MTlDMUMwMjRBNDkwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RDFDMDI0
NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwQjc5MTlEMUMwMjRBNTYwMDI0ODFFMiAv
KiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE5MDFDMDI0NkNFMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcwREMzRTBBMUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBEQzNFMDgxQjJE
RjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8q
IExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07
CisJCTcwRUMwRUMzMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRDFBQTBEN0RB
MDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYw
MTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEVDQTYwOTFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxMzFCRjgyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNj
YW5uYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzIxMzFCRjQyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oICovOyB9OworCQk3MjEz
MUJGOTI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjEzMUJGNTI2NTg3RUYyMDA3MTE0Q0YgLyog
SklUU2FmZXBvaW50LmggKi87IH07CisJCTcyMTMxQkZBMjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRQ
bGFuU3RhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMTMxQkY2MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFuU3RhZ2UuaCAqLzsgfTsKKwkJNzIx
MzFCRkMyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdvcmtsaXN0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRkIyNjU4N0VGQTAwNzEx
NENGIC8qIEpJVFdvcmtsaXN0SW5saW5lcy5oICovOyB9OworCQk3MjM5OThGNzI2NURCQ0RCMDA1
Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQ
bGFuLmggKi87IH07CisJCTcyNkI5MUIwMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2
QjkxQTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggKi87IH07CisJCTcy
NkI5MUIzMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFCMjY1ODE2NTMwMDhF
NkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZCOTFCNzI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2Qjkx
QUYyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCAqLzsgfTsKKwkJNzI2QjkxQkEyNjU4MjYz
RDAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFCODI2NTgyNjNDMDA4RTZGODIgLyogSklUQ29t
cGlsYXRpb25LZXkuaCAqLzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0
ZUJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oICovOyB9Owor
CQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMx
MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERl
bGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsK
KwkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBF
RjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKKwkJNzU5M0M4OThC
RTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8q
IFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFF
OTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxp
bmVBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc5MDVCQjY3MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OTE2MERCRTFDOEUzRUM4MDA4
QzA4NUEgLyogUHJveHlSZXZva2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5MTYwREJDMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9rZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5MTlCNzgw
MUUwMzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MTlCNzdGMUUwMzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBp
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3
OTIzM0MyQjFEMzQ3MTU3MDBDNUE4MzQgLyogSklUTWF0aElDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTIzM0MyOTFEMzQ3MTU3MDBDNUE4MzQgLyog
SklUTWF0aElDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzkyODFCRDEyMEI2MkIzRTAwMkUyQTYwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEw
NUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQk3OTI4MUJE
MjIwQjYyQjNFMDAyRTJBNjAgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAw
NzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJNzkyQ0IzNEExQzRF
RUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0ODFDNEVFRDVDMDBEMTNBRjMgLyogUENU
b0NvZGVPcmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3OTU0QkUwQjIwQjYyRDY0MDA5QkM4M0EgLyogdGVzdG1lbS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NTRCRTBBMjBCNjJENjMw
MDlCQzgzQSAvKiB0ZXN0bWVtLm1tICovOyB9OworCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMg
LyogSlNWaXJ0dWFsTWFjaGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5NUFDNjE3MjBBMjM1NEIwMDUyQzc2QyAvKiBKU1ZpcnR1YWxN
YWNoaW5lUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTc5NjQ2NTZBMUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTY0NjU2ODFCOTUyRkYw
MDAzMDU5RUUgLyogR2V0UHV0SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTc5NjVDMjE3MUU1RDc5OTYwMEI3NTkxRCAvKiBBaXJBbGxvY2F0
ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzk2NUMyMTUxRTVENzk5NjAwQjc1OTFEIC8qIEFpckFsbG9jYXRl
UmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzk2REFBMkIxRTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJp
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NkRB
QTJBMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxsZWVCaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzk2RkI0M0ExREZGOEMzRjAwMzlDOTVEIC8q
IEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OTZGQjQzOTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E4
MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5ODBDMTZEMUUzQTk0
MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTgwQzE2QjFFM0E5NDBFMDBCNzE2MTUg
LyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1
Y3R1cmVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzk4Njk0M0ExRjhDMEFDODAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzk4NzJDNDgyMjFCQkFG
MzAwOEM2OTY5IC8qIEpTQmFzZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OTg3MkM0NzIyMUJCQUVEMDA4QzY5NjkgLyogSlNCYXNlSW50
ZXJuYWwuaCAqLzsgfTsKKwkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdp
bk1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk5
RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdpbk1hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5QTA5MDgwMUQ3Njg0NjUwMDhC
ODg5QiAvKiBIYXNoTWFwSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzlBMDkwN0UxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzlBMjI4MzYx
RDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBMjI4MzQxRDM1RDcxRTAwRDhFMDY3IC8qIEFyaXRo
UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTc5QUJCMTdFMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QUJCMTdDMUU1Q0NCNTcw
MDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3OUFDMzBGRjFGOTk1MzY0MDA0ODRGRDcgLyogT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OUFDMzBGRTFGOTk1MzYzMDA0ODRGRDcgLyogT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVJbmxpbmVzLmggKi87IH07CisJCTc5QUYwQkU0MUQzRUZENEMwMEU5NUZBNSAv
KiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc5QUYwQkUzMUQzRUZENEMwMEU5NUZBNSAvKiBKSVRNYXRoSUNJbmxp
bmVSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3OUIwMENCRDFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlCMDBDQjkxQzZBQjA3
RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUIwMENCRjFDNkFCMDdFMDA4OEM2NUQgLyogUHJv
eHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5QjE3ODhFMUQzOTlCODAwMEIx
QTU2NyAvKiBKSVRNYXRoSUNGb3J3YXJkcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlBODk5RkUxRDM4NjEyRTAwRDE4QzczIC8qIEpJVE1hdGhJQ0Zv
cndhcmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzlCNzU5NzUxREZBNEM2MDAwNTIxNzRDIC8qIFdhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlCNzU5NzIxREZB
NEM2MDAwNTIxNzRDIC8qIFdhc21NZW1vcnlJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5Qjc1OTc2MURGQTRDNjAwMDUyMTc0
QyAvKiBXYXNtUGFnZUNvdW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUI3NTk3MzFERkE0QzYwMDA1MjE3NEMgLyogV2FzbVBhZ2VDb3VudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5QjgxOTkz
MUREMjVDRjUwMEREQzcxNCAvKiBKU0dsb2JhbE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjgxOTkyMUREMjVDRjUwMEREQzcx
NCAvKiBKU0dsb2JhbE9iamVjdElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3OUM0QjE1RTFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlDNEIxNUMxQkEyMTU4RjAwRkQ1OTJFIC8qIERGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUNGQzZGMDFDMzNCMTAwMDBDNzY4RUEgLyog
TExJbnRQQ1Jhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzlDRkM2RUYxQzMzQjEwMDAwQzc2OEVBIC8qIExMSW50UENSYW5nZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3OUQ1Q0Q1QjFDMTEw
NkE5MDBDRUNBMDcgLyogU2FtcGxpbmdQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlENUNENTkxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBs
aW5nUHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3OURBRTI3QTFFMDNDODIyMDBCNTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5REFFMjc5MUUw
M0M4MjIwMEI1MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAv
KiBIYXNPd25Qcm9wZXJ0eUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OURGQ0JEQTFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlD
YWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUVFMEJGRTFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBE
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdBOTc3NEE4MjA2QjgyRTQwMDhEMDNEMCAvKiBKU1dlYWtWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Nzc0QTcyMDZCODJDOTAwOEQw
M0QwIC8qIEpTV2Vha1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQzU0N0QyMUI2
OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3Jv
dGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mw
MDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDMTg0RTFCMTdCRURCRDMwMDdDQjYzQSAv
KiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzE4NEUxRjE3QkVFMjJFMDA3
Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NEUxRDE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNl
UHJvdG90eXBlLmggKi87IH07CisJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0U0RUU3
MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyog
U3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDg5NEQ2
MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg0MzIzRTc4MjVENUVDMTkwMEY5Nzc3
NiAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NDZGNTIwMUEzMkE1OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4NDMyM0U3OTI1RDVFQzI4MDBGOTc3NzYgLyogTnVsbFNldHRlckZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUyNUZDNDFBNkREM0Iz
MDA3QjU0OTUgLyogTnVsbFNldHRlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODQzMjNFN0EyNUQ1RUMzQjAwRjk3Nzc2IC8qIEdl
dHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzMzdCREUwRTFBRjBCODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg0MzIzRTdGMjVENUVDNkEw
MEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMyM0U3QjI1RDVFQzY5MDBGOTc3NzYgLyogSlND
dXN0b21TZXR0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTg0MzIzRTgwMjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUUz
MEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFERjBGM0E4M0MxMDBGODQ3
MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYw
MTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMjBGM0E4M0Mx
MDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIg
LyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxt
Q29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk4NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDI5NUZFMjZG
QjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MDI5NjA1MjZGQjU1MkQwMDc4RUI2MiAv
KiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJv
dG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA2RERFOTE4REE0NEFC
MDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjBCRDgwMTE0OEVBNkYyMDAxMTJCMkYgLyogSW50
cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJF
IC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjE1OEFCMzE1NUM4
QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlO
YW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
ODYxODE2NzcxRkI3OTI0MjAwRUNDNEVDIC8qIEJpZ0ludE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxODE2NzYxRkI3OTIyRjAwRUNDNEVD
IC8qIEJpZ0ludE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTg2MUFGNjA3MjVEMThDOUQwMDBCNjNFMSAvKiBCcmFuZGVkU3RydWN0dXJl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjFBRjYw
NjI1RDE4QzlEMDAwQjYzRTEgLyogQnJhbmRlZFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdE
MCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjI1NTNDRjE2MTM2QUE1MDA5RjE3RDAgLyogSlNQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2MjgxRUYwMjVCNjE2MDAwMDM2
NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjgxRUVGMjVCNjE2MDAwMDM2NzAwNCAvKiBDaGVj
a1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsKKwkJODYyODFFRjQyNUI2MUFGMDAwMzY3MDA0
IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI4MUVGMzI1QjYxQUYwMDAzNjcwMDQgLyogQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMuaCAqLzsgfTsKKwkJODYzQjIzRTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTg2M0ZCQzVBMjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzRkJDNTgyNUIwOTNCOTAw
RjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY1QTMwRjExMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pT
VmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjVEQTBDNTI1
Qjg5NTc0MDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzQyNUI4OTU3NDAwODc1Nzcy
IC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLzsgfTsKKwkJODY1REEwQzgyNUI4OTYwQzAw
ODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFBy
aXZhdGVCcmFuZFN0YXR1cy5oICovOyB9OworCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKKwkJODY2
NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAwMjNE
ODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9OworCQk4NjcwNEI0MzEyREI4QTgxMDBB
OUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjQxMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4
Q2hlY2tlci5oICovOyB9OworCQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjcwNEI3RTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3MDRCODcxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3MDRCODgxMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3MDRC
OEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlD
MENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2OTc2RTVGMUZBM0U4QkMw
MEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNTcxRkEzNzU0MDAwRTdDNEUxIC8qIEJpZ0ludENv
bnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODY5RUJDQjcwRThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OUVCQ0I2MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0
MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0Mg
LyogQVJNdjdSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QUREMTQzMEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QUREMTQ2
MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIg
LyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTg2Qjg2OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmll
bGRQdXRLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkI4NjkwMDI0Qjg5RUE0MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzM2RUVBMEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3Jv
QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAv
KiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2QzU2OEUyMTFB
MjEzRUUwMDA3RjdGRiAvKiBNSVBTUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RkYgLyogTUlQU1Jl
Z2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVBMDBFRTc5QTQ3MDAyODg2
ODIgLyogSklUSW5saW5lcy5oICovOyB9OworCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyog
SklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQg
LyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovOyB9OworCQk4NkQz
QjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExp
bmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4NkQ0NDZFQTI1QjIxMjUzMDBFQ0FFNzUgLyogSklUT3BhcXVlQnlwcm9kdWN0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZENDQ2RTYyNUIy
MTI0ODAwRUNBRTc1IC8qIEpJVE9wYXF1ZUJ5cHJvZHVjdHMuaCAqLzsgfTsKKwkJODZENDQ2RUIy
NUIyMTI1QzAwRUNBRTc1IC8qIEpJVE9wYXF1ZUJ5cHJvZHVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZENDQ2RTUyNUIyMTI0NzAwRUNBRTc1IC8q
IEpJVE9wYXF1ZUJ5cHJvZHVjdC5oICovOyB9OworCQk4NkQ0NDZFQzI1QjIxMjYwMDBFQ0FFNzUg
LyogSklUQ29tcGlsYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2RDQ0NkU3MjVCMjEyNDgwMEVDQUU3NSAvKiBKSVRDb21waWxhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RTExNkIx
MEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2Rl
TG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4NkUzQzYxMjE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MDYxNjdCQUI4NzAwNkQ3NjBB
IC8qIEpTVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCTg2RTNDNjEzMTY3QkFCRDcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA3MTY3QkFCODcwMDZE
NzYwQSAvKiBKU0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CisJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MEExNjdCQUI4
NzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OworCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFj
aGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZF
M0M2MEYxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTg2RTNDNjE3MTY3QkFCRUUwMDZE
NzYwQSAvKiBKU0NvbnRleHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MDkxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29udGV4dElu
dGVybmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MEMxNjdCQUI4NzAwNkQ3
NjBBIC8qIEpTV3JhcHBlck1hcC5oICovOyB9OworCQk4NkUzQzYxQjE2N0JBQkVFMDA2RDc2MEEg
LyogSlNWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkUzQzYwRTE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZUludGVybmFsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODZFM0M2
MUQxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFM0M2MTExNjdCQUI4NzAw
NkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAv
KiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZFQzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2Vy
LmggKi87IH07CisJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlE
QjYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi87IH07CisJCTg2RUM5
REM4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dy
YXBoLmggKi87IH07CisJCTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlE
QkMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggKi87IH07CisJCTg2RUM5REQw
MTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkVDOURDMDEzMjhERjgyMDAyQjJBRDcgLyogREZH
T3BlcmF0aW9ucy5oICovOyB9OworCQk4NkVDOUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVn
aXN0ZXJCYW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggKi87IH07CisJ
CTg2RUM5REQzMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQzlEQzMxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggKi87IH07CisJCTg2RUNBM0VBMTMyREVGMUMw
MDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkVDQTNFOTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oICovOyB9Owor
CQk4NkVDQTNGQTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQ0EzRjkxMzJERjI1QTAwMkIy
QUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLzsgfTsKKwkJODZGM0VFQkQxNjhDREU5MzAwNzdCOTJB
IC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkYzRUVCOTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNr
RnVuY3Rpb24uaCAqLzsgfTsKKwkJODZGM0VFQkYxNjhDREU5MzAwNzdCOTJBIC8qIE9iamNSdW50
aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkYzRUVCNjE2ODU1QTVCMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsK
KwkJODZGQTlFOTIxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGQTlFOTAxNDJCQkIyRTAw
MTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCThCM0JGNUU0MUUzRDM2OEIwMDc2QTg3QSAvKiBBc3luY0dl
bmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDhCM0JGNUUzMUUzRDM2NUEwMDc2QTg3QSAvKiBBc3luY0dlbmVyYXRvclBy
b3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJOEI2MDE2RjYxRjNFM0NDMDAwRjlERTZBIC8qIEFzeW5j
RnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEI2MDE2RjQxRjNFM0NDMDAwRjlERTZBIC8qIEFzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQk4QjlGNkQ1NjFENTkxMkZBMDAxQzczOUYg
LyogSXRlcmF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4QkMwNjQ4OTFF
MUFCQTY0MDBCMkI4Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkMwNjQ4ODFFMUE1ODQwMDBCMkI4
Q0EgLyogSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggKi87IH07CisJCThCQzA2NDhBMUUxQUJB
N0IwMEIyQjhDQSAvKiBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkMwNjQ4NjFFMUE0RkQxMDBC
MkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk4QkMw
NjQ4QjFFMUFCQTk0MDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkMwNjQ4
NDFFMUE0RkQxMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki87IH07CisJCThCQzA2NDkyMUUxQURDQzQwMEIyQjhDQSAvKiBBc3luY0dlbmVyYXRvclByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEJD
MDY0OTAxRTFBRDZBQzAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmggKi87IH07
CisJCThCQzA2NDk2MUUxRDg0NUMwMEIyQjhDQSAvKiBBc3luY0l0ZXJhdG9yUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkMwNjQ5NDFF
MUQ4MjhCMDBCMkI4Q0EgLyogQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MDIxM0UzQzEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlz
dGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTkwNjQzMzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1NjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCQTkzQzk1OTA0ODRDNUJBRDkz
MTZFQSAvKiBKU1NjcmlwdEZldGNoZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5MTI3OEQ1NTIxREVCODI2MDBCNTcxODQgLyogSW5zcGVjdG9y
QXVkaXRBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTEyNzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdlbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MTI3OEQ1ODIx
REVEQTk2MDBCNTcxODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTI3OEQ1NjIxREVEQTk0MDBCNTcx
ODQgLyogSlNHbG9iYWxPYmplY3RBdWRpdEFnZW50LmggKi87IH07CisJCTkxNjhCRDg3MjQ0N0JB
NEUwMDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTE2OEJEODUyNDQ3QkE0RDAwODBGRkI0IC8qIEFnZ3JlZ2F0
ZUVycm9yLmggKi87IH07CisJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxNzdB
MURCMjJGOTU4RDMwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MThFMTVDMTI0NDdCMjI3MDA0NDdBNTYg
LyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkxOEUxNUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVF
cnJvclByb3RvdHlwZS5oICovOyB9OworCQk5MThFMTVDMzI0NDdCMjI3MDA0NDdBNTYgLyogQWdn
cmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTE4RTE1QkYyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJOTMwNTJDMzUwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNl
ckFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzJGNUJEMzA4MjJBMUM3MDA3MzY5
NzUgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVG
b3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKKwkJOTMyRjVCRDYwODIyQTFDNzAwNzM2OTc1IC8q
IGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUYwRUMwNzA1Qzg2QzlBMDBFNkRGMUIgLyogbGlib2JqYy5keWxpYiAqLzsgfTsK
KwkJOTMyRjVCRDcwODIyQTFDNzAwNzM2OTc1IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIyQTAwMzA2QzM0MUQz
MDA5MDY3QkIgLyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKKwkJOTMyRjVCREQwODIyQTFDNzAw
NzM2OTc1IC8qIGpzYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLzsgfTsKKwkJOTMy
RjVCRUEwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkEx
QzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCTkzMzA0MDA0
MEU2QTc0OTQwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzAzRkVBMEU2QTcyQzAwMDc4NkU2QSAvKiBTbWFs
bFN0cmluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3
Mjk3IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKKwkJOTY4OENCMTUwRUQxMkI0RTAwMUQ2NDlGIC8q
IEFzc2VtYmxlckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk2ODhDQjE2
MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5MSAvKiBYODZS
ZWdpc3RlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRF
MDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDk5IC8qIFJlZ2lz
dGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTY4OENCMTQwRUQxMkI0RTAwMUQ2NDk5IC8qIFJlZ2lzdGVySW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk2ODhDQjE2MEVEMTJCNEUwMDFE
NjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NjlBMDcy
MzBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzIxMEVEMUNFMzMwMEYxRjY4MSAv
KiBCeXRlY29kZUdlbmVyYXRvci5oICovOyB9OworCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEg
LyogTGFiZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk2OUEwNzI3MEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oICovOyB9OworCQk5NjlBMDcyQjBF
RDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVy
SUQuaCAqLzsgfTsKKwkJOTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY5QTA3OTEwRUQx
RDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk2OUEwNzk4MEVEMUQzQUUwMEYxRjY4MSAvKiBEaXJlY3RF
dmFsQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NjlBMDc5MjBFRDFEM0FFMDBGMUY2ODEgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk3ODgwMTQx
MTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRl
TWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjg4MDZFMjExNTVFNDc4QTkzRkE3
QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTkwREE2N0YxQzhFMzE2QTAwMjk1MTU5IC8qIGdlbmVyYXRlX29i
amNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MERBNjdFMUM4RTMxMUQwMDI5
NTE1OSAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTkyRjU2QjcxRTRFODRCMjAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MkY1
NkIxMUU0RTg0NzkwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk1OUU5MkIx
QkQxN0ZBNDAwMUFBNDEzIC8qIGNzc21pbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk1OUU5
MkQxQkQxN0ZBNDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5NTlF
OTJFMUJEMTdGQTQwMDFBQTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyogeHhkLnBsICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5NTlFOTMx
MUJEMTgyNzIwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTJGMUJE
MTgxRjYwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTU5RTkzMjFC
RDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlw
dHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU5
RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5k
LXNjcmlwdHMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTk2MjMxRTkxOEQxODA0MjAwQzAzRkRBIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0
Mzk2MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk2QjczMTcxQkRB
MDY3RjAwMzMxQjg0IC8qIEFycmF5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMxNTFCREEwNUFBMDAzMzFCODQgLyog
QXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0
IC8qIEJvb2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMwNzFCRDlGQTJDMDAzMzFCODQgLyogQm9vbGVhblByb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKKwkJOTk2QjczMUExQkRBMDhEMTAwMzMxQjg0IC8qIERhdGVDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi87
IH07CisJCTk5NkI3MzFCMUJEQTA4RDEwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NkI3MzA5MUJE
OUZBMkMwMDMzMUI4NCAvKiBFcnJvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJOTk2QjczMUMx
QkRBMDhERDAwMzMxQjg0IC8qIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMwQTFCRDlGQTJDMDAzMzFC
ODQgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJOTk2QjczMUQxQkRBMDhF
RjAwMzMxQjg0IC8qIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjczMEIxQkQ5RkEyQzAwMzMxQjg0IC8qIEpTR2xv
YmFsT2JqZWN0Lmx1dC5oICovOyB9OworCQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQ
cm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzE4NEUyNDE3QkZGQTM2MDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggKi87IH07CisJCTk5NkI3MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21p
c2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE4NEUyNTE3QkZGQTM2MDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1
dC5oICovOyB9OworCQk5OTZCNzMyMDFCREEwOEVGMDAzMzFCODQgLyogSlNNb2R1bGVMb2FkZXIu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZC
NzMwQzFCRDlGQTJDMDAzMzFCODQgLyogSlNNb2R1bGVMb2FkZXIubHV0LmggKi87IH07CisJCTk5
NkI3MzIxMUJEQTA4RUYwMDMzMUI4NCAvKiBOdW1iZXJQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMwRDFCRDlGQTJDMDAz
MzFCODQgLyogTnVtYmVyUHJvdG90eXBlLmx1dC5oICovOyB9OworCQk5OTZCNzMyMjFCREEwOEVG
MDAzMzFCODQgLyogT2JqZWN0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTZCNzMwRTFCRDlGQTJDMDAzMzFCODQgLyogT2Jq
ZWN0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCTk5NkI3MzIzMUJEQTA4RUYwMDMzMUI4NCAv
KiBSZWZsZWN0T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk2QjczMEYxQkQ5RkEyQzAwMzMxQjg0IC8qIFJlZmxlY3RPYmplY3QubHV0
LmggKi87IH07CisJCTk5NkI3MzI1MUJEQTA4RUYwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NkI3MzExMUJEOUZBMkMwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsK
KwkJOTk2QjczMjcxQkRBMDhFRjAwMzMxQjg0IC8qIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjczMTMxQkQ5
RkEyQzAwMzMxQjg0IC8qIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQk5OTZCNzMy
ODFCREEwOEVGMDAzMzFCODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk2QjczMTQxQkQ5RkEyQzAwMzMxQjg0
IC8qIFN5bWJvbFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJOTk4RUQ2NzUxQkVENzY4QzAwREQ4
MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4RUQ2NzMxQkVENjU5QTAwREQ4MDE3IC8qIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5RDZBMTE2MUJFQUQzNEQwMEUyNUMzNyAvKiBSZW1vdGVBdXRvbWF0
aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTJBQkNGNjFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEEz
MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QTFCRDU5OTI3MDBGNDU3NUMg
LyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19t
b2RlbC5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBNTFCRDU5OTMxMDBG
NDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUMxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X3RlbXBsYXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5OURBMDBBNjFCRDU5OTMxMDBGNDU3NUMgLyogd2tidWlsdGlucy5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlEMUJENTk5Mjcw
MEY0NTc1QyAvKiB3a2J1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5REEwMEE3MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19n
ZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19n
ZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlGMUJENTk5MjcwMEY0NTc1QyAvKiBidWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBOTFCRDU5OTMxMDBGNDU3
NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVD
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3
NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMTFCRDU5OTI3
MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAw
QUYxQkQ1OTk0RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUMxQkQ1OTkzRTAwRjQ1
NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEIwMUJENTk5NEUwMEY0NTc1QyAvKiBsYXp5
d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1
NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRz
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
RjFBNzAxMUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlGMUE3MDAxQjk4RkJF
QzAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOUI0Njk0MzkxRjk3NDM5RTAwQ0NCM0Y5
IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDNzk1MjM1MEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOUU3
Mjk0MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBC
dW5kbGVQYXRoLmggKi87IH07CisJCTlGNjM0MzQ1NzcyNzRGQUZCOTMzNkMzOCAvKiBNb2R1bGVO
YW1lc3BhY2VBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0Q0U5NzhFMzg1QTg0OTgxOTkwNTIxNTMgLyogTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZS5oICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0
QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07
CisJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDY4MUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCAqLzsgfTsKKwkJQTE1ODdENzAxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdE
NzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4
N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3
MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
Ki87IH07CisJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oICovOyB9OworCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEy
QjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAv
KiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMTgxOTNFMzFCNEUwQ0RCMDBG
QzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExODE5M0U0MUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OworCQlBMUEwMDlDMDE4MzFBMjJEMDBD
Rjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVE
M0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQTAwOUMxMTgzMUEyNkUwMENGODcyMiAvKiBBUk02
NFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0MyIC8qIEFSTTY0UmVnaXN0ZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFCOUUyM0ExQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRv
ci5oICovOyB9OworCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICov
OyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIz
ODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUEx
RDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovOyB9OworCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMzIxQUE2RDI2MjYzNTlCMDAyM0FE
QTIgLyogSW50bFdvcmthcm91bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzMjFBQTZDMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29ya2Fyb3VuZC5o
ICovOyB9OworCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkgLyogSW5CeVZhcmlhbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzA1RkIxMjBCMEY3
ODgwMENFQjgyQiAvKiBJbkJ5VmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUEzOENBNTlFMjZERDg0REUwMEM4RDg0QyAvKiBJU084NjAx
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzhDQTU5
QzI2REQ4NERFMDBDOEQ4NEMgLyogSVNPODYwMS5oICovOyB9OworCQlBMzhEMjUwRTI1ODAwRDQ0
MDA0MkJGREQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQyNTBEMjU4MDBENDMwMDQyQkZE
RCAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovOyB9OworCQlBMzhENUJGQzI2
NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
M0M3RURCNjI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNDN0VEQjAyNkIw
REIzNjAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCAqLzsgfTsKKwkJQTND
N0VEQjkyNkIwREIzODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzdFREIzMjZCMERCMzcwMDRDMzRD
NSAvKiBUZW1wb3JhbER1cmF0aW9uLmggKi87IH07CisJCUEzQzdFREJBMjZCMERCMzgwMDRDMzRD
NSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzdFREI0MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5
QjhEIC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3Vu
ZC5jcHAgKi87IH07CisJCUEzRkY5QkM3MjIzNDc0OTEwMEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRkY5QkM1MjIz
NDc0NjYwMEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAq
LzsgfTsKKwkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5oICovOyB9OworCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXIuaCAq
LzsgfTsKKwkJQTUwOThCMDQxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDk4QjAz
MUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CisJCUE1MEU0QjYy
MTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjVFMTg4MDlERDUwMDY4QTQ2
RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MEU0QjYwMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudC5oICovOyB9OworCQlBNTEwMDdDMTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTEwMDdCRjE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IH07CisJCUE1MTNFNUI4MTg1QjhCRDMwMDdF
OTVBRCAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUxM0U1QjYxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUx
M0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUxM0U1QjkxODVCRkFDQzAwN0U5
NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
Ki87IH07CisJCUE1MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUxM0U1QkQxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmggKi87IH07CisJCUE1MTNFNUM3MTg1Rjk0NDYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi87IH07
CisJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MTNFNUM5MTg1
Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTE0QjJDMzE4NUE2ODQ0MDBGM0M3
Q0IgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTE0QjJDMTE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTUyQzk1RkYyMTU5RDQzMjAwN0Q4QUMwIC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzRDIxNTlE
NDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTMxMUMzNjFDNzdDRUM1MDBFNkIxQjYg
LyogSGVhcFNuYXBzaG90QnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUzMTFDMzUxQzc3Q0VBQzAwRTZCMUI2IC8qIEhlYXBTbmFwc2hvdEJ1
aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4
MjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzOEExODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzg0MTg1NjgzMTcwMDJF
RDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3Rv
clByb3RvY29sT2JqZWN0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFpbnMu
anNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0
Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFpbnMuanNvbiAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTMzOUVDNjFCQjM5OUE2MDA1
NEYwMDUgLyogSW5zcGVjdG9ySGVhcEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMzOUVDNTFCQjM5OTkwMDA1NEYwMDUgLyogSW5zcGVjdG9y
SGVhcEFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTUzMzlFQzkxQkI0QjQ2MDAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMzlFQzgxQkI0QjQ1MTAw
NTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1Mzk4RkFCMUM3NTBEQTQwMDYwQTk2MyAvKiBIZWFwUHJvZmls
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Mzk4
RkFBMUM3NTBEOTUwMDYwQTk2MyAvKiBIZWFwUHJvZmlsZXIuaCAqLzsgfTsKKwkJQTUzQ0UwOEEx
OEJDMjFDMzAwQkVERjc2IC8qIENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1M0NFMDg5MThCQzIxQzMwMEJFREY3NiAvKiBDb25z
b2xlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzRjFBQkUxOEM5MEVDNzAw
NzJFQjZEIC8qIGZyYW1ld29yay5zYiAqLzsgfTsKKwkJQTU0QzJBQjExQzY1NDRGMjAwQTE4RDc4
IC8qIEhlYXBTbmFwc2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTU0QzJBQUYxQzY1NDREMTAwQTE4RDc4IC8qIEhlYXBTbmFwc2hvdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NENGMkY2MTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTU0Q0YyRkExODRFQUVEQTAwMjM3RjE5IC8qIFNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE1NEU4RUIwMThCRkZCQkIwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTM0M0Y3
NDE4QTE3NDhCMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NEU4RUIxMThCRkZCQkUwMDU1NkQy
OCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVu
dGVkQXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTU1MTY1RDMxQkRGMEI5RTAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1NTE2NUQxMUJERUZEQkQwMDNCNzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTU1MTY1RDUxQkRGMTM1QTAwM0I3NUMxIC8qIFNjcmlwdFByb2ZpbGluZ1Njb3BlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTUxNjVENDFCREYxMzRE
MDAzQjc1QzEgLyogU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCAqLzsgfTsKKwkJQTU1MkMzODAxQURE
QjhGRTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTUyQzM3RTFBRERCOEZFMDAxMzk3MjYgLyogSlNS
ZW1vdGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBNTU1RkYzQjIxNTlEMkY1MDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU1RkYzODIx
NTlEMkQ2MDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1NzE0QkUxQ0Q4MDQ5RjAwMDREMkM2IC8q
IENvbnNvbGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1NTcxNEJEMUNEODA0OEUwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmggKi87IH07
CisJCUE1NUQ5M0E2MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0E0MTg1MDEy
QTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3Rv
Y29sVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNTdEMjNFNjE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTQx
ODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTdEMjNFQTE4OTFCMDc3MDAz
MUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFODE4OTFCMDc3MDAzMUM3RkEgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi87IH07CisJCUE1N0QyM0VFMTg5MUI1NTQw
MDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRUMxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJF
eHByZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTU3RDIzRjIxODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0Yw
MTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU4NDAzMjAxOEJGRkJFMTAw
NUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUNFRUUxMzE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdl
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NTg0MEUyMTE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQwRTFGMTg3QjdCODYw
MDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OEMwMjQyMThFNEE0MUEwMDAzMkJDNSAvKiBK
U0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNThDMDI0MTE4RTRBNDFBMDAwMzJCQzUgLyogSlNDb250ZXh0UHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTNDRjdE
MTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU5M0NGN0IxODQwMzYwMzAw
QkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU5M0NGN0YxODQwMzYyQzAwQkZDRTI3
IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4NTE4NDAz
OENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0
MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OTQ1NTkxMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaCAqLzsgfTsKKwkJQTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE1QTFBMDk0MUQ4Q0IzM0UwMDRDMkVCOCAvKiBEZWJ1Z2dlclBhcnNlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMUEwOTIx
RDhDQjEyRjAwNEMyRUI4IC8qIERlYnVnZ2VyUGFyc2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVBQjQ5REQxQkVDODA4NjAwNzAyMEZC
IC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckds
b2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1QkExNUU4MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
QkExNUUxMTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUJBMTVFQTE4MjM0MEI0MDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVFMzE4MjM0MEIzMDBBODJFNjkgLyogUmVt
b3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTVCQTE1RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RTQxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5oICovOyB9OworCQlBNUJBMTVGMDE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlv
blRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVCQTE1RUYxODIzNDVBRjAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUMzQTFBNjE4
QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBNDE4QzA0OTAyMDBD
OTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmggKi87IH07CisJCUE1RDBBMUJC
MTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVEMEExQkExODYyMzAxQjAwQzdCNDk2
IC8qIEluc3BlY3RvckVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4
dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAq
LzsgfTsKKwkJQTVFQTcwRTcxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1RUE3MEU1MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3
MEU2MTlGNUIxMDEwMDk4RjVFQyAvKiBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MEVDMTlG
NUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUVBNzBFQTE5RjVCM0Q1MDA5OEY1RUMgLyogZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1RUE3MEVFMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRS
ZWZJbnNwZWN0b3JTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUVBNzBFRDE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVj
dG9yU3VwcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUE1RUE3MTAzMTlGNkRFNkYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUVBNzBFRjE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE1RUE3MTA0MTlGNkRFNzIwMDk4RjVFQyAvKiBnZW5lcmF0ZV9v
YmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEYwMTlGNkRFNUEwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzEwNTE5
RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEYxMTlG
NkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5ICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MTA2
MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50
YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUVBNzBGMjE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2lt
cGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE1RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3Rv
Y29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcwRjMxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVFQTcxMDgxOUY2REU3QTAwOThG
NUVDIC8qIGdlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEY0
MTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVFQTcxMDkxOUY2REU3QzAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfaGVhZGVy
LnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcw
RjUxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfaGVhZGVyLnB5ICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUE3MTBBMTlGNkRFN0Uw
MDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEY2MTlGNkRFNUEwMDk4RjVF
QyAvKiBnZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVBNzEwQzE5RjZERTgyMDA5OEY1RUMg
Lyogb2JqY19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUVBNzBGODE5RjZERTVBMDA5OEY1RUMgLyogb2JqY19nZW5lcmF0b3IucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVFQTcx
MEUxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFQTcx
MEQxOUY2REY4MTAwOThGNUVDIC8qIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1
RUYxM0Y5MUYwNzMyMDQwMDBGMDQ0MiAvKiBtYWtlLWpzLWZpbGUtYXJyYXlzLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVFRjEzRjcxRjA3MzFCNDAw
MEYwNDQyIC8qIG1ha2UtanMtZmlsZS1hcnJheXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVFRjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdl
bmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2RDExQTA1Qzc2RjAwNUNBQjc2IC8q
IGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUY5QjE1MUExRDQzRkEwMDcw
MkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2RDIx
QTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTVFRjlCMTYxQTFENDQwMDAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9mcm9udGVuZF9k
aXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM0RjRCNkQzMUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTVFRjlCMTcxQTFENDQwMzAwNzAyRTkwIC8qIGdlbmVyYXRlX2Nw
cF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2RDQxQTA1Qzc2RjAwNUNBQjc2IC8q
IGdlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RUY5QjE4MUEx
RDQ0MDYwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGNEI2RDUxQTA1
Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVFRjlCMTkx
QTFENDQwNzAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0
RjRCNkQ2MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTVGQzg0QjIxRDFEREFENjAwNkI1QzQ2IC8qIERlYnVnZ2VyTG9jYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkM4NEIxMUQx
RERBQzgwMDZCNUM0NiAvKiBEZWJ1Z2dlckxvY2F0aW9uLmggKi87IH07CisJCUE1RkQwMDY4MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQwMDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3Jp
cHRBcmd1bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA2QTE4OUIw
MEE5MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVGRDAwNzAxODlCMDBBQTAwNjMzMjMxIC8qIFNj
cmlwdENhbGxTdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVGRDAwNkMxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFjay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RkQwMDc0MTg5
QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQwMDcxMTg5QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xl
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNUZEMDA3NjE4OUIwMzhDMDA2MzMyMzEgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUZEMDA3MzE4OUIwMzhD
MDA2MzMyMzEgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTVGRDAwN0ExODlCMDUxMDAwNjMzMjMxIC8qIENv
bnNvbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUZEMDA3ODE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUZEMDA3RTE4OUIw
QjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGRDAwN0MxODlCMEI0QzAwNjMzMjMxIC8q
IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNUZEMDA4MjE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9y
Q29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUZEMDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwMDg3
M0ExN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzAwODczODE3Q0JFODUzMDBDM0U2NDMgLyog
TWFwQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8qIE1h
cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcwMDg3M0MxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oICovOyB9OworCQlB
NzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01h
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
MDQ0N0VBMTdBMEJENDYwMEY1ODk4RSAvKiBPcGVyYW5kc0lubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ0N0U5MTdBMEJENDYwMEY1ODk4
RSAvKiBPcGVyYW5kc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBNzA0NDdFRTE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ0N0VD
MTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBE
RkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzA0RDhGRTE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRl
cnByZXRlci5oICovOyB9OworCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDREOEZGMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oICovOyB9OworCQlBNzA0RDkwNjE3QTBCQUE4MDA2QkE1NTQgLyogREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MDREOTAxMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5oICovOyB9OworCQlBNzA5RjJGMDE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhD
YWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA5
RjJFRjE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcyMDI4QjgxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjkxNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2Vw
dGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi87IH07
CisJCUE3MjgwQTI4MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJlZlByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OUVEQjA4MTE1MzFD
RDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzI5OUQ5RTE3RDEyODM3MDA1RjVGRjkgLyog
SlNTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Mjk5RDlDMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBT
ZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Mjk5REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
QTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI5OURBNDE3RDEyODU4MDA1RjVG
RjkgLyogU2V0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTcyRkZENjQxMzk5ODVBODAwRTUzNjVB
IC8qIEtleXdvcmRMb29rdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QzIyNUNEMTM5OTg0OUMwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwLmggKi87
IH07CisJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczMEI2MTAx
MjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi87IH07CisJCUE3MzFC
MjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2
REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKKwkJQTczNzgxMEUxNzk5RUEyRTAw
ODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczNzgxMEIxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxM
b29wcy5oICovOyB9OworCQlBNzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRU
aHVua0pJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCAqLzsgfTsK
KwkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTMxMTg2OTdCNDAw
NTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5
SlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTczQTUzNTkxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggKi87IH07CisJCUE3
NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc0MTAxN0UxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yLmggKi87IH07CisJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtP
YmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzQ4MkI3OTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0ODJF
MzcxMTZBNjk3QjAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc0REVGOTQxODJE
OTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY4RTE4MkQ5OTE0MDA1MjJDMjIgLyog
TWFwSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTc0REVGOTYxODJEOTkxNDAwNTIyQzIy
IC8qIEpTTWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc1RUU5QjIx
OEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0
aW5OYW1lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0
Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAv
KiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggKi87IH07CisJCUE3NkM1MTc2MTE4Mjc0OEQwMDcx
NUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklU
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc3
QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3QTQyMzcxN0EwQkJGRDAwQThEQjgx
IC8qIERGR0Fic3RyYWN0SGVhcC5oICovOyB9OworCQlBNzdBNDI0MDE3QTBCQkZEMDBBOERCODEg
LyogREZHQ2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3QTQyMzkxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJpemUuaCAqLzsg
fTsKKwkJQTc3QTQyNDIxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Nsb2JiZXJTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0E0MjNCMTdBMEJCRkQw
MEE4REI4MSAvKiBERkdDbG9iYmVyU2V0LmggKi87IH07CisJCUE3N0E0MjQzMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzdBNDIzQzE3QTBCQkZEMDBBOERCODEgLyogREZHU2FmZVRvRXhl
Y3V0ZS5oICovOyB9OworCQlBNzdGMTgyMjE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdGMTgyMDE2
NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc3RjE4MjUxNjQxOTJDNzAwNjQwQTQ3IC8qIFBhcnNl
ck1vZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzdGMTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2
QUMgLyogQVNUQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdBN0VFNzQxMUI5OEI4RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLzsgfTsK
KwkJQTc4NEEyNjQxMUQxNjYyMjAwNTc3NkFDIC8qIFN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QTdFRTc3MTFCOThCOEQwMDY1
QTE0RiAvKiBTeW50YXhDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQTc4NUY2QkMxOEM1NTNGRTAwRjEwNjI2IC8qIFNwaWxsUmVnaXN0
ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdGRjY0N0ExOEM1MkU4NTAwQjU1MzA3IC8qIFNwaWxsUmVnaXN0ZXJzTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3OEE5Nzc1MTc5NzM4
QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OEE5NzZEMTc5NzM4QjgwMDlERjc0NCAvKiBERkdG
YWlsZWRGaW5hbGl6ZXIuaCAqLzsgfTsKKwkJQTc4QTk3NzcxNzk3MzhCODAwOURGNzQ0IC8qIERG
R0ZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc4QTk3NkYxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5oICovOyB9OworCQlB
NzhBOTc3OTE3OTczOEI4MDA5REY3NDQgLyogREZHSklURmluYWxpemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc3MTE3OTczOEI4MDA5REY3
NDQgLyogREZHSklURmluYWxpemVyLmggKi87IH07CisJCUE3OEE5NzdCMTc5NzM4QjgwMDlERjc0
NCAvKiBERkdQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzhBOTc3MzE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5oICovOyB9OworCQlBNzhB
OTc3RjE3OTczOEQ1MDA5REY3NDQgLyogRlRMR2VuZXJhdGVkRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OEE5NzdDMTc5NzM4RDUwMDlE
Rjc0NCAvKiBGVExHZW5lcmF0ZWRGdW5jdGlvbi5oICovOyB9OworCQlBNzhBOTc4MTE3OTczOEQ1
MDA5REY3NDQgLyogRlRMSklURmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhBOTc3RTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmlu
YWxpemVyLmggKi87IH07CisJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc5MERENjgxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi87
IH07CisJCUE3OTBERDcwMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzkwREQ2QTE4MkY0OTk3
MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVT
Y29wZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzNTE3QURCNUYz
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThB
RjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAv
KiBBcnJheUJ1ZmZlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYyOTE3
QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjNBMTdBREI1RjMw
MDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3QThBRjJCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQ4QXJyYXkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0E4QUYzQjE3
QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkMxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJy
YXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
N0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMkQxN0FEQjVGMzAwNUFCMTc0IC8q
IEludDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0E4QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBOEFGMzAxN0FEQjVGMzAw
NUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlBN0E4QUY0MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVk
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QThBRjMxMTdBREI1RjMwMDVBQjE3NCAvKiBVaW50OENsYW1wZWRBcnJheS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3QThBRjQxMTdBREI1RjMw
MDVBQjE3NCAvKiBVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdBOEFGMzIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdBOEFG
NDIxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E4QUYzMzE3QURCNUYzMDA1QUIxNzQgLyogVWlu
dDMyQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRBQ0FFMTQ4NEM5Q0Uw
MEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtl
ZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdCREFFQzkxN0Y0
RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMzMTdGNEVBMTQwMEY2MTQwQyAv
KiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUE3QkZGM0MwMTc5ODY4OTQwMDAy
RjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBN0JGRjNCRjE3OTg2ODk0MDAwMkY0NjIgLyogREZHRmlsdHJh
dGlvblJlc3VsdC5oICovOyB9OworCQlBN0MwQzRBQzE2ODEwMzAyMDAxNzAxMUQgLyogSlNTY3Jp
cHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0MwQzRBQjE2N0MwOENEMDAxNzAxMUQgLyogSlNTY3JpcHRSZWZQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdDMUVBRjAx
Nzk4N0FCNjAwMjk5REIyIC8qIENMb29wU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyog
Q0xvb3BTdGFja0lubGluZXMuaCAqLzsgfTsKKwkJQTdDMUVBRjIxNzk4N0FCNjAwMjk5REIyIC8q
IFN0YWNrVmlzaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdDMUVBRUQxNzk4N0FCNjAwMjk5REIyIC8qIFN0YWNrVmlzaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3Q0EzQUU0MTdEQTQx
QUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFr
TWFwQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTdDQTNBRTYxN0RBNDFBRTAwNjUzOEFGIC8qIFdl
YWtNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Q0EzQUUwMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmggKi87
IH07CisJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8q
IEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNF
NTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgfTsKKwkJQTdE
ODlDRjYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U3MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggKi87IH07CisJ
CUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTkxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmggKi87IH07CisJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0VEMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuaCAqLzsgfTsKKwkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi87IH07CisJCUE3RDg5RDAwMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0YxMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdT
U0FDb252ZXJzaW9uUGhhc2UuaCAqLzsgfTsKKwkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8q
IEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDg5RDAxMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZh
bHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTdEOUEyOTUxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDlBMjkwMTdBMEJD
NzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmggKi87IH07CisJCUE3RDlBMjk2
MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q5QTI5MTE3QTBCQzc0MDBFRTI2MTggLyog
REZHRWRnZURvbWluYXRlcy5oICovOyB9OworCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyog
REZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q5QTI5MzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggKi87IH07CisJ
CUE3RENCOTczMTJFNTE5M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0
MCAvKiBXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBN0UyRUE2QjBGQjQ2MENGMDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdFMkVBNjkw
RkI0NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuaCAqLzsgfTsKKwkJQTdFNUEzQTgxNzk3
NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0U1QTNBNjE3OTc0MzJEMDBFODkzQzAgLyogQ29t
cGlsYXRpb25SZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGMjk5NkExN0EwQkI2NzAw
MTA0MTdBIC8qIEZUTEZhaWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBN0Y5OTM1RjBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdGOTkzNUQwRkQ3
MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVy
dHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdGQ0MyNkQx
N0EwQjZBQTAwNzg2RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RkNDMjZDMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExT
d2l0Y2hDYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQUQwMDY1OUUxRUNBQzgxMjAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMDA2NTlEMUVDQUM3RkUwMDBD
QTkyNiAvKiBXYXNtTGltaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQUQyRkNCRTMxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlD
b21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFEMkZDQkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9y
LmggKi87IH07CisJCUFEMkZDQkU1MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
MkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCAqLzsgfTsK
KwkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFCMURCNThE
QTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQUQyRkNCRTkxREI1OERBRDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yLmggKi87IH07CisJCUFEMkZDQkVCMURCNThEQUQwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5VGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQkFGMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUu
aCAqLzsgfTsKKwkJQUQyRkNCRUQxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGls
ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEMkZDQkIxMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmggKi87IH07CisJCUFEMkZDQkVGMURCNThEQUQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQjMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggKi87IH07CisJCUFEMkZDQkYxMURCNThEQUQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkI1MURCNThEQTQwMEIzRTcz
NiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQUQyRkNCRjMx
REI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkI3MURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggKi87IH07CisJCUFEMkZD
QkY1MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0JCOTFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQlB
RDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQkJCMURC
NThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oICovOyB9OworCQlB
RDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQy
RkNCQkQxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVu
dGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkNCRkQxREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQzExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBRDJGQ0JGRjFEQjU4REFEMDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCQzMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUuaCAqLzsgfTsKKwkJQUQyRkNDMDExREI1OERBRDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQjk5MURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1vZHVsZUNvbnN0cnVjdG9yLmggKi87IH07CisJCUFEMkZDQzAzMURCNThEQUQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNCOUIxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlLmggKi87IH07CisJCUFEMkZDQzA1MURCNThEQUQwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5TW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRDJGQ0I4RDFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUFEMkZDQzE2MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzE3MURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBCMURCNTlDNTkwMEIzRTczNiAvKiBXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMTgxREI1
OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBDMURCNTlD
NTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmggKi87IH07
CisJCUFEMkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUu
bHV0LmggKi87IH07CisJCUFEMkZDQzFBMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1l
bW9yeUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUQyRkNDMEUxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5
Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzBGMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMUMxREI1OUNCMjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxMDFEQjU5QzU5MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQUQyRkNDMUQx
REI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMTExREI1OUM1
OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmx1dC5oICovOyB9OworCQlB
RDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEMkZDQzEyMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oICovOyB9OworCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxMzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggKi87IH07CisJCUFEMkZDQzIwMURCNTlD
QjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MxNDFEQjU5QzU5MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBRDJG
Q0MyMTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzE1MURC
NTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oICovOyB9Owor
CQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUFENDI1MjUxMUU1RDBFMTQwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTAx
RTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi87IH07CisJCUFENDkzN0M0MURE
QkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0OTM3QzIxRERCRTYwQTAwNzdDODA3IC8q
IEFic3RyYWN0TW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQUQ0OTM3QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDQ5MzdDNjFERENEQ0YwMDA3N0M4MDcgLyogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
aCAqLzsgfTsKKwkJQUQ0OTM3RDQxREREMjdERTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5RnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDkz
N0NBMURERDI3MzQwMDc3QzgwNyAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uLmggKi87IH07CisJCUFE
NEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0QjFERjgxREYyNDRENzAwNzFBRTMyIC8q
IFdhc21CaW5kaW5nLmggKi87IH07CisJCUFENUI0MTZGMUVCQUZCNzcwMDhFRkE0MyAvKiBXYXNt
TmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ1
QjQxNkUxRUJBRkI2NTAwOEVGQTQzIC8qIFdhc21OYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQUQ1QzM2REQxRjY4OEI2NTAwMEJDQUFGIC8q
IFdhc21FbWJlZGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUQ1QzM2REMxRjY4OEI1RjAwMEJDQUFGIC8qIFdhc21FbWJlZGRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFENUMzNkUyMUY2OTlF
QzAwMDBCQ0FBRiAvKiBXYXNtSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFENUMzNkRGMUY2OTlFQjYwMDBCQ0FBRiAvKiBXYXNtSW5zdGFu
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
RDVDMzZFNjFGNjlFQzkxMDAwQkNBQUYgLyogV2FzbVRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDVDMzZFNDFGNjlFQzhCMDAwQkNBQUYgLyog
V2FzbVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQUQ1QzM2RUExRjc1QUQ2QTAwMEJDQUFGIC8qIEpTVG9XYXNtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDhERDZDRjFGNjcwODlGMDAwNEVC
NTIgLyogSlNUb1dhc20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlBRDVDMzZFQjFGNzVBRDczMDAwQkNBQUYgLyogSlNXZWJBc3NlbWJseS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUREMDlBRjMxRjYy
NDgyRTAwMTMxM0MyIC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBRDVDMzZFQzFGNzVBRDdDMDAwQkNBQUYgLyogV2Fz
bVRvSlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
RDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAvKiBXYXNtVG9KUy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFENUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAv
KiBXYXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQ1QzM2RUUxRjdBMjYyOTAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQUQ3NDM4QzAx
RTA0NTdBNDAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzQzOEJGMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNt
U2lnbmF0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3QjRCMkQxRkEzRTI4
NjAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUFEODZBOTNFMUFBNEQ4OEQwMDJGRTc3RiAvKiBXZWFr
R0NNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFEOEZGMzk4MUVC
NUJEQjIwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEOEZGMzk1MUVCNUJEODUwMDg3RkY4MiAvKiBXYXNt
SW5kZXhPck5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBREQ4RkE0NjFFQjMwNzk3MDBERjU0MkYgLyogV2FzbU5hbWVTZWN0aW9uUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREQ4RkE0
MzFFQjMwNzcxMDBERjU0MkYgLyogV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmggKi87IH07CisJCUFE
RTgwMjk5MUUwOEYxREUwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4MDI5NDFFMDhGMUM5
MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFERTgwMjlBMUUwOEYxREUwMDU4REU3OCAv
KiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4MDI5NTFFMDhGMUM5MDA1OERFNzggLyogV2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUFERTgwMjlDMUUwOEYxREUwMDU4REU3OCAvKiBXZWJB
c3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQURFODAyOTcxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMwMkU5MEQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJF
OTA1MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggKi87IH07CisJCUJDMDJF
OTBGMEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MDJFOTA5MEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi87IH07
CisJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MEIwRTE4
MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmggKi87IH07CisJCUJDMDJFOThE
MEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvckluc3RhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyRTk4QjBFMTgzRTM4MDAwRjkyOTcgLyogRXJy
b3JJbnN0YW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUJDMTE2NjAyMEUxOTk3QjQwMDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTE2NjAxMEUxOTk3QjEw
MDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQzExNjY3QjBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMxMTY2N0EwRTE5OUMwNTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzExNjdEQTBFMTlCQ0M5
MDA4MDY2REQgLyogSlNDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzExNjdEODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRTUwRTE2RjVD
RDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0ODJCNzhBMEE0MzA1QUIwMDUxN0NGQyAvKiBBUElDYXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRTYwRTE2
RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzk1MjA3MEUxNUU4QTgwMEE4OThBQiAvKiBBcnJh
eUNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg0RTAyNTU1
OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9v
bGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzNFRDBFMTZGNUNE
MDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDM0YzMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBDb21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENv
bW1vbklkZW50aWZpZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMxOEMzRjQwRTE2RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QkIyQkM1MDMwRjc3
MjEwMUZDRkUxRCAvKiBDb21wbGV0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRjUwRTE2RjVDRDAwQjM0NDYwIC8qIGNvbmZpZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY4RUJCOEMw
MjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMThDM0Y2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb25zdHJ1
Y3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzhGM0NDRjBEQUYxN0JBMDA1NzdBODAgLyogQ29uc3RydWN0RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDM0ZBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBEZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEMzRkIwRTE2RjVD
RDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgwREI5QjBEREMyMjdGMDAzQ0ZERjIgLyogRGVidWdn
ZXJDYWxsRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFE
RTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQwNDBFMTZGNUNEMDBCMzQ0NjAgLyog
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNjgwQzEwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
QzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVEMDI1NTU5N0QwMUZG
NjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNB
MzQ5QTAzOEFFN0M2MDA4NjM1Q0UgLyogSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTc4NjMzRjBEOUJFQzAwMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVh
ZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDMThDNDEzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYg
LyogSmF2YVNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKKwkJQkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOEI0QjBEMzJD
MzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CisJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZh
U2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4
LmggKi87IH07CisJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9u
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRE
QTgxOEUwRDk5RkQyMDAwQjBBNEZCIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzODc3MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0FycmF5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MTgwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQyNzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMxOEM0MTkwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0MEY4QUMwQTUwOEQyMDAwMDVGMDYxIC8qIEpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oICovOyB9OworCQlCQzE4QzQxQTBFMTZGNUNEMDBCMzQ0NjAgLyogSlND
YWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmgg
Ki87IH07CisJCUJDMThDNDFCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEFCREY1RDBB
NDM3RkVGMDBFQ0NBMDEgLyogSlNDYWxsYmFja09iamVjdC5oICovOyB9OworCQlCQzE4QzQxQzBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFODk0MzEwQ0QwNjAyNDAwMzY3
MTc5IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLzsgfTsKKwkJQkMxOEM0MUQwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTQ2xhc3NSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDBGQ0UxMEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVm
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMx
OEM0MUUwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ29udGV4dFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRDVBMkEwQTNFOTFGNjAwQkFGNTlDIC8q
IEpTQ29udGV4dFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKKwkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODVGMDI1NTU5N0Qw
MUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0MjAwRTE2RjVDRDAwQjM0NDYwIC8qIFZNLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NjBERjkyNzhD
MDBEOTBCMzQgLyogVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzE4QzQyMTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNHbG9iYWxPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RTg5NDMzMENE
MDYwM0YwMDM2NzE3OSAvKiBKU0dsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDIzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U0xvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
RUE0QzlBMDkyQUY5RTIwMDkzRDgwMCAvKiBKU0xvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQyNDBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjJBMzk5MEUxNkUxNDgwMEFGMjFDOCAvKiBKU09iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDI1MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU09iamVjdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ4MkI3RTEwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzE4QzQyNjBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1QzE4RDNFMEM5MEU3RUYwMEU3MkY3MyAvKiBKU1JldGFpblB0
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
MThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0QjBBNDMwMzI4MDA1MTdD
RkMgLyogSlNTdHJpbmdSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CisJCUJDMThDNDI5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZBQUIyQTBC
NjZBODQ5MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRB
QkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDJCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBK
U0NKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDJDMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1ZhbHVlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDgyQjZFQTBBNDMwMEIzMDA1MTdDRkMgLyogSlNWYWx1ZVJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMxOEM0MkUwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3Jh
cHBlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3
IC8qIExleGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3
IC8qIExvb2t1cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUJDMThDNDNDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg2QjAyNTU1OTdEMDFG
RjYwRjcgLyogTWF0aE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NkUwMjU1NTk3
RDAxRkY2MEY3IC8qIE5vZGVzLmggKi87IH07CisJCUJDMThDNDQxMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNjgwQzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9y
LmggKi87IH07CisJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MjY4MEU2MEUxNkQ1MjMwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsK
KwkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NzEwMjU1NTk3RDAxRkY2
MEY3IC8qIE51bWJlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUJDMThDNDQ0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4
MEM1MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ0NTBFMTZGNUNEMDBCMzQ0
NjAgLyogT2JqZWN0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM3MEUxNkQ0RTkwMEEwNkU5MiAvKiBPYmplY3RDb25zdHJ1
Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDMThDNDQ2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBPYmplY3RQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY4MEM5MEUxNkQ0RTkwMEEw
NkU5MiAvKiBPYmplY3RQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4
NzgwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ0QjBFMTZGNUNEMDBCMzQ0NjAgLyog
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0YwQjNBQTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOEM0NTQwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3BlcnR5TmFtZUFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTQwMEMxMDBBNjlCQUYyMDA1MDk4ODcgLyogUHJvcGVydHlOYW1lQXJyYXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4
QzQ1NTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTYyMUU2QzA4OUU4NTk3MDA3NjBGMzUgLyog
UHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyRkJCMDYzNzQ2MkEwMDNF
N0VFNiAvKiBQcm90ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMxOEM0NUEwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4N0UwMjU1NTk3RDAx
RkY2MEY3IC8qIFJlZ0V4cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUJDMThDNDVCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWdFeHBPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODdDMDI1
NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE4QzQ1RDBFMTZGNUNEMDBCMzQ0NjAgLyogUmVn
aXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDVFMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBDTG9vcFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEQ3OTI2NDBEQUEwM0ZCMDAxQTlGMDUgLyogQ0xvb3BTdGFjay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDYzMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVFODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMTBFMTZFRTMzMDBC
MzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkMxOEM0NjgwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThD
NDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0M2MEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QTM5NkE2MENE
MjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMThDNDdBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBXZWJL
aXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUJDMThDNTJF
MEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDNTJEMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5s
dXQuaCAqLzsgfTsKKwkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNDYwNjBFMUY0OTdG
MDAzMjMyQ0YgLyogRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZBQUFFNDBFMUY0
MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM3NTZGQzkwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlC
Qzg3Q0RCOTEwNzEyQUQ0MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODdDREI4MTA3MTJBQ0EwMDA2MTRD
RiAvKiBKU09OT2JqZWN0Lmx1dC5oICovOyB9OworCQlCQzkwNDE0ODBFQjkyNTA5MDBGRTI2RkEg
LyogU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3BlcnR5VGFibGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTU0MzdDMEVC
QTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eVRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdD
QXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNCRTJDQUQxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDQ0YwRDA4MEVGMEFBQjkw
MDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRjBEMDcwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVy
ZVN0dWJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQkNEMjAyQzIwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QyMDJCRTBFMTcw
NkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkNEMjAyQzQwRTE3
MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMjAyQzAwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4
cFByb3RvdHlwZS5oICovOyB9OworCQlCQ0QyMDJENjBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhw
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QyMDJENTBFMTcwNzA4MDAyQzdFODIgLyogUmVnRXhwQ29uc3RydWN0b3IubHV0
LmggKi87IH07CisJCUJDRDIwMzRBMEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ2
MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQkNEMjAzNEMw
RTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRl
UHJvdG90eXBlLmggKi87IH07CisJCUJDRDIwM0U4MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi87IH07
CisJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREUzQUIxMEU2QzgyQ0YwMDE0NTNB
NyAvKiBTdHJ1Y3R1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQ0UyRkFGQjI2MDkxNkVGMDAwQTUxMEYgLyogV2Vha0dDU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UyRkFGQTI2MDkxNkVG
MDAwQTUxMEYgLyogV2Vha0dDU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkNFMkZBRkQyNjA5MTZGRjAwMEE1MTBGIC8qIFdlYWtHQ1NldElu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RTJGQUZDMjYwOTE2RkYwMDBBNTEwRiAvKiBXZWFrR0NTZXRJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFMkZBRkYyNjA5MTc4MjAw
MEE1MTBGIC8qIFdlYWtHQ0hhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFMkZBRkUyNjA5MTc4MjAwMEE1MTBGIC8qIFdlYWtHQ0hhc2hU
YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyog
QXJnTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0
OCAvKiBKdW1wVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCREZDQjJCQkU5MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMDMyMTc1REYxQUQ0
N0Q4OTk4QjM0RTEgLyogSlNTb3VyY2VDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzIwMzI4MjAxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3Rv
bUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzIwMzI4MUUxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3RvbUdsb2JhbE9i
amVjdENsYXNzVGVzdC5jICovOyB9OworCQlDMjBCQTkyRDE2QkIxQzE1MDBCM0FFQTIgLyogU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURh
dGFJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjQwODUxNUMw
QTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyMTgxRkMyMThBOTQ4RkIwMDI1QTIzNSAv
KiBKU0V4cG9ydFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzIxODFGQzExOEE5NDhGQjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gKi87
IH07CisJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZE
RDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNN
YW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQzI1RjhCQ0UxNTc1NDRB
OTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3Jl
bWVudGFsU3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE4RkYxNkZFNEI3
RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJs
b2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovOyB9
OworCQlDMjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4OEIyREQxOEE1NEQzRTAwN0JF
NDBCIC8qIERhdGVUZXN0cy5tbSAqLzsgfTsKKwkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8q
IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRX
ZWFrUmVmZXJlbmNlcy5oICovOyB9OworCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQgLyogQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVu
dFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi87IH07CisJCUMyQTdGNjg4MTYwNDMyRDQw
MEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjZE
NzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJCOTE2QzIxNERBMDE0RTAw
Q0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3Rv
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
MkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkMwRjdDQzE3QkJGQzVC
MDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggKi87IH07CisJCUMyQ0YzOUMyMTZF
MTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBK
U0FQSVdyYXBwZXJPYmplY3QuaCAqLzsgfTsKKwkJQzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8q
IEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkZDQUUxMTE3QTlDMjRF
MDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkZDQUUwRDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzJGQ0FFMTMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJG
Q0FFMEYxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRkUxOEE0MTZC
QUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJGRTE4QTMxNkJBRUM0MDAwQUYzMDYxIC8qIFN0
cnVjdHVyZVJhcmVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQzQ3MDNDQzAxOTI4NDQ5NjAwMTNGQkVBIC8qIGdlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM0NzAzQ0JGMTkyODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQzQ3MDNDQ0UxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2pz
X2JhY2tlbmRfY29tbWFuZHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNDcwM0NDMzE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfanNfYmFja2Vu
ZF9jb21tYW5kcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDNDcwM0NENTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0NB
MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0NzAzQ0Q2MTkyODQ0Q0MwMDEz
RkJFQSAvKiBnZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0NzAzQ0Q3MTky
ODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0RjRCNkYz
MUEwNUM5NDQwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjRCNkNGMUEwNUM3NkYwMDVD
QUI3NiAvKiBjcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNEY0QjZGNDFBMDVDOTQ0MDA1Q0FCNzYgLyog
Y3BwX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0RjRCNkQwMUEwNUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0RjRCNkY1MUEw
NUM5ODQwMDVDQUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0
aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRG
NEI2RDcxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzRGNEI2RjYxQTA1Qzk4NDAwNUNBQjc2IC8qIG9iamNfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0
RjRCNkQ4MUEwNUM3NkYwMDVDQUI3NiAvKiBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QxRjlCM0Ey
NzBCOUFBRDAwNjE3RUI2IC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjM5MjcwQjlBQUQwMDYxN0VCNiAvKiBGb3J3YXJkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0QxRjlC
M0MyNzBDMEMxQTAwNjE3RUI2IC8qIFR5cGVkQXJyYXlBZGFwdGVyc0ZvcndhcmREZWNsYXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5
QjNCMjcwQzBDMUEwMDYxN0VCNiAvKiBUeXBlZEFycmF5QWRhcHRlcnNGb3J3YXJkRGVjbGFyYXRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
Q0QxRjlCNDkyNzBDRkRDQzAwNjE3RUI2IC8qIEhhbmRsZUZvcndhcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjQ4MjcwQ0ZEQ0MwMDYxN0VC
NiAvKiBIYW5kbGVGb3J3YXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQ0QxRjlCNEIyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRB
MjcwQ0ZFMEYwMDYxN0VCNiAvKiBTdHJvbmdGb3J3YXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UyMEJEMDUyMzdEM0UyMzAwNDZFNTIwIC8q
IEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UyMEJEMDMyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1
enplckFnZW50QmFzZS5oICovOyB9OworCQlDRTIwQkQwNzIzN0QzRTQ4MDA0NkU1MjAgLyogUHJl
ZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTIwQkQwMTIzN0QzQUQ0MDA0NkU1MjAgLyogUHJlZGlj
dGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmggKi87IH07CisJCUNFQUU3RDdCODg5QjQ3N0JB
OTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0Y2hl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNF
Q0ZBRDM2MjM3MkRBRDAwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzQyMzcyREFBNzAwMjkx
NTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi87IH07CisJCUNFQ0ZBRDM3MjM3MkRBRDQwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VDRkFEMzIyMzcyREFBNzAwMjkxNTk5IC8qIEZpbGVCYXNl
ZEZ1enplckFnZW50LmggKi87IH07CisJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01v
ZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87IH07CisJ
CURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzAwMDM5MDE5
RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICovOyB9OworCQlE
QzAxODQxOTFEMTBDMTg5MDA1N0IwNTMgLyogSklUV29ya2xpc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMDE4NDE4MUQxMEMxODcwMDU3QjA1MyAv
KiBKSVRXb3JrbGlzdC5oICovOyB9OworCQlEQzE3RTgxODFDOUM5MUQ5MDA4QTZBQjMgLyogU2hh
ZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREMxN0U4MTQxQzlDN0ZENDAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzE3RTgxOTFDOUM5MURC
MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMTdFODE1MUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFk
b3dDaGlja2VuSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCURDMjE0MzA3MUNBMzJFNTUwMDBBODg2OSAvKiBJQ1N0YXRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzIxNDMwNjFDQTMyRTUy
MDAwQTg4NjkgLyogSUNTdGF0cy5oICovOyB9OworCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMg
LyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURDNjA1QjVFMUNFMjZFQTIwMDU5
MzcxOCAvKiBQcm9maWxlckV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURDNjA1
QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNUMxQ0UyNkU5ODAwNTkzNzE4IC8qIFBy
b2ZpbGVyVUlELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJREM2OUI5OUQxRDE1RjkxNDAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2OUI5OUIxRDE1Rjkw
RjAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oICovOyB9OworCQlEQzc5OTc4MzFDREU5RkEw
MDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREM3OTk3ODIxQ0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lz
dGVyc01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlEQzlBMEMxRjFEMkQ5Q0IxMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbklubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDOUEwQzFF
MUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oICovOyB9OworCQlE
QzlBMEMyMDFEMkQ5Q0IzMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM5QTBDMUQxRDJEOTRFRjAwODUx
MjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uaCAqLzsgfTsKKwkJRENFRTIyMDkxQ0VCOTg5NTAwMEMy
Mzk2IC8qIERGR0JhY2t3YXJkc0NGRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENFRTIyMDYxQ0VCOTg5MDAwMEMyMzk2IC8qIERGR0JhY2t3YXJkc0NG
Ry5oICovOyB9OworCQlEQ0VFMjIwQTFDRUI5ODk1MDAwQzIzOTYgLyogREZHQmFja3dhcmRzRG9t
aW5hdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RENFRTIyMDcxQ0VCOTg5MDAwMEMyMzk2IC8qIERGR0JhY2t3YXJkc0RvbWluYXRvcnMuaCAqLzsg
fTsKKwkJRENFRTIyMEIxQ0VCOTg5NTAwMEMyMzk2IC8qIERGR0NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
Q0VFMjIwODFDRUI5ODkwMDAwQzIzOTYgLyogREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMu
aCAqLzsgfTsKKwkJRENFRTIyMEQxQ0VCQUY3NTAwMEMyMzk2IC8qIERGR051bGxBYnN0cmFjdFN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VF
MjIwQzFDRUJBRjczMDAwQzIzOTYgLyogREZHTnVsbEFic3RyYWN0U3RhdGUuaCAqLzsgfTsKKwkJ
RENGM0Q1NkExQ0QyOTQ3MDAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjUxQ0QyOTQ2ODAw
M0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCURDRjNENTZCMUNEMjk0NzIwMDNENUM2NSAvKiBMYXp5
Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEQ0YzRDU2NjFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eUNsYXNzU3RydWN0
dXJlSW5saW5lcy5oICovOyB9OworCQlEQ0YzRDU2QzFDRDI5NDc1MDAzRDVDNjUgLyogTGF6eVBy
b3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
Q0YzRDU2NzFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRENGM0Q1NkQxQ0QyOTQ3NjAwM0Q1
QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDRjNENTY4MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVy
dHlJbmxpbmVzLmggKi87IH07CisJCURDRkRGQkQ5MUQxRjVEOUIwMEZFM0Q3MiAvKiBCM0JvdHRv
bVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovOyB9Owor
CQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyogQjNUeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIg
LyogQjNUeXBlTWFwLmggKi87IH07CisJCUREQjA0RjQxMjc4RTU2OUEwMDhEMzY3OCAvKiBsaWJX
VEYuYSBpbiBQcm9kdWN0IERlcGVuZGVuY2llcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDk4Q0FEMzIxNDY1NkM0MDA3MTA4NzkgLyogbGliV1RGLmEgKi87IH07CisJCURE
QjA0RjQyMjc4RTU2QTIwMDhEMzY3OCAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OThDQUQzMjE0NjU2QzQwMDcxMDg3OSAvKiBs
aWJXVEYuYSAqLzsgfTsKKwkJRERFOTkzMTAyNzhEMDg3RDAwRjYwRDI2IC8qIGxpYldlYktpdEFk
ZGl0aW9ucy5hIGluIFByb2R1Y3QgRGVwZW5kZW5jaWVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERERTk5MzBFMjc4RDA4NjYwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlv
bnMuYSAqLzsgfTsKKwkJRERFOTkzMTIyNzhEMDg5MDAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0
aW9ucy5hIGluIFByb2R1Y3QgRGVwZW5kZW5jaWVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERERTk5MzBFMjc4RDA4NjYwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMu
YSAqLzsgfTsKKwkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICov
OyB9OworCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5
MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlERkJDMkNBNjI1
RTZENUI5MDA4MUJERDEgLyogU3ltYm9sU3R1YnNGb3JTYWZhcmlDb21wYXRpYmlsaXR5Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREZCQzJDQTUyNUU2
RDU3OTAwODFCREQxIC8qIFN5bWJvbFN0dWJzRm9yU2FmYXJpQ29tcGF0aWJpbGl0eS5tbSAqLzsg
fTsKKwkJRTEyNEE4RjcwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNTBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzA3MTc4MzI0Qzc4MjcxMDBERjA2NDQgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTNCRjg4NTAyNDQ4MEJFMTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaCAqLzsgfTsKKwkJRTMwNzE3ODQyNEM3ODI3NzAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTNCRjg4NEUyNDQ4MEJFMDAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzA3MTc4NTI0Qzc4Mjc5MDBERjA2NDQgLyog
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTMwNzE3ODYyNEM3ODI3QzAw
REYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwNzE3N0QyNEM3ODI0NjAwREYwNjQ0IC8qIElu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzA3MTc4NzI0Qzc4MjdFMDBERjA2
NDQgLyogSW50bFNlZ21lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMwNzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAq
LzsgfTsKKwkJRTMwNzE3ODgyNEM3ODI4MTAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDcx
NzdGMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggKi87IH07CisJ
CUUzMDcxNzg5MjRDNzgyODYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMThEMjA3
NDRBRTgwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCAqLzsgfTsKKwkJRTMw
NzE3OEEyNEM3ODI4QzAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE5MDIwNzQ0
QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMw
NzE3OEIyNEM3ODI4RjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTIyMDc0NEJGMjAwNURERjY0
IC8qIEludGxQbHVyYWxSdWxlcy5oICovOyB9OworCQlFMzA3MTc4QzI0Qzc4Mjk4MDBERjA2NDQg
LyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90
b3R5cGUuaCAqLzsgfTsKKwkJRTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0IC8qIEludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oICov
OyB9OworCQlFMzA3MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExvY2FsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBRkY5MkIyNDVBM0NGOTAw
QzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLzsgfTsKKwkJRTMwODczRTcyNzI1NTk0MTAwNTNCNjAx
IC8qIEludGxQbHVyYWxSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RDVGQjE4RjIwNzQ0QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVz
LmNwcCAqLzsgfTsKKwkJRTMwRThBNTQyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpv
bmVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMEU4QTRFMjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmggKi87IH07CisJCUUzMEU4QTU2MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1
MDI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5oICovOyB9OworCQlFMzBFOEE1
NzI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzBFOEE1MTI2REUyRTQ4
MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMTE3
OUFBMjI4ODM4NjEwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAw
NTE0QjJDIC8qIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8q
IERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMxNjE4MTUxRUM1
RkUyNzAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4
IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMThDQTZCMjU0NDA2QjYwMDREQzEyOSAvKiBJbnRs
TGlzdEZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzE4Q0E2NTI1NDQwNkI0MDA0REMxMjkgLyogSW50bExpc3RGb3JtYXRD
b25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzE4Q0E2QzI1NDQwNkI2MDA0REMxMjkgLyogSW50bExp
c3RGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMThDQTY2MjU0NDA2QjQwMDREQzEyOSAvKiBJbnRsTGlzdEZvcm1hdC5oICovOyB9OworCQlF
MzE4Q0E2RDI1NDQwNkI2MDA0REMxMjkgLyogSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQTY3MjU0NDA2
QjUwMDREQzEyOSAvKiBJbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlFMzE4Q0JD
MTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEy
OTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMUMzMTMyMjUxMUFGRDcwMEU3QTNBMCAvKiBJ
bnRsQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMUMzMTMwMjUxMUFGRDYwMEU3QTNBMCAvKiBJbnRsQ2FjaGUuaCAqLzsgfTsKKwkJRTMyMDFD
MUQxRjhFODIzNjAwNzZBMDMyIC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhEMDYwQjFGOEU4MTQxMDA2
NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyog
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTMyMkU1QTMxREE2NDQzOTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUExMURBNjQ0MzUw
MDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggKi87IH07CisJCUUzMjJFNUE3MURBNjQ0QTgw
MDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBl
dFBhcmFtcy5oICovOyB9OworCQlFMzIzMTE2OTI0QTFEQzM1MDA2OTNEQTUgLyogSW50bE51bWJl
ckZvcm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5l
cy5oICovOyB9OworCQlFMzI1OTU2NDIxRkRBMkM5MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0
YUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9iYWxEYXRhSW5saW5lcy5oICov
OyB9OworCQlFMzI1QTM2MDIyMjExNTkwMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUEz
NUYyMjIxMTU4QTAwNzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKKwkJ
RTMyODJCQkIxRkU5MzBBRjAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3
MSAvKiBZYXJyRXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTMyOEM2QzcxREE0MzA0NTAwRDI1NUZEIC8qIE1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTg2MDE3NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzI4QzZDODFEQTQzMDYxMDBEMjU1RkQgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDBDNzlEMUI4
MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhDNkM5MURBNDMyRjkwMEQyNTVG
RCAvKiBSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTQwQzc5RjFCODJEOUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNl
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
MjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjcxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkxRDM4RDAwNTAw
MUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBo
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMy
OERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1i
bGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMkMzQzY5
MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyQzNDNjgyM0U5NEMxRTAw
QkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi87IH07CisJCUUzMkQ0REU3
MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzJENERFMTI2REFGRDQyMDBE
NDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovOyB9OworCQlFMzJENERFOTI2
REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTMyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRl
bXBvcmFsQ2FsZW5kYXIuaCAqLzsgfTsKKwkJRTMyRDRERUEyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRl
bXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMyRDRERTQyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRlbXBvcmFsQ2Fs
ZW5kYXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQlFMzJGRUEyQzI3NDQ4RjM3MDBGRjQxQzEgLyog
SlNPTkF0b21TdHJpbmdDYWNoZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMkZFQTJBMjc0NDhGMzYwMEZGNDFDMSAvKiBKU09OQXRvbVN0
cmluZ0NhY2hlSW5saW5lcy5oICovOyB9OworCQlFMzJGRUEyRDI3NDQ4RjM3MDBGRjQxQzEgLyog
SlNPTkF0b21TdHJpbmdDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMyRkVBMkIyNzQ0OEYzNjAwRkY0MUMxIC8qIEpTT05BdG9tU3RyaW5nQ2Fj
aGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzMwOTVERDIzMjEwQTFCMDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDk1REMyMzIx
MEExNDAwRUI3ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzM0Q0JCNTIxRkQ5NkE5MDAw
RUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzNENCQjMyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEdsb2Jh
bERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUw
ODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzM3Qjk2NzIyNDMyNEVBMDA5M0E4MjAgLyogV2FzbUNhcGFiaWxp
dGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
N0I5NjYyMjQzMjRFNTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzM5NzAwNTIzMjEwRTBCMDBC
MEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzk3MDA0MjMyMTBFMEEwMEIwQUUy
MSAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oICovOyB9OworCQlFMzNBOTQ5
NjIyNTUzMjMwMDBENDJCMDYgLyogUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQTk0OTQyMjU1MzIyOTAwRDQy
QjA2IC8qIFJhbmRvbWl6aW5nRnV6emVyQWdlbnQuaCAqLzsgfTsKKwkJRTMzQTk0OTcyMjU1MzIz
MzAwRDQyQjA2IC8qIEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYgLyogRnV6emVyQWdlbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzNC
QkUwOTI1QkZBMDQxMDA1MzY5MEYgLyogV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCQkUwODI1QkZBMDNDMDA1
MzY5MEYgLyogV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMzRDIwMzkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
ZGlzR2VuZXJhdGVkRW51bVJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzNEMUZFODI3N0YzMDNGMDBBNDVGQkIgLyogWnlkaXNHZW5lcmF0
ZWRFbnVtUmVnaXN0ZXIuaCAqLzsgfTsKKwkJRTMzRDIwM0MyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
Y29yZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzM0QxRkVCMjc3RjMwM0YwMEE0NUZCQiAvKiBaeWNvcmVEZWZpbmVzLmggKi87IH07CisJ
CUUzM0QyMDQxMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDFGRjAyNzdGMzAzRjAwQTQ1RkJC
IC8qIFp5ZGlzU3RhdHVzLmggKi87IH07CisJCUUzM0QyMDQ3Mjc3RjMwNDAwMEE0NUZCQiAvKiBa
eWRpc0ludGVybmFsRm9ybWF0dGVySW50ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QxRkY2Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0ludGVy
bmFsRm9ybWF0dGVySW50ZWwuaCAqLzsgfTsKKwkJRTMzRDIwNDgyNzdGMzA0MDAwQTQ1RkJCIC8q
IFp5ZGlzSW50ZXJuYWxEZWNvZGVyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzRDFGRjcyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJu
YWxEZWNvZGVyRGF0YS5oICovOyB9OworCQlFMzNEMjA0OTI3N0YzMDQwMDBBNDVGQkIgLyogWnlj
b3JlQ29tcGFyaXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRDFGRjgyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5Y29yZUNvbXBhcmlzb24uaCAqLzsg
fTsKKwkJRTMzRDIwNEEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzU2hhcmVkVHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QxRkY5Mjc3RjMw
M0YwMEE0NUZCQiAvKiBaeWRpc1NoYXJlZFR5cGVzLmggKi87IH07CisJCUUzM0QyMDRDMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMUZGQjI3N0YzMDQwMDBBNDVGQkIgLyogWnlk
aXNJbnRlcm5hbFN0cmluZy5oICovOyB9OworCQlFMzNEMjA1MDI3N0YzMDQwMDBBNDVGQkIgLyog
WnlkaXNJbnRlcm5hbEZvcm1hdHRlckFUVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzRDFGRkYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJu
YWxGb3JtYXR0ZXJBVFQuaCAqLzsgfTsKKwkJRTMzRDIwNTIyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
ZGlzR2VuZXJhdGVkRW51bUlTQVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRDIwMDEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVk
RW51bUlTQVNldC5oICovOyB9OworCQlFMzNEMjA1MzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDAy
Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpcy5oICovOyB9OworCQlFMzNEMjA1NDI3N0YzMDQwMDBB
NDVGQkIgLyogWnlkaXNGb3JtYXR0ZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDAzMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zv
cm1hdHRlckJ1ZmZlci5oICovOyB9OworCQlFMzNEMjA1NTI3N0YzMDQwMDBBNDVGQkIgLyogWnlj
b3JlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNEMjAwNDI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQWxsb2NhdG9yLmggKi87IH07
CisJCUUzM0QyMDU2Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0V4cG9ydENvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDIwMDUyNzdGMzA0
MDAwQTQ1RkJCIC8qIFp5ZGlzRXhwb3J0Q29uZmlnLmggKi87IH07CisJCUUzM0QyMDU3Mjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWNvcmVTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDA2Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVTdGF0
dXMuaCAqLzsgfTsKKwkJRTMzRDIwNTkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDIwMDgy
NzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2Rlci5oICovOyB9OworCQlFMzNEMjA1RDI3N0Yz
MDQwMDBBNDVGQkIgLyogWnljb3JlQml0c2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAwQzI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQml0
c2V0LmggKi87IH07CisJCUUzM0QyMDVGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRl
ZEVudW1JU0FFeHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzM0QyMDBFMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1JU0FFeHQu
aCAqLzsgfTsKKwkJRTMzRDIwNjMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkRW51
bUluc3RydWN0aW9uQ2F0ZWdvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzM0QyMDEyMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVu
dW1JbnN0cnVjdGlvbkNhdGVnb3J5LmggKi87IH07CisJCUUzM0QyMDY0Mjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpc01uZW1vbmljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzNEMjAxMzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNNbmVtb25pYy5oICov
OyB9OworCQlFMzNEMjA2NjI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAxNTI3N0YzMDQw
MDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmggKi87IH07CisJCUUzM0QyMDY4Mjc3RjMwNDAwMEE0
NUZCQiAvKiBaeWNvcmVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzRDIwMTcyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZVR5cGVzLmggKi87
IH07CisJCUUzM0QyMDZCMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsRm9ybWF0dGVy
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
RDIwMUEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxGb3JtYXR0ZXJCYXNlLmggKi87
IH07CisJCUUzM0QyMDZDMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1JlZ2lzdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAxQjI3N0YzMDQw
MDBBNDVGQkIgLyogWnlkaXNSZWdpc3Rlci5oICovOyB9OworCQlFMzNEMjA2RTI3N0YzMDQwMDBB
NDVGQkIgLyogWnljb3JlVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzNEMjAxRDI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlVmVjdG9yLmgg
Ki87IH07CisJCUUzM0QyMDZGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVGb3JtYXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDFFMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWNvcmVGb3JtYXQuaCAqLzsgfTsKKwkJRTMzRDIwNzEyNzdGMzA0MDAw
QTQ1RkJCIC8qIFp5ZGlzTWV0YUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0QyMDIwMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc01ldGFJbmZv
LmggKi87IH07CisJCUUzM0QyMDcyMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsU2hh
cmVkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzRDIwMjEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxTaGFyZWREYXRhLmggKi87
IH07CisJCUUzM0QyMDczMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVMaWJDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAyMjI3N0YzMDQwMDBB
NDVGQkIgLyogWnljb3JlTGliQy5oICovOyB9OworCQlFMzNEMjA3NjI3N0YzMDQwMDBBNDVGQkIg
LyogWnlkaXNVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRDIwMjUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzVXRpbHMuaCAqLzsgfTsKKwkJ
RTMzRDIwNzgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzU2hvcnRTdHJpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDI3Mjc3RjMwNDAwMEE0
NUZCQiAvKiBaeWRpc1Nob3J0U3RyaW5nLmggKi87IH07CisJCUUzM0QyMDc5Mjc3RjMwNDAwMEE0
NUZCQiAvKiBaeWRpc0Zvcm1hdHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRDIwMjgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVy
LmggKi87IH07CisJCUUzM0QyMDdCMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDJBMjc3
RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVPYmplY3QuaCAqLzsgfTsKKwkJRTMzRDIwODIyNzdGMzA0
MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkRW51bU1uZW1vbmljLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAzMTI3N0YzMDQwMDBBNDVGQkIg
LyogWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaCAqLzsgfTsKKwkJRTMzRDIwODQyNzdGMzA0
MDAwQTQ1RkJCIC8qIFp5Y29yZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0QyMDMzMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVMaXN0Lmgg
Ki87IH07CisJCUUzM0QyMDg1Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0RlY29kZXJUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDIwMzQy
NzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2RlclR5cGVzLmggKi87IH07CisJCUUzM0QyMDhC
Mjc3RjMwQUEwMEE0NUZCQiAvKiBaeWNvcmVFeHBvcnRDb25maWcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDhBMjc3RjMwQUEwMEE0NUZCQiAv
KiBaeWNvcmVFeHBvcnRDb25maWcuaCAqLzsgfTsKKwkJRTMzRDIwOEQyNzdGNDM2QTAwQTQ1RkJC
IC8qIFp5ZGlzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzNEMjAyQzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXMuYyAqLzsgfTsKKwkJRTMzRDIwOEUy
NzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzTW5lbW9uaWMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDMyMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRp
c01uZW1vbmljLmMgKi87IH07CisJCUUzM0QyMDkwMjc3RjQzNkEwMEE0NUZCQiAvKiBaeWRpc0Zv
cm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzM0QyMDM3Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyAqLzsg
fTsKKwkJRTMzRDIwOTEyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2Rlci5jIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDIwMjYyNzdGMzA0MDAw
QTQ1RkJCIC8qIFp5ZGlzRGVjb2Rlci5jICovOyB9OworCQlFMzNEMjA5MjI3N0Y0MzZBMDBBNDVG
QkIgLyogWnljb3JlU3RyaW5nLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzNEMUZFRTI3N0YzMDNGMDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmMgKi87
IH07CisJCUUzM0QyMDkzMjc3RjQzNkEwMEE0NUZCQiAvKiBaeWRpc1NoYXJlZERhdGEuYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDEwMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWRpc1NoYXJlZERhdGEuYyAqLzsgfTsKKwkJRTMzRDIwOTQyNzdGNDM2
QTAwQTQ1RkJCIC8qIFp5ZGlzTWV0YUluZm8uYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QxRkZDMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc01ldGFJ
bmZvLmMgKi87IH07CisJCUUzM0QyMDk1Mjc3RjQzNkEwMEE0NUZCQiAvKiBaeWNvcmVMaXN0LmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMjAxMTI3
N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlTGlzdC5jICovOyB9OworCQlFMzNEMjA5ODI3N0Y0MzZB
MDBBNDVGQkIgLyogWnlkaXNGb3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QxRkYxMjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0Zv
cm1hdHRlckFUVC5jICovOyB9OworCQlFMzNEMjA5QTI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNT
dHJpbmcuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
M0QyMDA3Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1N0cmluZy5jICovOyB9OworCQlFMzNEMjA5
QjI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNGb3JtYXR0ZXJCdWZmZXIuYyBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDJCMjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpc0Zvcm1hdHRlckJ1ZmZlci5jICovOyB9OworCQlFMzNEMjA5QzI3N0Y0MzZBMDBB
NDVGQkIgLyogWnlkaXNGb3JtYXR0ZXIuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0QyMDBBMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRl
ci5jICovOyB9OworCQlFMzNEMjA5RTI3N0Y0MzZBMDBBNDVGQkIgLyogWnljb3JlVmVjdG9yLmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMUZGQTI3
N0YzMDNGMDBBNDVGQkIgLyogWnljb3JlVmVjdG9yLmMgKi87IH07CisJCUUzM0QyMEEwMjc3RjQz
NkEwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMUZFQzI3N0YzMDNGMDBBNDVGQkIgLyogWnlk
aXNGb3JtYXR0ZXJJbnRlbC5jICovOyB9OworCQlFMzNEMjBBMTI3N0Y0MzZBMDBBNDVGQkIgLyog
Wnljb3JlRm9ybWF0LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNEMUZGRDI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlRm9ybWF0LmMgKi87IH07CisJ
CUUzM0QyMEEyMjc3RjQzNkEwMEE0NUZCQiAvKiBaeWNvcmVBbGxvY2F0b3IuYyBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0QyMDJFMjc3RjMwNDAwMEE0
NUZCQiAvKiBaeWNvcmVBbGxvY2F0b3IuYyAqLzsgfTsKKwkJRTMzRDIwQTMyNzdGNDM2QTAwQTQ1
RkJCIC8qIFp5ZGlzVXRpbHMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzM0QxRkY1Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc1V0aWxzLmMgKi87IH07
CisJCUUzM0QyMEE0Mjc3RjQzNkEwMEE0NUZCQiAvKiBaeWRpc1JlZ2lzdGVyLmMgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNEMUZFOTI3N0YzMDNGMDBB
NDVGQkIgLyogWnlkaXNSZWdpc3Rlci5jICovOyB9OworCQlFMzNEMjBBNTI3N0Y0MzZBMDBBNDVG
QkIgLyogWnlkaXNEZWNvZGVyRGF0YS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRDIwMUYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2RlckRh
dGEuYyAqLzsgfTsKKwkJRTMzRDIwQTYyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5Y29yZUJpdHNldC5j
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRDIwMzYy
NzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUJpdHNldC5jICovOyB9OworCQlFMzNFOEQxRDFCOTAx
M0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpT
TmF0aXZlU3RkRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzM0Y1MDczMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
M0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNGNTA3NzFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzM0Y1MDgxMUI4NDI5
QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5sdXQuaCAqLzsgfTsKKwkJRTM0MDBFQzEyMkExQ0M3QjAwOURFRDU0IC8qIEZ1bmN0aW9u
RXhlY3V0YWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmggKi87IH07CisJCUUzNDlBNzgxMjQ5MUYxNjEwMDFCQTMzNiAvKiBERkdDb2RlT3Jp
Z2luUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0OUE3ODAyNDkxRjE1QTAwMUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Qb29sLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM0RTY1NzUyMDY2OEVB
QTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNEVEQkY3
MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFt
ZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJC
OERCNCAvKiBKU0dlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3
MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJE
RjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFt
ZXMuaCAqLzsgfTsKKwkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1
Y3Rvci5oICovOyB9OworCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlO
YW1lc1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1M0MxMUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaCAqLzsgfTsKKwkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxp
dHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTQ2
MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1NTVCOEExREFFMDNBNTAwRjM2
OTIxIC8qIERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9N
SklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzU1RDM4RjIyNDQ2ODc3MDA4RjFBRDYgLyogR2xvYmFsRXhl
Y3V0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM1NUQzOEQyMjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzU2OTg3MjIyODQxMTg3
MDA4Q0RDQ0IgLyogUGFja2VkQ2VsbFB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1Njk4NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQ
dHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzVBMEI5RDIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVBMEI5QzIyMEFEODdB
MDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1Q0ExNTQxREJDM0E1QzAwRjgzNTE2IC8q
IERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM1Q0ExNTIxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNUNBMTU2
MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAv
KiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzVFODlGRDI1QzUwRjg3MDA3MUVFMUUgLyogQmlnSW50NjRBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1RTg5
RkIyNUM1MEY4NjAwNzFFRTFFIC8qIEJpZ0ludDY0QXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzVFODlGRTI1QzUwRjg3MDA3MUVFMUUg
LyogQmlnVWludDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNUU4OUZDMjVDNTBGODcwMDcxRUUxRSAvKiBCaWdVaW50NjRBcnJheS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNjM3RUU5
MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyog
TGlua1RpbWVDb25zdGFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzNjVGMzNBMjRBQTYyMzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVz
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzY1RjMzOTI0QUE2MjEyMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc0NvbnN0
cnVjdG9yLmx1dC5oICovOyB9OworCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNjVGMzM4MjRBQTYyMTEwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlLmx1dC5oICovOyB9OworCQlFMzY2NDQxRTI1NDQwOUIzMDAwMTg3NkYgLyog
SW50bExpc3RGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxOENBNjkyNTQ0MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0LmNwcCAq
LzsgfTsKKwkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4
NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8q
IENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdG
MDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc0MTY2RTI2OTEyQkM3MDBD
ODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkgLyogT2Jq
ZWN0Q29uc3RydWN0b3JJbmxpbmVzLmggKi87IH07CisJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFB
QiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERh
dGVUaW1lRm9ybWF0SW5saW5lcy5oICovOyB9OworCQlFMzc4REM4RDI3Mjc2Mjk0MDA0MjdCMEIg
LyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dC5jcHAgKi87IH07CisJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRF
NzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM4MzUwMEEyMzkwRDkzQjAwMzYzMTZE
IC8qIFdhc21HbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggKi87IH07CisJ
CUUzODUwQjE1MjI2RUQ2NDEwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NTBCMTQyMjZFRDYz
RTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggKi87IH07CisJCUUzODY1MkUzMjM3
Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBC
bG9ja0RpcmVjdG9yeUJpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzg2RkQ3QjI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NkZENzUyNkU4NjdCNzAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3IuaCAqLzsgfTsKKwkJRTM4NkZEN0UyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxh
aW5UaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzg2RkQ3ODI2RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWUuaCAqLzsgfTsKKwkJ
RTM4NkZEN0YyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2RkQ3OTI2
RTg2N0I4MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCAqLzsgfTsKKwkJ
RTM4OTNBMUQyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
ODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggKi87IH07CisJCUUzOEU4NzkwMjU0Qjk3ODQwMEY2RjlFNCAvKiBKU0RhdGVNYXRoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIy
MTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsKKwkJRTM5MDA2MjEyMjA4
QkZDNDAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkwMDYyMDIyMDhCRkMzMDAxMDE5Q0YgLyogU3Vic3Bh
Y2VBY2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzkyRTZGODI0RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTJFNkY2MjRE
MjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuY3BwICovOyB9OworCQlFMzkyRTZG
OTI0RDI1RkE5MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRTZGNzI0RDI1RkE2MDBCMjA3Njcg
LyogQjNCb3R0b21UdXBsZVZhbHVlLmggKi87IH07CisJCUUzOTNBREQ4MUZFNzAyRDAwMDIyRDY4
MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOTNBREQ3MUZFNzAyQ0MwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElu
bGluZXMuaCAqLzsgfTsKKwkJRTM5OUFFQzMyNTU5NDU3RjAwQjc4NDg1IC8qIEludGxEYXRlVGlt
ZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLzsg
fTsKKwkJRTM5QkYzOTkyMkEyMjg4QjAwQkQxODNFIC8qIFN5bWJvbFRhYmxlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5QkYzOTgyMkEy
Mjg4QjAwQkQxODNFIC8qIFN5bWJvbFRhYmxlSW5saW5lcy5oICovOyB9OworCQlFMzlENDVGNTFE
MzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyog
SW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM5RDhCMkUyMzAyMUUyNjAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOEIy
RDIzMDIxRTFFMDAyNjU4NTIgLyogV2FzbU9wZXJhdGlvbnMuaCAqLzsgfTsKKwkJRTM5REExREEy
NkRCNUU0QzAwMTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M0NjMwNjI2REI1REU5
MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKKwkJRTM5
REExREIyNkRCNUU1MTAwMTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzQ2MzA1
MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggKi87
IH07CisJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5RTQ0OTEyNzQ4RTNGODAwRUREMkE1IC8qIFJlcGF0
Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUU0
NDhFMjc0OEUzRjgwMEVERDJBNSAvKiBSZXBhdGNoLmggKi87IH07CisJCUUzOUU0NDkzMjc0OEUz
RjgwMEVERDJBNSAvKiBSZXBhdGNoSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RTQ0OTAyNzQ4RTNGODAwRUREMkE1IC8qIFJlcGF0Y2hJ
bmxpbmVzLmggKi87IH07CisJCUUzOUVFQUYzMjI4MTI0NTAwMDg0NzRGNCAvKiBDYWNoZWRTcGVj
aWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAv
KiBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsg
fTsKKwkJRTM5RkVCRTMyMzM5QzVEOTAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUZFQkUyMjMzOUM1
RDQwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi87IH07CisJCUUzQTA1MzFBMjEzNDJC
NjgwMDIyRUMxNCAvKiBXYXNtU3RyZWFtaW5nUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2Fz
bVN0cmVhbWluZ1BhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzQTA1MzFDMjEzNDJCNjgwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMDUz
MTgyMTM0MkI2NzAwMjJFQzE0IC8qIFdhc21TZWN0aW9uUGFyc2VyLmggKi87IH07CisJCUUzQTEw
RTgxMjc4MDNFM0IwMEQzQUNEMCAvKiBaeWNvcmUuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTEwRTdGMjc4MDNFM0IwMEQzQUNEMCAvKiBaeWNvcmUu
YyAqLzsgfTsKKwkJRTNBMTBFODIyNzgwM0UzQjAwRDNBQ0QwIC8qIFp5Y29yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMTBFODAyNzgwM0UzQjAw
RDNBQ0QwIC8qIFp5Y29yZS5oICovOyB9OworCQlFM0EzMkJDNzFGQzgzMTQ3MDA3RDdFNzYgLyog
V2Vha01hcEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBXZWFrTWFwSW1wbC5oICovOyB9OworCQlF
M0E0MjE0MzFENkY1ODkzMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDIxNDIxRDZG
NTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0FDMjc3NzIxRkRCNDk0MDAy
NDQ1MkMgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY3NUVGQzE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2Fj
aGVkUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTNCRDJCNzYyMkYyNzUwMjAwMTE3NjVDIC8qIFdhc21Db21waWxhdGlvbk1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkQyQjc1MjJG
Mjc1MDIwMDExNzY1QyAvKiBXYXNtQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNCRjFCQUUyMzhBQUVEQjAwM0ExQzJC
IC8qIElzb0hlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNCRjFCQUQyMzhBQUVEMTAwM0ExQzJCIC8qIElzb0hlYXBDZWxsVHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzQkYz
QzREMjM5MEQxRTgwMDhCQzc1MiAvKiBKU1dlYkFzc2VtYmx5R2xvYmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGM0M0QjIzOTBEMUUyMDA4QkM3
NTIgLyogSlNXZWJBc3NlbWJseUdsb2JhbC5oICovOyB9OworCQlFM0JGM0M1MjIzOTBEMjAyMDA4
QkM3NTIgLyogV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkYzQzUwMjM5MEQxRkMwMDhCQzc1MiAvKiBX
ZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oICovOyB9OworCQlFM0JGM0M1MzIzOTBEMjA1MDA4
QkM3NTIgLyogV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRjNDNTEyMzkwRDFGQzAwOEJDNzUyIC8q
IFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTNCRkE1RDAyMUU4NTNB
MTAwOUMwRUJBIC8qIERGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkE1Q0QyMUU4NTNBMTAwOUMwRUJBIC8q
IERGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oICovOyB9OworCQlFM0JGRDBCQzFEQUY4MDhFMDA2
NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBBY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5oICovOyB9OworCQlFM0MyOTVERDFFRDJDQkRBMDBEMzAxNkYg
LyogT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzI5NURDMUVEMkNCQUEwMEQzMDE2
RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oICovOyB9OworCQlF
M0M2OTRCMzIzMDI2ODc3MDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNjk0QjEyMzAyNjg3MzAwNkZC
RTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFM0M3M0E5MTI1QkZBNzNCMDBFRkUzMDMgLyogV2FzbVN0cmVh
bWluZ1BsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQzczQTkwMjVCRkE3MzQwMEVGRTMwMyAvKiBXYXNtU3RyZWFtaW5nUGxhbi5oICovOyB9Owor
CQlFM0M3OUNBQjFEQjlBNERDMDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0M3OUNBQTFEQjlBNEQ2MDBEMUVD
QTQgLyogRE9NSklURWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTNDOEVENDMyM0ExREJDQjAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQzhFRDQyMjNBMURCQzUwMDEzMTk1OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDQTNBNEUy
NTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4MDJCRiAvKiBK
SVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIz
OUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMzUxNUYyNDFCODlENzAw
OERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtl
ZEpTVmFsdWVSZWZBcnJheS5oICovOyB9OworCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyog
Qnl0ZWNvZGVEdW1wZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDg3NzcyMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9
OworCQlFM0VFMTM3NjIxRkJENDM1MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODND
NEIgLyogRXJyb3JUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTNGMEZDOTUyNkExMUI0QTAwOTlGRkEwIC8qIFlhcnJNYXRjaGluZ0NvbnRl
eHRIb2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRjBGQzk0MjZBMTFCNEEwMDk5RkZBMCAvKiBZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNGMjE5
MzcyNEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4MzEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyog
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0Qzc4ODM0
MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRz
LmggKi87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLzsgfTsK
KwkJRTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3RTFFQ0Yx
M0U1MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkg
LyogU25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0YyM0E4MTFFQ0YxM0ZB
MDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJh
bXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
M0YyM0E4MjFFQ0YxM0ZFMDA5NzhEOTkgLyogU25pcHBldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0IxRUNGMTNFNTAwOTc4RDk5IC8qIFNu
aXBwZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFM0ZCODUzQTIyRjM2NjdCMDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZCODUzODIyRjM2Njc0
MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmggKi87IH07CisJCUUzRkNDQjY0MjMxMEE5
MEQwMDIzOEU3MiAvKiBDb25zdHJ1Y3RvcktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkNDQjYzMjMxMEE5MEQwMDIzOEU3MiAvKiBDb25zdHJ1
Y3RvcktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFM0ZGNzUzMzFEOUNFQTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZGNzUyRjFEOUNF
QTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNh
Y2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE0OTEyRUYy
NjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNkQ2N0Q0MDI2RjkwMkU5MDA2RTAz
NDkgLyogVGVtcG9yYWxJbnN0YW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNkQ2N0QzQTI2RjkwMkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50
LmggKi87IH07CisJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
LmggKi87IH07CisJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAq
LzsgfTsKKwkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0
cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
Lmx1dC5oICovOyB9OworCQlGNkQ2N0Q0ODI2RjkxMzBDMDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjZENjdENDYyNkY5MTMwQjAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKKwkJRjZGMTUwMjEyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFs
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovOyB9
OworCQlGRTA0MTU1MzI1MkVDMDczMDA5MUVCNUQgLyogU2xvdFZpc2l0b3JNYWNyb3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDQxNTUyMjUyRUMw
NzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMDVGQUZEMUZFNENFREEwMDA5MzIzMCAvKiBE
ZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5MkQ2QTExMUZCRDQ5MUQwMDAyNDVGNCAvKiBEZXByZWNhdGVk
SW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKKwkJRkUwODZCQ0EyMTIzREVGQjAwM0YyOTI5IC8q
IEVudHJ5RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMDg2QkM5MjEyM0RFRkEwMDNGMjkyOSAvKiBFbnRyeUZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUwRDRBMDYxQUI4REQwQTAw
MkY1NEJGIC8qIEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDRBMDQxQUI4REQwQTAwMkY1NEJGIC8qIEV4
ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwICovOyB9OworCQlGRTBENEEwOTFBQkEyNDM3MDAyRjU0
QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAv
KiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OworCQlGRTEwQUFFQjFG
NDRENTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3Rh
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlG
RTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUg
LyogUHJvYmVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjYx
QkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9OworCQlGRTE0MDkwNzIw
NTZGM0ZGMDBDRkUzMTggLyogTmF0aXZlRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTQwOTA2MjA1NkYzRkUwMENGRTMxOCAvKiBOYXRp
dmVGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTAwMUJGQkM3
M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAqLzsgfTsKKwkJRkUxODdBMEQxQzAzMEQ1
QzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMEIxQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdl
bmVyYXRvci5oICovOyB9OworCQlGRTE4N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9w
ZXJhbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MTg3QTBDMUMwMkVCQTcwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oICovOyB9OworCQlGRTFC
RDAxRTFFNzIwMDJBMDAxMzRCQzkgLyogQ2VsbExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDFDMUU3MjAwMjEwMDEzNEJDOSAvKiBDZWxs
TGlzdC5oICovOyB9OworCQlGRTFCRDAyMTFFNzIwMjc5MDAxMzRCQzkgLyogQ2VsbFByb2ZpbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUJEMDIw
MUU3MjAyNzAwMDEzNEJDOSAvKiBDZWxsUHJvZmlsZS5oICovOyB9OworCQlGRTFCRDAyNTFFNzIw
NTM4MDAxMzRCQzkgLyogSGVhcFZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCRDAyMzFFNzIwNTJGMDAxMzRCQzkgLyogSGVhcFZlcmlm
aWVyLmggKi87IH07CisJCUZFMUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIx
OTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRTFENkQ2RDIzNjI1NDRCMDA3QTVDMjYgLyogUmVnaXN0
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTFENkQ2QzIzNjI1NDRBMDA3QTVDMjYgLyogUmVnaXN0ZXJJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxRDZENkYyMzYyNThG
RTAwN0E1QzI2IC8qIEdldFZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTFENkQ2RTIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTFENkQ3MTIzNjI1QUIx
MDA3QTVDMjYgLyogQXJyYXlTdG9yYWdlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxRDZENzAyMzYyNUFCMDAwN0E1QzI2IC8qIEFycmF5
U3RvcmFnZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRTFENkQ3NTIzNjI2NDlGMDA3QTVDMjYgLyogUHJvdG9DYWxsRnJhbWVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFE
NkQ3NDIzNjI2NDlEMDA3QTVDMjYgLyogUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggKi87IH07CisJ
CUZFMUUyQzNGMjI0MERENTgwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxRTJDM0UyMjQwRDMw
QjAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxRTJDNDAyMjQwREQ2MjAwRjZCNzI5IC8q
IEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxRTJDM0QyMjQwRDJGNjAwRjZCNzI5IC8qIEFSTTY0RUFzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMjBDRTlF
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRD
TG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFMjg3RDAyMjUyRkIyRTgwMEQ3MjNGOSAvKiBWZXJpZmllclNsb3RWaXNpdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTI4N0QwMTI1MkZCMkU4
MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMkE4NzYwMUYwMjM4MTYwMEVCMzFCMiAvKiBN
aW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1pbmltdW1SZXNlcnZl
ZFpvbmVTaXplLmggKi87IH07CisJCUZFMkNDOTMwMjc1NkIyQjkwMDNGNUFCOCAvKiBIZWFwU3Vi
c3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyQ0M5MkYyNzU2QjJCOTAwM0Y1QUI4IC8qIEhlYXBTdWJzcGFjZVR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUzMDIyRDMxRTNE
NzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQxMUUzRDczOTYwMEJBQzQ5MyAvKiBT
aWdpbGxDcmFzaEFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKKwkJRkUzMzZCNTMyNURCNDk3
RDAwOThGMDM0IC8qIE1hcmtpbmdDb25zdHJhaW50RXhlY3V0b3JQYWlyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMzNkI1MjI1REI0OTdEMDA5OEYw
MzQgLyogTWFya2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaCAqLzsgfTsKKwkJRkUzNDIyMTIx
RDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkUzNEVFMjEyNDM5OEFBRTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0RUUyMDI0Mzk4QTlB
MDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0NDUgLyog
T3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMzg0RUU2MUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFM0EwNkE2
MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8q
IEpJVEJpdE9yR2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkE4MUMxMEJDODEwMDM5MEZERCAv
KiBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTcxQzEwQkM3NDAwMzkwRkREIC8qIEpJVEJpdEJpbmFy
eU9wR2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkIyMUMxMENCODkwMDM5MEZERCAvKiBKSVRC
aXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFM0EwNkFFMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJRkUzQTA2QjQxQzEwQ0I5MzAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QjAx
QzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oICovOyB9OworCQlGRTNBMDZC
RTFDMTEwNDEyMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCNzFDMTEwM0Q5MDAzOTBG
REQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkMwMUMxMTA0MUEw
MDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCOTFDMTEwM0Q5MDAzOTBGREQgLyogSklU
UmlnaHRTaGlmdEdlbmVyYXRvci5oICovOyB9OworCQlGRTNCNjQyRjI1RDZGQjREMDAxQUREQjQg
LyogUm9vdE1hcmtSZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFM0I2NDJFMjVENkZCNEMwMDFBRERCNCAvKiBSb290TWFya1JlYXNvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNDc2RkY0
MjA3RTg1RDUwMDkzQ0EyRCAvKiBKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ3NkZGMzIwN0U4NUQ0MDA5M0NBMkQgLyogSklUQ29k
ZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNDhCRDQ0MjMyNDVFOTMwMEYxMzZEMCAvKiBKU0NDb25maWcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAv
KiBKU0NDb25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTQ4RTYzODFFQjExOEQyMDA1RDdBOTYgLyogT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0
OEU2MzYxRUIxMTg4RjAwNUQ3QTk2IC8qIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTRCRkYyQzFB
RDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEJGRjJBMUFENDc2RTcwMDA4OEY4NyAvKiBG
dW5jdGlvbk92ZXJyaWRlcy5oICovOyB9OworCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyog
SXRlcmF0aW9uU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTRENTVCNzFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU1MDY4NjUx
QUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8q
IERlZmVycmVkU291cmNlRHVtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUZFNTMzQ0E1MUYyMTdEQjMwMDE2QTFGRSAvKiBGb3VuZGF0aW9uLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsK
KwkJRkU1MzNDQTYxRjIxN0RCMzAwMTZBMUZFIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5
MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCUZF
NTMzQ0FEMUYyMTdFQTUwMDE2QTFGRSAvKiB0ZXN0bWFzbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyog
dGVzdG1hc20uY3BwICovOyB9OworCQlGRTU0REVGQjFFOEM2RDg4MDBBODkyQzUgLyogRGlzYWxs
b3dWTUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTU0REVGQTFFOEM2RDcyMDBBODkyQzUgLyogRGlzYWxsb3dWTUVudHJ5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU1NERFRkYxRThENzZG
QTAwQTg5MkM1IC8qIERpc2FsbG93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTRERUZFMUU4RDc0MjgwMEE4OTJDNSAvKiBEaXNhbGxvd1Nj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkU1NjI4Q0UxRTk5NTEzMjAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1NjI4Q0MxRTk5NTEyNDAwQzQ5
RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovOyB9OworCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVD
Q0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2MDI5RDkx
RDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjAyOUQ4MUQ2RTFFMzMwMDMwMjA0
RCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2M0RENTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjNE
RDUzMUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2NDg3MkUyMTQxRDA0ODAwQUIwRDNFIC8qIE9w
Y29kZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNjQ4NzJEMjE0MUQwNDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2NDkxMzcxRDc4RjAx
RDAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY0OTEzNjFENzhGMDEzMDBBNjk0RDQgLyogRXhjZXB0aW9u
U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlGRTY1QjE1MTI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjVC
MTUwMjc0ODYwMUYwMERCNUIxNiAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICov
OyB9OworCQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYz
NjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU2RjU2REUxRTY0RUFENjAw
RDE3ODAxIC8qIFZNVHJhcHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNkY1NkREMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU3NDk3RTYyMDkwMDFC
MTAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU3NDk3RTUyMDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFN0M0MTk2
MUI5N0ZDNEIwMEY0RDU5OCAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREE1MEQ0MUI5N0Y0NDIw
MDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCAqLzsgfTsKKwkJRkU4MEMx
OTcxRDc3NUNERDAwODUxMEMwIC8qIENhdGNoU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBDMTk2MUQ3NzVCMjcwMDg1MTBDMCAvKiBDYXRj
aFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRkU4QzAzMTIyNjRBNjkxMTAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOEMwMzExMjY0QTY5MTAw
MDFBNDRBRCAvKiBTbG93UGF0aEZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU4REU1NEIyM0FDMURBRDAwNUM5MTQyIC8qIENhY2hl
YWJsZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFOERFNTRBMjNBQzFEQUQwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVyLmgg
Ki87IH07CisJCUZFOERFNTREMjNBQzFFODYwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4REU1NEMyM0FDMUU4NjAwNUM5MTQyIC8qIENhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgg
Ki87IH07CisJCUZFOTEyQjRGMjUzMTE5MzMwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTkxMkI0
RTI1MzExOTMzMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFOTEyQjUxMjUzMTFBRDEwMEZB
QkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5MTJCNTAyNTMxMUFEMTAwRkFCRERGIC8qIEFi
c3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU5OUIyNDkxQzI0QzNEMzAwQzgyMTU5IC8qIEpJVE5lZ0dl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU5OUIyNDgxQzI0QjZEMzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5oICovOyB9OworCQlG
RTlGM0ZCOTI2MTNDNzg5MDA2OUU4OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTlGM0ZCODI2MTNDNzg4MDA2
OUU4OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmggKi87IH07CisJCUZFOUYzRkM4MjYxNjNDQTkw
MDY5RTg5RiAvKiBEZWZlclRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTlGM0ZDNjI2MTYzQ0E5MDA2OUU4OUYgLyogRGVmZXJUZXJt
aW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFOUZBN0M1MjczQzhCMjYwMDVEOUU3MCAvKiBEZWZlckdDSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5RkE3QzQyNzNDOEIyNjAw
NUQ5RTcwIC8qIERlZmVyR0NJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4
NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8q
IERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
QTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEzQkJBNzIxMkI2NTU4MDBFOTNB
RDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUZFQTNCQkFDMjEyQzk3Q0IwMEU5M0FEMSAvKiBERkdDRkcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTNCQkFCMjEy
Qzk3Q0IwMEU5M0FEMSAvKiBERkdDRkcuaCAqLzsgfTsKKwkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5
MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5t
bSAqLzsgfTsKKwkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThD
MTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQzE2MDMyMjMzOUU5RjkwMEEw
NENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi87IH07CisJ
CUZFQzNBM0ExMjQ4NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzQTAyNDg3MzVCQzAwMzk1
QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9y
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICovOyB9Owor
CQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0Yg
LyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc3MjMx
MDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVDQjhCMjcxRDI1QkI4NTAwNkYyNDYzIC8q
IEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUNCOEIyNTFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVy
cmlkZXNUZXN0LmNwcCAqLzsgfTsKKwkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50
T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3
QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFRjA0MDUxMUFBRTY2MkQw
MEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBh
cmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CisJCUZFRjQ5QUFCMUVCOTQ4NEIwMDY1M0JEQiAvKiBN
dWx0aXRocmVhZGVkTXVsdGlWTUV4ZWN1dGlvblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNDlBQTkxRUI5NDdGRTAwNjUzQkRCIC8qIE11
bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0aW9uVGVzdC5jcHAgKi87IH07CisJCUZFRjVCNDIzMjYy
OEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjVCNDIyMjYyOEEwRUUwMDE2RTc3NiAvKiBI
YXNoTWFwSW1wbElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGRUY1QjQyNTI2MjhBODUwMDAxNkU3NzYgLyogSlNNYXBJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUY1QjQyNDI2
MjhBODUwMDAxNkU3NzYgLyogSlNNYXBJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVGNUI0MjcyNjI4QUJEOTAwMTZFNzc2IC8qIEpT
V2Vha01hcElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFRjVCNDI2MjYyOEFCRDkwMDE2RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVGNUI0Mjky
NjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNUI0MjgyNjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFRjVCNDJDMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGNUI0MkIyNjI4Q0JDODAw
MTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVGNUI0MzAyNjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlv
bkV4cGVjdGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUY1QjQyRjI2MkEzMzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUZENkZD
NjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyog
SlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhC
dWlsZFJ1bGUgc2VjdGlvbiAqLworCQk1MzVFMDhDMjIyNTQ1QUM4MDBERjAwQ0EgLyogUEJYQnVp
bGRSdWxlICovID0geworCQkJaXNhID0gUEJYQnVpbGRSdWxlOworCQkJY29tcGlsZXJTcGVjID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CisJCQlmaWxlUGF0dGVybnMgPSAiKi5o
IjsKKwkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkp
OworCQkJaXNFZGl0YWJsZSA9IDE7CisJCQlvdXRwdXRGaWxlcyA9ICgKKwkJCQkiJChIRUFERVJf
T1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKKwkJCSk7CisJCQlzY3JpcHQgPSAiZXhl
YyBcIiR7U1JDUk9PVH0vU2NyaXB0cy9wb3N0cHJvY2Vzcy1oZWFkZXItcnVsZVwiXG4iOworCQl9
OworLyogRW5kIFBCWEJ1aWxkUnVsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNjE4MzQ2MUM0NUY2N0EwMDcyNDUwQiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSAwRjYxODMzODFDNDVGNjJBMDA3MjQ1MEI7CisJCQlyZW1vdGVJbmZvID0gdGVzdGFpcjsKKwkJ
fTsKKwkJMEY5MzI3NUMxQzIwQkYzQTAwQ0Y2NTY0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGOTMyNzRFMUMyMEJDQkEw
MENGNjU2NDsKKwkJCXJlbW90ZUluZm8gPSBkeW5iZW5jaDsKKwkJfTsKKwkJMEZFQzg1QjAxQkRC
NUQ4RjAwODBGRjc0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGRUM4NTk0MUJEQjVDRjEwMDgwRkY3NDsKKwkJCXJlbW90
ZUluZm8gPSB0ZXN0YjM7CisJCX07CisJCTBGRjkyMkQyMTRGNDZCMkYwMDQxQTI0RSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNl
dHMiOworCQl9OworCQkxNEJENjg4MzIxNTE5MTMxMDA1MERBRkYgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNjVGQjNGNjYw
OUQxMUU5MTAwRjQ5REVCOworCQkJcmVtb3RlSW5mbyA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9
OworCQkxNEJENjg5MTIxNTE5MTQ1MDA1MERBRkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJv
eHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNjVGQjNGNjYwOUQxMUU5MTAw
RjQ5REVCOworCQkJcmVtb3RlSW5mbyA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OworCQkxNEJE
Njg5ODIxNTE5MTZEMDA1MERBRkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0g
MTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMTRCRDY4ODEyMTUxOTEzMTAwNTBEQUZGOwor
CQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50U2V0dGluZ3NFeHRyYWN0b3I7CisJCX07CisJCTE0QkQ2
ODlBMjE1MTkxNzQwMDUwREFGRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxNEJENjg4RjIxNTE5MTQ1MDA1MERBRkY7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IFNldHRpbmdzIjsKKwkJfTsKKwkJMTRDRkIwRkYyMzAzNUVG
MzAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUlu
Zm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMDYyMzAzNUYwRjAwRjAwNDhD
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJ
RFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5s
b2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMDgyMzAzNUYxMzAwRjAwNDhDIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
KwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNo
YWluIjsKKwkJfTsKKwkJMTRDRkIxMEEyMzAzNUYxQTAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRh
aW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3
MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJ
fTsKKwkJMTRDRkIxMEMyMzAzNUY0NjAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMw
MEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRD
RkIxMEUyMzAzNUY0RDAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9
IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsK
KwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMTAyMzAz
NUY1MzAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90
ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMTIyMzAzNUY1ODAwRjAw
NDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAi
VW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMTQyMzAzNUY1RTAwRjAwNDhDIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtl
eWNoYWluIjsKKwkJfTsKKwkJMTRDRkIxMTYyMzAzNUY2MzAwRjAwNDhDIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMy
RTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsK
KwkJfTsKKwkJMTRDRkIxMTgyMzAzNUY2OTAwRjAwNDhDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEUxQUMyRTI3MjBGN0I5
NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNoYWluIjsKKwkJfTsKKwkJ
MTREOUQ5RDkyMTg0NjJCNTAwOTEyNkMyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1RkIzRjY2MDlEMTFFOTEwMEY0OURF
QjsKKwkJCXJlbW90ZUluZm8gPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKKwkJNTJDRDBGNjUy
MjQyRjVBMzAwNEExOEE1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDUyQ0QwRjU5MjI0MkY1NjkwMDRBMThBNTsKKwkJCXJl
bW90ZUluZm8gPSB0ZXN0ZGZnOworCQl9OworCQk1M0I0QkQxMzFGNjhDMkFBMDBEMkJFQTMgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gNTNCNEJEMDQxRjY4QUY4OTAwRDJCRUEzOworCQkJcmVtb3RlSW5mbyA9ICJHZW5lcmF0
ZSBVbmlmaWVkIFNvdXJjZXMiOworCQl9OworCQk1RDY5RTkxMTE1MkJFNTQ3MDAyOEQ3MjAgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1OworCQkJcmVtb3RlSW5mbyA9IGpzYzsKKwkJ
fTsKKwkJNUQ2QjJBNEUxNTJCOUUyMzAwNTIzMURFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDE0MTIxMTFGMEE0ODc5M0Mw
MDQ4MDI1NTsKKwkJCXJlbW90ZUluZm8gPSBtaW5pZG9tOworCQl9OworCQk1RDZCMkE1MDE1MkI5
RTIzMDA1MjMxREUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDOworCQkJcmVtb3Rl
SW5mbyA9IHRlc3RhcGk7CisJCX07CisJCTVENkIyQTU0MTUyQjlFMjMwMDUyMzFERSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSA2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQ7CisJCQlyZW1vdGVJbmZvID0gdGVzdFJlZ0V4cDsK
KwkJfTsKKwkJNUQ2QjJBNTYxNTJCOUUyRTAwNTIzMURFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDVENkIyQTQ3MTUyQjlF
MTcwMDUyMzFERTsKKwkJCXJlbW90ZUluZm8gPSAiVGVzdCBUb29scyI7CisJCX07CisJCTY1MjQ0
QkQyMThFQ0I1MDAwMDEwQjcwOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUI7CisJ
CQlyZW1vdGVJbmZvID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CisJCTY1Nzg4QTlGMThCNDA5
RUIwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVt
b3RlR2xvYmFsSURTdHJpbmcgPSAwRkY5MjJDMzE0RjQ2QjEzMDA0MUEyNEU7CisJCQlyZW1vdGVJ
bmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OworCQk2NTc4OEFBQTE4QjQwQTNC
MDBDMTg5RkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCOworCQkJcmVtb3RlSW5m
byA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OworCQk2NTc4OEFBQzE4QjQwQTdCMDBDMTg5RkYg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRl
bVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gNjU3ODhBOUQxOEI0MDlFQjAwQzE4OUZGOworCQkJcmVtb3RlSW5mbyA9ICJPZmZs
aW5lIEFzc2VtYmxlciI7CisJCX07CisJCTY1RkIzRjdEMDlEMTFFRjMwMEY0OURFQiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUI7CisJCQlyZW1vdGVJbmZvID0gIkdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyI7CisJCX07CisJCTc5NTRCRTBDMjBCNjMzNDgwMDlCQzgzQSAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSA3OTI4MUJCRDIwQjYyQjNFMDAyRTJBNjA7CisJCQlyZW1vdGVJbmZvID0gdGVzdG1lbTsKKwkJ
fTsKKwkJOTMyRjVCRTYwODIyQTFDNzAwNzM2OTc1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDkzMkY1QjNFMDgyMkExQzcw
MDczNjk3NTsKKwkJCXJlbW90ZUluZm8gPSAiSmF2YVNjcmlwdENvcmUgKFVwZ3JhZGVkKSI7CisJ
CX07CisJCUZFNTMzQ0FFMUYyMTdFQzYwMDE2QTFGRSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBGRTUzM0NBMTFGMjE3REIz
MDAxNkExRkU7CisJCQlyZW1vdGVJbmZvID0gdGVzdG1hc207CisJCX07CisvKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTVEQkIxNTI0MTMxRDBCQTEwMDU2QUQzNiAvKiBDb3B5IFN1cHBv
cnQgU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJm
b2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFE
MzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovLAorCQkJKTsKKwkJCW5h
bWUgPSAiQ29weSBTdXBwb3J0IFNjcmlwdCI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRERFOTkzMEMyNzhEMDgzRDAwRjYwRDI2IC8qIFByb2R1
Y3QgRGVwZW5kZW5jaWVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gIiI7CisJCQlk
c3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJCQlEREU5OTMxMDI3OEQwODdE
MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgaW4gUHJvZHVjdCBEZXBlbmRlbmNpZXMg
Ki8sCisJCQkpOworCQkJbmFtZSA9ICJQcm9kdWN0IERlcGVuZGVuY2llcyI7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRERFOTkzMTEyNzhEMDg4
ODAwRjYwRDI2IC8qIFByb2R1Y3QgRGVwZW5kZW5jaWVzICovID0geworCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlk
c3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7CisJCQlmaWxlcyA9ICgKKwkJ
CQlEREU5OTMxMjI3OEQwODkwMDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgaW4gUHJv
ZHVjdCBEZXBlbmRlbmNpZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJQcm9kdWN0IERlcGVuZGVu
Y2llcyI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsK
KwkJRERFOTkzMjMyNzhFNENDRjAwRjYwRDI2IC8qIFByb2R1Y3QgRGVwZW5kZW5jaWVzICovID0g
eworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gIiI7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTY7
CisJCQlmaWxlcyA9ICgKKwkJCQlEREIwNEY0MTI3OEU1NjlBMDA4RDM2NzggLyogbGliV1RGLmEg
aW4gUHJvZHVjdCBEZXBlbmRlbmNpZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJQcm9kdWN0IERl
cGVuZGVuY2llcyI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4
QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlU2NvcGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDEyMzMw
MTk0NEVBMUIwMDg0M0EwQyAvKiBERkdWYWx1ZVN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbHVlU3RyZW5ndGguY3BwOyBwYXRoID0gZGZnL0RG
R1ZhbHVlU3RyZW5ndGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjAxMjMz
MTE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJlbmd0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdWYWx1ZVN0cmVuZ3RoLmg7IHBhdGggPSBkZmcvREZHVmFsdWVT
dHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjAzMzJCRjE4QURGQUUx
MDA1Rjk3OUEgLyogRXhpdGluZ0pJVFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXhpdGluZ0pJVFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjAzMzJDMTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEJ5VmFyaWFudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0QnlWYXJpYW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkM1MThCNTNGQTkwMDVGOTc5QSAv
KiBGVExXZWlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMV2VpZ2h0
Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMDMzMkM3MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExXZWlnaHRlZFRhcmdldC5oOyBwYXRoID0gZnRs
L0ZUTFdlaWdodGVkVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDQz
OTZCMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwOyBwYXRo
ID0gZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjA0Mzk2QzFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21iaW5lZExpdmVuZXNzLmg7IHBh
dGggPSBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJyYXlpZnlTbG93UGF0aEdlbmVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjA3MEE0MjFENTQzQTg5MDA2RTcyMzIg
LyogQ2VsbENvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZWxs
Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDcwQTQzMUQ1NDNB
ODkwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDZWxsQ29udGFpbmVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjA3MEE0NDFENTQzQTg5MDA2RTcyMzIgLyogSGVhcENlbGxJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjA3MEE0NTFENTQzQTg5MDA2RTcyMzIgLyogUHJl
Y2lzZUFsbG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHJlY2lzZUFsbG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjA3
MEE0NjFENTQzQTg5MDA2RTcyMzIgLyogUHJlY2lzZUFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY2lzZUFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9u
RWZmb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9u
RWZmb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEIyODY3MUVCOEU2Q0Qw
MDBFQjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEIyODY4MUVCOEU2Q0QwMDBFQjVEMiAvKiBK
U01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjBCMjg2OTFFQjhFNkNEMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtQcml2YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjI4NkExRUI4RTZDRDAwMEVCNUQyIC8qIEpT
V2Vha1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3Mu
aDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVC
NEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhbGxMaW5rSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMENBRUY5MUVDNERBNjIwMDk3MEQxMiAvKiBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSGVhcEZpbmFsaXplclBy
aXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBDQUVGQTFFQzREQTYy
MDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0hlYXBGaW5hbGl6ZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMENBRUZEMUVDNERBODUwMDk3MEQxMiAvKiBIZWFwRmluYWxpemVyQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcEZpbmFs
aXplckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0FFRkUx
RUM0REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwRmluYWxpemVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERpcmVjdElu
ZGV4TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXREaXJlY3RJbmRl
eE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQ0Q0QzMxNUY2QjZCNTAw
MzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQ3VzdG9tLmg7IHBhdGggPSBiMy9haXIv
QWlyQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTJERTBEMTk3OUQ1
RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkZ1enouY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjEyREUwRTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25GdXp6Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMTM2RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVyR0MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNv
ZGVTZXF1ZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9m
aWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZVNlcXVlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjUxNjc3
MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaDsgcGF0aCA9IHBy
b2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjEzOTEyNjE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVj
b2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjEzOTEyNzE2NzcxQzMw
MDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmg7IHBhdGggPSBwcm9m
aWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMTNFMDRDMTYxNjRBMUIwMERDOERFNyAvKiBJbmRleGluZ1R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5kZXhpbmdUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxNUNEMjAxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5
SWRGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeUlk
RmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjE1Q0QyMTFCQTVGOTg2
MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFB1dEJ5SWRGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjE3MjVGRTFCNDg3MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdNaW5pZmllZEdyYXBoLmNw
cDsgcGF0aCA9IGRmZy9ERkdNaW5pZmllZEdyYXBoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYxODI5NjgxRTkyRUU1MTAwNUIxRUE4IC8qIEFpckxpdmVuZXNzQWRhcHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMaXZlbmVzc0FkYXB0ZXIuaDsg
cGF0aCA9IGIzL2Fpci9BaXJMaXZlbmVzc0FkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYxOEQzQ0QxQjU1QTZFMDAwMkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBwYXRoID0gZGZnL0RGR0FkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMThE
M0NFMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Lmg7IHBhdGggPSBkZmcvREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTkwQ0FBMTg5RDgyRjYwMDBBRTVGMCAvKiBQ
cm9maWxlckpldHRpc29uUmVhc29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFByb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmls
ZXJKZXR0aXNvblJlYXNvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTkw
Q0FCMTg5RDgyRjYwMDBBRTVGMCAvKiBQcm9maWxlckpldHRpc29uUmVhc29uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVySmV0dGlzb25SZWFzb24uaDsgcGF0aCA9
IHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYxQzNERDkxQkJDRTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZWxsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYxREQ4NDkxOEE5NDVCRTAwMjZGM0ZBIC8qIEpTQ0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQ
b3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcmd1bWVudFBv
c2l0aW9uLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9y
bWF0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG91YmxlRm9y
bWF0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYgLyogREZHU2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmg7IHBhdGggPSBkZmcvREZHU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjFGQjM4QTFFMTczQTYy
MDBBOUJFNTAgLyogU3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNocm9ub3VzU3RvcFRoZVdv
cmxkTXV0YXRvclNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MUZCMzhCMUUxNzNBNjIwMEE5QkU1MCAvKiBTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JT
Y2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMUZCMzhDMUUxNzNBNjIwMEE5QkU1MCAvKiBNdXRhdG9yU2NoZWR1bGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0b3JTY2hlZHVsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjFGQjM5ODFFMUY2NUY5MDBBOUJFNTAgLyog
TXV0YXRvclNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRh
dG9yU2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMUZFNTFCMTky
MkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBYm9ydFJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIw
MTc3RDFEQ0FEQzMwMDBFQTU5NTAgLyogREZHRmxvd0luZGV4aW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Zsb3dJbmRleGluZy5jcHA7IHBhdGggPSBkZmcv
REZHRmxvd0luZGV4aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMDE3
N0UxRENBREMzMDAwRUE1OTUwIC8qIERGR0Zsb3dJbmRleGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdGbG93SW5kZXhpbmcuaDsgcGF0aCA9IGRmZy9ERkdGbG93SW5k
ZXhpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMDE3ODExRENBREQ0MDAw
RUE1OTUwIC8qIERGR0Zsb3dNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHRmxvd01hcC5oOyBwYXRoID0gZGZnL0RGR0Zsb3dNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyMDE3ODMxRENBRTE0NzAwRUE1OTUwIC8qIERGR05vZGVGbG93UHJvamVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOb2RlRmxv
d1Byb2plY3Rpb24uY3BwOyBwYXRoID0gZGZnL0RGR05vZGVGbG93UHJvamVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjAxNzg0MURDQUUxNDcwMEVBNTk1MCAvKiBE
RkdOb2RlRmxvd1Byb2plY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTm9kZUZsb3dQcm9qZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjAxNzg3MURDQjk0MjIwMEVBNTk1
MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcDsgcGF0aCA9IGRmZy9E
RkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIwMTc4ODFEQ0I5NDIyMDBFQTU5NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFp
ci5oOyBwYXRoID0gZGZnL0RGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjIwQzI1ODFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lz
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpcnR1YWxSZWdp
c3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMw
MEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJCRDE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEZUTEV4aXRBcmd1bWVudC5jcHA7IHBhdGggPSBmdGwvRlRMRXhpdEFyZ3VtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQkUxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRBcmd1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBG
VExFeGl0QXJndW1lbnQuaDsgcGF0aCA9IGZ0bC9GVExFeGl0QXJndW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQkYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRB
cmd1bWVudEZvck9wZXJhbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHA7IHBhdGggPSBmdGwvRlRMRXhpdEFyZ3Vt
ZW50Rm9yT3BlcmFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkMw
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaDsgcGF0
aCA9IGZ0bC9GVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjM1QkMxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExTdGFja21hcEFyZ3VtZW50
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTdGFja21hcEFyZ3Vt
ZW50TGlzdC5oOyBwYXRoID0gZnRsL0ZUTFN0YWNrbWFwQXJndW1lbnRMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjM1QkM0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRXhpdFZh
bHVlLmNwcDsgcGF0aCA9IGZ0bC9GVExFeGl0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjIzNUJDNTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEV4aXRWYWx1ZS5oOyBwYXRoID0gZnRs
L0ZUTEV4aXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJDNjE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBGVExPU1JFeGl0LmNwcDsgcGF0aCA9IGZ0bC9GVExPU1JFeGl0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMzVCQzcxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTE9TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NSRXhp
dC5oOyBwYXRoID0gZnRsL0ZUTE9TUkV4aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyMzVCQzkxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExPU1JFeGl0Q29tcGlsZXIuY3Bw
OyBwYXRoID0gZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMjM1QkNBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NSRXhpdENvbXBpbGVyLmg7
IHBhdGggPSBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjM1QkNCMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVGh1bmtzLmNwcDsgcGF0aCA9IGZ0bC9G
VExUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzNUJDQzE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZUTFRodW5rcy5oOyBwYXRoID0gZnRsL0ZUTFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjIzNUJFNzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdEJhc2Uu
Y3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyMzVCRTgxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXRCYXNlLmg7IHBhdGggPSBk
ZmcvREZHT1NSRXhpdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1
M0IxN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlbWJseUhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxw
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmx5SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcg
LyogQ0NhbGxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENDYWxs
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTUzRTE3RUE5RjU5
MDBBQkIyMTcgLyogRlBSSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
UFJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjRFNTNGMTdFQTlGNTkw
MEFCQjIxNyAvKiBHUFJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
UkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NDUxN0VFMjc0OTAw
QUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjRFNTQ2MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyNEU1NDgxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wUmVnaXN0ZXJTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyNEU1NTMxN0YwQjcxQzAwQUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVDYWxsRnJhbWVTZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcg
LyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElubGluZUNhbGxGcmFtZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI0
RTU1NzE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVJlY292ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyNTZDMzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcv
REZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyNUYxQUExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2Fs
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTbG93UGF0aENh
bGwuY3BwOyBwYXRoID0gZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMjVGMUFCMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2xvd1BhdGhDYWxsLmg7IHBh
dGggPSBmdGwvRlRMU2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjVGMUFDMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMU2xvd1BhdGhDYWxsS2V5LmNwcDsg
cGF0aCA9IGZ0bC9GVExTbG93UGF0aENhbGxLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjI1RjFBRDE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFNsb3dQYXRoQ2FsbEtleS5oOyBw
YXRoID0gZnRsL0ZUTFNsb3dQYXRoQ2FsbEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludHJpbnNpYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkFDNTY0MUU4QTBCNzYwMDAxRUUzRiAvKiBBaXJGaXhTcGlsbHNB
ZnRlclRlcm1pbmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
aXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRml4U3BpbGxz
QWZ0ZXJUZXJtaW5hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJBQzU2
NTFFOEEwQjc2MDAwMUVFM0YgLyogQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuaDsg
cGF0aCA9IGIzL2Fpci9BaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjJBQzU2ODFFOEEwQkQxMDAwMUVFM0YgLyogQWlyQWxsb2NhdGVS
ZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmNw
cDsgcGF0aCA9IGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQnlMaW5lYXJTY2Fu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQUM1NjkxRThBMEJEMTAwMDFF
RTNGIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5
TGluZWFyU2Nhbi5oOyBwYXRoID0gYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tC
eUxpbmVhclNjYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQUM1NkMxRThE
N0FGRjAwMDFFRTNGIC8qIEFpclBoYXNlSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclBoYXNlSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGIz
L2Fpci9BaXJQaGFzZUluc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkFDNTZEMUU4RDdBRkYwMDAxRUUzRiAvKiBBaXJQaGFzZUluc2VydGlvblNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJQaGFzZUluc2VydGlvblNldC5oOyBw
YXRoID0gYjMvYWlyL0FpclBoYXNlSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkFDNTcwMUU4RUU0NTIwMDAxRUUzRiAvKiBBaXJGb3JtVGFibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRm9ybVRhYmxlLmg7IHBhdGggPSBiMy9h
aXIvQWlyRm9ybVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkE4
MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHQ0luY29taW5nUmVmQ291bnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCNjZBOTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZBQTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWlu
Z1JlZkNvdW50ZWRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QUIxN0I2QjUzRDAwQTdBRTNG
IC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0lu
Y29taW5nUmVmQ291bnRlZFNldElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQjY2QjAxN0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQjY2QjExN0I2QjVBQjAwQTdBRTNGIC8qIERhdGFWaWV3LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkI2NkIyMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkIzMTdCNkI1QUIw
MEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJh
eUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkI1MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QjY2QjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZCNzE3QjZCNUFCMDBB
N0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjJCNjZCODE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FycmF5
QnVmZmVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2
QjkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZCQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
cnJheUJ1ZmZlclZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZC
QjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQjY2QkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2QkQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEYXRhVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMkI2NkJFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0YVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQjY2QkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkMwMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGF0YVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmxvYXQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkI2NkMyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZDMzE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyQjY2QzQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCNjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyQjY2QzYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QjY2QzcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkM4MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2
NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0ludDhBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjJCNjZDQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJCNjZDQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNJbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50MzJBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZDQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5Q29uc3RydWN0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkI2NkNEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Q29uc3RydWN0
b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkNFMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjJCNjZDRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJy
YXlQcm90b3R5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkQwMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJCNjZEMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkQyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQ4QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVaW50OEFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkQzMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VWludDhDbGFtcGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjY2
RDQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNVaW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJCNjZENTE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MzJBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VpbnQzMkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkI2NkQ2MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVUeXBlZEFycmF5Q29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZEODE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFR5cGVkQXJyYXlBZGFwdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjJCNjZEOTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZWRBcnJheUNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCNjZEQTE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHlwZWRBcnJheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQjY2REIxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVkQXJyYXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkI2NkRDMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlZEFycmF5VHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI2NkREMTdCNkI1QUIwMEE3QUUz
RiAvKiBUeXBlZEFycmF5VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
eXBlZEFycmF5VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCOUNENjE5
RDBCQTdEMDBCMUQxQjUgLyogREZHQXZhaWxhYmlsaXR5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eU1hcC5jcHA7IHBhdGggPSBkZmcv
REZHQXZhaWxhYmlsaXR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
QjlDRDcxOUQwQkE3RDAwQjFEMUI1IC8qIERGR0F2YWlsYWJpbGl0eU1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBdmFpbGFiaWxpdHlNYXAuaDsgcGF0aCA9IGRmZy9E
RkdBdmFpbGFiaWxpdHlNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjlD
REExOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI5Q0RCMTlEMEJBN0Qw
MEIxRDFCNSAvKiBERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuaDsg
cGF0aCA9IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkI5Q0RDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RN
YXRlcmlhbGl6YXRpb25EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwOyBwYXRoID0gZGZnL0RGR09iamVj
dE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCOUNERDE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhLmg7IHBhdGggPSBkZmcvREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCOUNERTE5RDBCQTdEMDBCMUQxQjUgLyogREZH
UGhpQ2hpbGRyZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
UGhpQ2hpbGRyZW4uY3BwOyBwYXRoID0gZGZnL0RGR1BoaUNoaWxkcmVuLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjlDREYxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNo
aWxkcmVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1BoaUNoaWxkcmVu
Lmg7IHBhdGggPSBkZmcvREZHUGhpQ2hpbGRyZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQjlDRTAxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Byb21vdGVkSGVh
cExvY2F0aW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oOyBwYXRoID0gZGZnL0RGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI5Q0VFMTlEMEJBQzEw
MEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExFeGl0UHJvcGVydHlWYWx1ZS5jcHA7IHBhdGggPSBmdGwvRlRM
RXhpdFByb3BlcnR5VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
OUNFRjE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMRXhpdFByb3BlcnR5VmFsdWUuaDsgcGF0aCA9IGZ0
bC9GVExFeGl0UHJvcGVydHlWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCOUNGMDE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRXhpdFRpbWVP
YmplY3RNYXRlcmlhbGl6YXRpb24uY3BwOyBwYXRoID0gZnRsL0ZUTEV4aXRUaW1lT2JqZWN0TWF0
ZXJpYWxpemF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjlDRjEx
OUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uLmg7IHBhdGggPSBmdGwvRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQjlDRjIxOUQwQkFDMTAwQjFEMUI1IC8q
IEZUTE9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RlRMT3BlcmF0aW9ucy5jcHA7IHBhdGggPSBmdGwvRlRMT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkI5Q0YzMTlEMEJBQzEwMEIxRDFCNSAvKiBGVExPcGVy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTE9wZXJhdGlvbnMu
aDsgcGF0aCA9IGZ0bC9GVExPcGVyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkJCRDkxMUM1RkYzRjUwMDIzRUYyMyAvKiBCM1NwYXJzZUNvbGxlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTcGFyc2VDb2xsZWN0aW9uLmg7IHBhdGgg
PSBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyQkJEOTIxQzVGRjNGNTAwMjNFRjIzIC8qIEIzVmFyaWFibGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNWYXJpYWJsZS5jcHA7IHBhdGggPSBiMy9CM1Zhcmlh
YmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkJEOTMxQzVGRjNGNTAw
MjNFRjIzIC8qIEIzVmFyaWFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNWYXJpYWJsZS5oOyBwYXRoID0gYjMvQjNWYXJpYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjJCQkQ5NDFDNUZGM0Y1MDAyM0VGMjMgLyogQjNWYXJpYWJsZVZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzVmFyaWFibGVWYWx1ZS5j
cHA7IHBhdGggPSBiMy9CM1ZhcmlhYmxlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJCQkQ5NTFDNUZGM0Y1MDAyM0VGMjMgLyogQjNWYXJpYWJsZVZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzVmFyaWFibGVWYWx1ZS5oOyBwYXRoID0g
YjMvQjNWYXJpYWJsZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJC
RDlCMUM1RkY0MDUwMDIzRUYyMyAvKiBBaXJTdGFja1Nsb3RLaW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclN0YWNrU2xvdEtpbmQuY3BwOyBwYXRoID0gYjMv
YWlyL0FpclN0YWNrU2xvdEtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJCQkQ5QzFDNUZGNDA1MDAyM0VGMjMgLyogQWlyU3RhY2tTbG90S2luZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJTdGFja1Nsb3RLaW5kLmg7IHBhdGggPSBiMy9haXIv
QWlyU3RhY2tTbG90S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCREMx
MjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMTMxNTFDNUQ0
QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHRml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0ZpeHVwUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0lu
c2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJbnNlcnRp
b25TZXQuaDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wZXJhbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMkJEQzNEMTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmllZEdyYXBo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkR3JhcGguaDsg
cGF0aCA9IGRmZy9ERkdNaW5pZmllZEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMkJEQzNFMTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWluaWZpZWROb2RlLmg7IHBhdGggPSBkZmcv
REZHTWluaWZpZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzQw
MTUyMjgwMTcwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdWYWx1ZVNvdXJjZS5oOyBwYXRoID0gZGZnL0RGR1ZhbHVlU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkx
MCAvKiBERkdWYXJpYWJsZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1ZhcmlhYmxlRXZlbnQuaDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzQyMTUyMjgwMTcwMENEODkxMCAvKiBERkdW
YXJpYWJsZUV2ZW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmlhYmxlRXZl
bnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJCREM0MzE1MjI4
MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmg7IHBhdGggPSBkZmcvREZH
VmFyaWFibGVFdmVudFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJC
REM0QzE1MjI4MTgzMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01pbmlmaWVkTm9kZS5jcHA7IHBhdGggPSBkZmcv
REZHTWluaWZpZWROb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQkRD
NEUxNTIyOEJFNzAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhbHVlU291cmNlLmNwcDsgcGF0aCA9IGRmZy9ERkdW
YWx1ZVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkJEQzUwMTUy
MjhGRkEwMENEODkxMCAvKiBERkdWYXJpYWJsZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ZhcmlhYmxlRXZlbnQuY3BwOyBwYXRoID0gZGZnL0RGR1Zh
cmlhYmxlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNBOTFF
NEZBNDJDMDBDMTM4MzkgLyogUnVubmluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bm5pbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjJDNjNBQjFFNjBBRTNDMDBDMTM4MzkgLyogQjNCYW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzQmFuay5jcHA7IHBhdGggPSBiMy9CM0JhbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNBQzFFNjBBRTNDMDBDMTM4MzkgLyogQjNC
YW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFuay5oOyBwYXRoID0g
YjMvQjNCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0FEMUU2MEFF
M0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzV2lkdGguY3BwOyBwYXRoID0gYjMvQjNXaWR0aC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkM2M0FFMUU2MEFFM0QwMEMxMzgzOSAvKiBCM1dpZHRoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzV2lkdGguaDsgcGF0aCA9IGIzL0IzV2lk
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjMxRTYzNDNFODAwQzEz
ODM5IC8qIEIzQXRvbWljVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNBdG9taWNWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0F0b21pY1ZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQjQxRTYzNDNFODAwQzEzODM5IC8qIEIz
QXRvbWljVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNBdG9taWNW
YWx1ZS5oOyBwYXRoID0gYjMvQjNBdG9taWNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjJDNjNCNTFFNjM0M0U4MDBDMTM4MzkgLyogQjNHZW5lcmljQmxvY2tJbnNlcnRp
b25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmljQmxvY2tJ
bnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkM2M0I5MUU2MzQ0MDgwMEMxMzgzOSAvKiBB
aXJCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBBaXJCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNCQTFFNjM0
NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL2Fpci9BaXJC
bG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJDNjNC
RjFFNjYwRUE1MDBDMTM4MzkgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8q
IEIzTmF0aXZlVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTmF0
aXZlVHJhaXRzLmg7IHBhdGggPSBiMy9CM05hdGl2ZVRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjJDNjNDMzFFNjlFRjkyMDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNNZW1vcnlWYWx1ZUlu
bGluZXMuaDsgcGF0aCA9IGIzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMkQ0RERCMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3Bl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnZ2VyU2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENEREQzE5ODMyRDM0MDA3RDRC
MTkgLyogRGVidWdnZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWJ1Z2dlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkQ0RERGMTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VHlwZVByb2ZpbGVyTG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRDRE
RTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
eXBlUHJvZmlsZXJMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRDRERTMx
OTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkQ0REU0MTk4MzJEOTEwMDdE
NEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb1RoaXNTdGF0dXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENERFNjE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRv
VGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJENERFNzE5ODMy
REFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJE
RDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyREQ4MEQxQUIzRDhCRTAwQkJCOEU4
IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyREQ4MEUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBcmd1bWVudHNVdGlsaXRp
ZXMuY3BwOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMkREODBGMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVu
dHNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1l
bnRzVXRpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMkREODEwMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdG
b3JBbGxLaWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGb3JBbGxL
aWxscy5oOyBwYXRoID0gZGZnL0RGR0ZvckFsbEtpbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMkVCQkFBMURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdEV2YWxDb2Rl
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjJGQzc3MDE2RTEyRjZG
MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHRENFUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0RDRVBoYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyRkM3NzExNkUxMkY2RjAwMzhEOTc2IC8qIERG
R0RDRVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RDRVBoYXNl
Lmg7IHBhdGggPSBkZmcvREZHRENFUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyRkNDRjIxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0dyYXBoU2FmZXBvaW50LmNwcDsg
cGF0aCA9IGRmZy9ERkdHcmFwaFNhZmVwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMkZDQ0YzMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdHcmFwaFNhZmVwb2ludC5oOyBwYXRo
ID0gZGZnL0RGR0dyYXBoU2FmZXBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVPcmlnaW4uaDsgcGF0aCA9IGRmZy9ERkdOb2Rl
T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzAwQjc5MThBQjFCMTQw
MEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjMwMEI3QTE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50
ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdJbnRlZ2Vy
Q2hlY2tDb21iaW5pbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMw
Q0I1RDFGQ0U0NkI0MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0b3JGb3JNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMzBEN0JGMUQ5NUQ2MkYwMDUzMDg5RCAvKiBDUFUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMzBGQjYwMURDMkRFOTYwMDMxMjRGMiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMkJEMEUxQkIzNEYxOTAwOTNBNTdG
IC8qIEhlYXBIZWxwZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhlYXBIZWxwZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYz
MkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBIZWxwZXJQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMzM4REVGMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcFZhbHVlLmNw
cDsgcGF0aCA9IGIzL0IzU3RhY2ttYXBWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMzM4REYwMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTdGFja21hcFZhbHVlLmg7IHBhdGggPSBi
My9CM1N0YWNrbWFwVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhE
RjMxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0cmFpbmVkVmFsdWUuY3BwOyBwYXRoID0g
YjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzMzhERjQxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0cmFpbmVkVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQ29uc3RyYWluZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMz
OERGNzFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ0NhbGxWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0NDYWxs
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzOERGODFCRTk2QUE4
MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzQ0NhbGxWYWx1ZS5oOyBwYXRoID0gYjMvQjNDQ2FsbFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMzM4REZCMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlm
eUNGRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJTaW1wbGlm
eUNGRy5jcHA7IHBhdGggPSBiMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjMzOERGQzFCRUQ1MTI3MDAxM0M4OEYgLyogQWlyU2ltcGxpZnlD
RkcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyU2ltcGxpZnlDRkcuaDsg
cGF0aCA9IGIzL2Fpci9BaXJTaW1wbGlmeUNGRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjMzOEUwMTFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0RhdGFTZWN0aW9uLmNwcDsgcGF0aCA9
IGIzL0IzRGF0YVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMz
OEUwMjFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0RhdGFTZWN0aW9uLmg7IHBhdGggPSBiMy9CM0RhdGFTZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4RTAzMUJGMDI3NkMwMDEzQzg4
RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQjNNb3ZlQ29uc3RhbnRzLmNwcDsgcGF0aCA9IGIzL0IzTW92ZUNvbnN0YW50cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4RTA0MUJGMDI3NkMwMDEzQzg4RiAv
KiBCM01vdmVDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNN
b3ZlQ29uc3RhbnRzLmg7IHBhdGggPSBiMy9CM01vdmVDb25zdGFudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhFMDgxQkYwMjc2QzAwMTNDODhGIC8qIEIzVmFsdWVLZXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNWYWx1ZUtleS5jcHA7
IHBhdGggPSBiMy9CM1ZhbHVlS2V5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzMzhFMDkxQkYwMjc2QzAwMTNDODhGIC8qIEIzVmFsdWVLZXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNWYWx1ZUtleS5oOyBwYXRoID0gYjMvQjNWYWx1ZUtleS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzOEUwQTFCRjAyNzZDMDAxM0M4OEYgLyog
QjNWYWx1ZUtleUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNW
YWx1ZUtleUlubGluZXMuaDsgcGF0aCA9IGIzL0IzVmFsdWVLZXlJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4RTE3MUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2Nr
SW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
QmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzM4RTE4MUJGMjg2RUEwMDEzQzg4RiAv
KiBCM0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGIzL0IzQmxvY2tJbnNlcnRpb25TZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhFMTkxQkYyODZFQTAwMTNDODhGIC8q
IEIzTG93ZXJNYWNyb3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNMb3dlck1hY3Jvcy5jcHA7IHBhdGggPSBiMy9CM0xvd2VyTWFjcm9zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzMzhFMUExQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJN
YWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNMb3dlck1hY3Jvcy5o
OyBwYXRoID0gYjMvQjNMb3dlck1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjMzRkNGNTFDMTM2RTI1MDAzMjNGNjcgLyogQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuY3BwOyBwYXRoID0gYjMvQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzRkNGNjFDMTM2RTI1MDAzMjNGNjcg
LyogQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaDsgcGF0aCA9IGIzL0IzU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzNG
Q0Y5MUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0NGRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM0NGRy5oOyBwYXRoID0gYjMvQjNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzM0ZDRkExQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0RvbWluYXRvcnMuaDsgcGF0aCA9IGIzL0Iz
RG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM0QjE0NzE2RDQy
MDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdVc2VLaW5kLmNwcDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzNEIxNDgxNkQ0MjAwRTAwMUNEQTVBIC8qIERG
R1VzZUtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVXNlS2luZC5o
OyBwYXRoID0gZGZnL0RGR1VzZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzNzMwOEExQzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNQaGlDaGlsZHJlbi5jcHA7IHBhdGggPSBiMy9C
M1BoaUNoaWxkcmVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzNzMwOEIx
QzBCRDI5MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNQaGlDaGlsZHJlbi5oOyBwYXRoID0gYjMvQjNQaGlDaGlsZHJlbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM3MzA4RTFDMENENjg1MDAwNTJCRkEgLyog
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjM3MzA5MDFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjM3MzA5MjFDMEQ2N0VFMDAwNTJCRkEgLyogQWlyVXNlQ291bnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclVzZUNvdW50cy5oOyBwYXRoID0gYjMv
YWlyL0FpclVzZUNvdW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM4QjAw
RjE3Q0YwNzdGMDBCMTQ0RDMgLyogTExJbnRFbnRyeXBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50RW50cnlwb2ludC5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM4QjAxMDE3Q0YwNzdGMDBCMTQ0RDMg
LyogTExJbnRFbnRyeXBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludC5oOyBw
YXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGlsaWFyeUJhcnJpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8qIEF1eGlsaWFy
eUJhcnJpZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1eGls
aWFyeUJhcnJpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzky
Qzg3MUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0RnV6ei5jcHA7IHBhdGggPSBkZmcvREZH
T1NSRXhpdEZ1enouY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjM5MkM4ODFC
NDYxODg0MDA4NDQ3MjggLyogREZHT1NSRXhpdEZ1enouaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT1NSRXhpdEZ1enouaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0RnV6ei5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNBMUJGNzFBOUVDQjdEMDAwREUwMUEg
LyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1B1
dFN0YWNrU2lua2luZ1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYz
QTFCRjgxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmg7IHBh
dGggPSBkZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYzQUM3NTExODNFQTEwNDAwMzIwMjlGIC8qIFN0YWNrQWxpZ25tZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrQWxpZ25tZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0FDNzUzMTg4RTVFQzgwMDMyMDI5RiAvKiBFeGl0aW5n
SklUVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGl0aW5nSklUVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQw
RkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7
IHBhdGggPSBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0IzQTI1MTU0NEM5OTEw
MDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBkZmcvREZH
VmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCM0EyQTE1NDc0
RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlh
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbFZhcmlhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJD
NTYgLyogQ2FsbFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQkQxQjYxQjg5NkEw
NzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0luc2VydGlv
blNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0MxRjE4MUI4NjhFNzkw
MEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjND
MUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgcGF0aCA9IGRm
Zy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQxNTQ1QTFGRDIwQjFGMDAxQjU4RjYgLyogQ29uc3RyYWludENvbmN1cnJlbmN5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cmFpbnRDb25jdXJyZW5jeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFs
dWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292
ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDI2QTQ2MTQ2MENCQUIwMDEz
MUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmlydHVhbFJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDI2
QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERhdGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0MkIzQzAyMDFFQjUwOTAwMzU3MDMxIC8qIEFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0NzY2RjIwQzVFMkIyMDA4QjJDMzYgLyogU3R1YkluZm9TdW1tYXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0dWJJbmZvU3VtbWFyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBNzIwQkY2ODVEMDAyMkIxNzEgLyogRXhp
dGluZ0lubGluZUtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhpdGlu
Z0lubGluZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTgyMEJG
Njg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDRBN0E5MjBCRjY4NUUwMDIyQjE3MSAvKiBFeGl0RmxhZy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0RmxhZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRl
ZFN0YXR1c2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY29yZGVkU3Rh
dHVzZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUIyMEJGNjg1RTAw
MjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElDU3RhdHVzTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NEE3QUMyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRpbmdJbmxpbmVLaW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29y
ZGVkU3RhdHVzZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVj
b3JkZWRTdGF0dXNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FF
MjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGl0RmxhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
RjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSUNTdGF0dXNNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NEE3QjUyMEMwQkUzRjAwMjJCMTcxIC8qIElDU3RhdHVzVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNVdGlscy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDU3MDM2MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJF
bGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ1NzAzNzFCRTQ0QzkxMDA2MkE2
MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWlyRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5hdGVE
ZWFkQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ1NzAzQTFCRTQ1RjBB
MDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcDsgcGF0aCA9IGIz
L2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUmVwb3J0VXNlZFJlZ2lzdGVy
cy5oOyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NTcwM0YxQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2Nv
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNUaW1pbmdTY29wZS5oOyBw
YXRoID0gYjMvQjNUaW1pbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQ
YXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFNsb3dQ
YXRocy5jcHA7IHBhdGggPSBsbGludC9MTEludFNsb3dQYXRocy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRo
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFNsb3dQYXRocy5oOyBw
YXRoID0gbGxpbnQvTExJbnRTbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBh
dGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50
ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMxRjE4Nzc1MDU2MDA4M0I2ODcg
LyogREZHQXJpdGhNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0FyaXRoTW9kZS5jcHA7IHBhdGggPSBkZmcvREZHQXJpdGhNb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0ODUzMjAxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRo
TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcml0aE1vZGUuaDsg
cGF0aCA9IGRmZy9ERkdBcml0aE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0ODUzMjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNw
cDsgcGF0aCA9IGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDg1MzI0MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNv
dmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBdmFpbGFibGVSZWNv
dmVyeS5oOyBwYXRoID0gZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9w
Y29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExSZWNvdmVy
eU9wY29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3Zl
cnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3ZlcnlP
cGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ5RTlBNzIwQUI0Q0ZCMDAxQ0Ew
QUEgLyogSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ5RTlBODIwQUI0Q0ZCMDAxQ0EwQUEgLyogSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdGFuY2VPZkFjY2Vzc0Nh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0QTM4RjcxQzhFMTNERjAwMTkw
MzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdXBlclNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRB
MzhGODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN1cGVyU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjRBRTA0MjFGRTBEMjU0MDBFMjA4MzkgLyogSW5mZXJyZWRWYWx1ZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5mZXJyZWRWYWx1ZUlubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8q
IFR5cGVkQXJyYXlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5
cGVkQXJyYXlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEM5MTY1
MUMyOUY0RjIwMDQzNDFBNiAvKiBCM09yaWdpbkR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNPcmlnaW5EdW1wLmg7IHBhdGggPSBiMy9CM09yaWdpbkR1bXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RDhDNzIxRkM3QTk3MzAwMUQzMkFDIC8qIFZp
c2l0Q291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdENvdW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RDhDNzMxRkM3QTk3NDAwMUQz
MkFDIC8qIENvbnN0cmFpbnRQYXJhbGxlbGlzbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb25zdHJhaW50UGFyYWxsZWxpc20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0RDhDNzYxRkNBM0NGMjAwMUQzMkFDIC8qIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZU1hcmtpbmdD
b25zdHJhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RDhDNzcxRkNB
M0NGMzAwMUQzMkFDIC8qIFNpbXBsZU1hcmtpbmdDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZU1hcmtpbmdDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZp
b3VzU3BpbGxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZp
eE9idmlvdXNTcGlsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRERTFDRDFDNEMxQjU0MDA0RDZDMTEg
LyogQWlyRml4T2J2aW91c1NwaWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBaXJGaXhPYnZpb3VzU3BpbGxzLmg7IHBhdGggPSBiMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjRERTFEMDFDNEQ3NjRCMDA0RDZD
MTEgLyogQjNPcmlnaW5EdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzT3JpZ2luRHVtcC5jcHA7IHBhdGggPSBiMy9CM09yaWdpbkR1bXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjRGMTFFNjIwOUJDREExMDA3MDk2NTQgLyogQ29tcGls
ZXJUaW1pbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxl
clRpbWluZ1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEYxMUU3MjA5
QkNEQTEwMDcwOTY1NCAvKiBDb21waWxlclRpbWluZ1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyVGltaW5nU2NvcGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjRGMTFFOTIwOUQ0MjYzMDA3MDk2NTQgLyogREZHQWJzdHJh
Y3RWYWx1ZUNsb2JiZXJFcG9jaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0
cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0RjExRUEyMDlENDI2MzAwNzA5NjU0IC8qIERGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZUNsb2Ji
ZXJFcG9jaC5oOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0RjI5REQxOEI2QUQxQzAwNTdCQzE1IC8qIERG
R1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEYyOURFMThCNkFEMUMwMDU3
QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEY4Mjg5MUUzMUI5NzEwMDc1
MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNj
aGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEY4MjhBMUUzMUI5
NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNj
aGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjUwQUYzQjE5M0U4QjM5
MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjUxOTNGNjI2NkM0MzJEMDA0ODNBMkMgLyogRXhlY3V0YWJsZU1lbW9yeUhhbmRsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTUxM0E1MUQ1QTY4MkEwMEMzMkJEOCAvKiBG
cmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmVlTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU1MTNBNzFENUE2OENCMDBDMzJCRDggLyog
RnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJlZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU1OTg5NzE3Qzg2QzU2MDBB
MUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9OYXRpdmVGcm9t
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1NUMxOTMxNzI3NkU0NjAw
Q0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQWJzdHJhY3RWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTVGMEYxMTREMTA2MzYw
MEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU1
RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY1NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNv
dW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0aW9u
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTcyRDREMTY4NzlG
REIwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHVua0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjU3ODBBMTE4RkUxRTk4MDAxRTcyRDkgLyogUHVyZU5hTi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXJlTmFOLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NTg3NEVCMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR01heUV4aXQuY3BwOyBwYXRoID0gZGZnL0RGR01heUV4
aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU4NzRFQzE5NEZFQjEyMDBB
QUIyQzEgLyogREZHTWF5RXhpdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdNYXlFeGl0Lmg7IHBhdGggPSBkZmcvREZHTWF5RXhpdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjVBMTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RvZXNHQy5jcHA7IHBhdGggPSBk
ZmcvREZHRG9lc0dDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QTEyNzIx
OTJEOUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdEb2VzR0MuaDsgcGF0aCA9IGRmZy9ERkdEb2VzR0MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QTYyODExODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFu
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMVmFsdWVSYW5n
ZS5jcHA7IHBhdGggPSBmdGwvRlRMVmFsdWVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNUE2MjgyMTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVlUmFuZ2UuaDsgcGF0aCA9IGZ0
bC9GVExWYWx1ZVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUI0QTMy
MUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2xvd1BhdGhSZXR1cm5UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNUJGMTYxMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFy
aWFudFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0hvaXN0TG9vcEludmFyaWFudFZh
bHVlcy5jcHA7IHBhdGggPSBiMy9CM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUJGMTYyMUYyMzE3MTIwMDI5RDkxRCAvKiBCM0hv
aXN0TG9vcEludmFyaWFudFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0hvaXN0TG9vcEludmFy
aWFudFZhbHVlcy5oOyBwYXRoID0gYjMvQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QkYxNjYxRjIzQTA5ODAwMjlEOTFEIC8qIEIz
QmFja3dhcmRzQ0ZHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFja3dhcmRzQ0ZHLmg7IHBhdGggPSBi
My9CM0JhY2t3YXJkc0NGRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVCRjE2
ODFGMjNBMEFBMDAyOUQ5MUQgLyogQjNOYXR1cmFsTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNO
YXR1cmFsTG9vcHMuaDsgcGF0aCA9IGIzL0IzTmF0dXJhbExvb3BzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNUJGMTZBMUYyM0EwQzEwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0Rv
bWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCYWNrd2FyZHNEb21pbmF0b3JzLmg7IHBhdGgg
PSBiMy9CM0JhY2t3YXJkc0RvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY1QkYxNkUxRjIzQTVBMTAwMjlEOTFEIC8qIEIzRW5zdXJlTG9vcFByZUhlYWRlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQjNFbnN1cmVMb29wUHJlSGVhZGVycy5jcHA7IHBhdGggPSBi
My9CM0Vuc3VyZUxvb3BQcmVIZWFkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY1QkYxNkYxRjIzQTVBMTAwMjlEOTFEIC8qIEIzRW5zdXJlTG9vcFByZUhlYWRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNFbnN1cmVMb29wUHJlSGVhZGVycy5oOyBwYXRoID0gYjMvQjNFbnN1
cmVMb29wUHJlSGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVDRjk4
MDFFOTZGMTdEMDBDMTg2OTIgLyogQWlyVG1wTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpclRtcE1hcC5oOyBwYXRoID0gYjMvYWlyL0FpclRtcE1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjVDRjk4MjFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93
ZXJTdGFja0FyZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWly
TG93ZXJTdGFja0FyZ3MuY3BwOyBwYXRoID0gYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1Q0Y5ODMxRTlENTM3NTAwQzE4NjkyIC8q
IEFpckxvd2VyU3RhY2tBcmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFp
ckxvd2VyU3RhY2tBcmdzLmg7IHBhdGggPSBiMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1Q0Y5ODYxRTlFRDY0RTAwQzE4NjkyIC8qIEFp
clN0YWNrQWxsb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJTdGFja0FsbG9jYXRpb24uY3BwOyBwYXRoID0gYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUNGOTg3MUU5RUQ2NEUwMEMx
ODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWlyU3RhY2tBbGxvY2F0aW9uLmg7IHBhdGggPSBiMy9haXIvQWlyU3RhY2tBbGxvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUQwODVDMUI4Q0Y5OUQwMDEx
NDNCNCAvKiBERkdOb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR05vZGVPcmlnaW4uY3BwOyBwYXRoID0gZGZnL0RGR05vZGVPcmlnaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFMEZENjIwN0M3MjcxMDA5N0YwREUgLyog
REZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmg7IHBhdGgg
PSBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjVFMEZENzIwN0M3MjcxMDA5N0YwREUgLyogREZHQWJzdHJhY3RJ
bnRlcnByZXRlckNsb2JiZXJTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERFIC8qIElzb1N1YnNwYWNlUGVy
Vk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNvU3Vic3BhY2VQZXJWTS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFMEZFNjIwODZBRDQ3MDA5N0YwREUg
LyogSXNvU3Vic3BhY2VQZXJWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJc29TdWJzcGFjZVBlclZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY1RUY5MUIxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjYwRkU4RDFGRkMzNkZDMDAwMzMyMEEgLyogRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYxODMyMDFDNDVCRjA3MDA3MjQ1
MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFpckNDYWxsaW5nQ29udmVudGlvbi5jcHA7IHBhdGggPSBiMy9haXIvQWly
Q0NhbGxpbmdDb252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2
MTgzMjExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaDsgcGF0aCA9
IGIzL2Fpci9BaXJDQ2FsbGluZ0NvbnZlbnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY2MTgzMjIxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJDdXN0b20uY3BwOyBwYXRoID0gYjMvYWly
L0FpckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjE4MzIzMUM0
NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBaXJFbWl0U2h1ZmZsZS5jcHA7IHBhdGggPSBiMy9haXIvQWlyRW1p
dFNodWZmbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYxODMyNDFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQWlyRW1pdFNodWZmbGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYxODMyNTFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHA7IHBhdGggPSBiMy9haXIvQWlyTG93
ZXJBZnRlclJlZ0FsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2MTgz
MjYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMb3dlckFmdGVyUmVnQWxsb2MuaDsgcGF0aCA9IGIz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY2MTgzMjcxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyTWFjcm9zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckxvd2VyTWFjcm9zLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJMb3dlck1hY3Jvcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNjE4MzI4MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJMb3dlck1hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJMb3dlck1hY3Jvcy5oOyBwYXRoID0gYjMvYWlyL0Fp
ckxvd2VyTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjE4MzMyMUM0
NUYzNUMwMDcyNDUwQiAvKiBBaXJPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWlyT3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjE4MzM0
MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWlyT3Bjb2RlR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBaXJPcGNvZGVVdGlscy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYxODM0MzFDNDVGNjJBMDA3MjQ1MEIgLyogdGVz
dGFpciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVz
dGFpcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY2MTgzNDQxQzQ1
RjY2MDAwNzI0NTBCIC8qIHRlc3RhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gdGVzdGFpci5jcHA7IHBhdGggPSBiMy9haXIvdGVzdGFpci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0
cmFjdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Fic3RyYWN0
VmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNjIwMTcwMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdCYXNpY0Jsb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suaDsgcGF0aCA9
IGRmZy9ERkdCYXNpY0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjIw
MTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg7IHBhdGggPSBk
ZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNjIzNzk1MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGhhbnRvbUluc2VydGlv
blBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYyMzc5NjFBRTQ1Q0E3MDBENDAyRUEgLyogREZH
UGhhbnRvbUluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1BoYW50b21JbnNlcnRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1BoYW50b21JbnNlcnRp
b25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQzQzE1Qzc1RjE0
MDA2QTU5N0MgLyogREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY2Mzk0M0QxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0NTExNUQwNzA1MTAwNkE1OTdDIC8q
IEFycmF5UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
cnJheVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYzOTQ1MjE1
RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFycmF5UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjYzOTQ3NjE1RENFMzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
Lmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjYzOTQ4MTE1RTQ4MTE0MDA2QTU5N0MgLyogREZHQXJyYXlNb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0FycmF5TW9kZS5j
cHA7IHBhdGggPSBkZmcvREZHQXJyYXlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY2Mzk0ODIxNUU0ODExNDAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcnJheU1vZGUuaDsgcGF0aCA9IGRmZy9ERkdB
cnJheU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NDUzMTUxRkQyNDZB
MDAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjQ1MzE2MUZEMjQ2QTAwMDI0MzJBMSAvKiBNYXJrU3Rh
Y2tNZXJnaW5nQ29uc3RyYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmluYXJ5U3dpdGNoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NEIyNzAxQTc4NEJBRjAwNkU0RTY2IC8qIEJp
bmFyeVN3aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlTd2l0
Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NEIyNzcxQTc5NTdCMjAwNkU0
RTY2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NEIyNzgxQTc5
NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjRFQUYyMUM0
RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpckFyZ0lubGluZXMuaDsgcGF0aCA9IGIzL2Fpci9BaXJBcmdJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjU4NUUwMUVFMDgwNTcwMDk1MTc2RCAv
KiBGcmVlTGlzdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJl
ZUxpc3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjYwRTMzMUUw
NTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXJraW5nQ29uc3RyYWludC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNjYwRTM0MUUwNTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3Ry
YWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJraW5nQ29uc3RyYWlu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2MEUzNTFFMDUxN0I3MDAzMTQ2
MkMgLyogTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjY2MEUzNjFFMDUxN0I4MDAzMTQ2MkMgLyogTWFya2luZ0NvbnN0cmFpbnRT
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2luZ0NvbnN0cmFpbnRT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NjRDRTcxREEzMDRFRDAwQjAw
QTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29kZUJsb2NrU2V0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjY2RUJG
MTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2YWlsYWJp
bGl0eS5jcHA7IHBhdGggPSBkZmcvREZHQXZhaWxhYmlsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY2NjZFQzMxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuaDsg
cGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZn
L0RGR0FkamFjZW5jeUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NkUx
NjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHRWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY2ODJGQjAxOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBQ2FsY3Vs
YXRvci5jcHA7IHBhdGggPSBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNjgyRkIxMTlCQ0IzNjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NTQUNhbGN1bGF0b3Iu
aDsgcGF0aCA9IGRmZy9ERkdTU0FDYWxjdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNjk3MUU4MUQ5MkY0MjEwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNGZW5jZVZhbHVlLmNwcDsgcGF0aCA9
IGIzL0IzRmVuY2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjk3
MUU5MUQ5MkY0MjEwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNGZW5jZVZhbHVlLmg7IHBhdGggPSBiMy9CM0ZlbmNlVmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2OUNDODYxOTNBQzYwQTAwNDU3NTlFIC8q
IERGR0Zyb3plblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Zyb3plblZhbHVlLmNwcDsgcGF0aCA9IGRmZy9ERkdGcm96ZW5WYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjlDQzg3MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdG
cm96ZW5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGcm96ZW5W
YWx1ZS5oOyBwYXRoID0gZGZnL0RGR0Zyb3plblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcml0eUNoZWNrTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCOEFENjFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBs
aWNhdGVUYWlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0R1
cGxpY2F0ZVRhaWxzLmNwcDsgcGF0aCA9IGIzL0IzRHVwbGljYXRlVGFpbHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCOEFENzFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBs
aWNhdGVUYWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0R1cGxpY2F0
ZVRhaWxzLmg7IHBhdGggPSBiMy9CM0R1cGxpY2F0ZVRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNkI4QURBMUM0RUZBQzMwMDk2OTA1MiAvKiBCM1NTQUNhbGN1bGF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTU0FDYWxjdWxhdG9y
LmNwcDsgcGF0aCA9IGIzL0IzU1NBQ2FsY3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNkI4QURCMUM0RUZBQzMwMDk2OTA1MiAvKiBCM1NTQUNhbGN1bGF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTU0FDYWxjdWxhdG9yLmg7IHBhdGgg
PSBiMy9CM1NTQUNhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2
QjhBREUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcDsg
cGF0aCA9IGIzL0IzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQnJlYWtDcml0aWNhbEVkZ2Vz
Lmg7IHBhdGggPSBiMy9CM0JyZWFrQ3JpdGljYWxFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjZCOEFFMDFDNEVGRTE3MDA5NjkwNTIgLyogQjNGaXhTU0EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNGaXhTU0EuY3BwOyBwYXRoID0gYjMv
QjNGaXhTU0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZCOEFFMTFDNEVG
RTE3MDA5NjkwNTIgLyogQjNGaXhTU0EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQjNGaXhTU0EuaDsgcGF0aCA9IGIzL0IzRml4U1NBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNkM3MzRFMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURl
dGFpbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYXJpYWJsZVdy
aXRlRmlyZURldGFpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkM3MzRG
MUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjZEQjdFNzFENjEyNEIyMDBDREJGOEUgLyogU3RhY2tG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja0ZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2REI3RTgxRDYxMjRCMjAwQ0RC
RjhFIC8qIFN0YWNrRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rh
Y2tGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZEQjdFQjFENjE3RDBG
MDBDREJGOEUgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNkU4NDU5MTkwMzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
VmFyaWFibGVBY2Nlc3NEYXRhLmNwcDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZGQzc0RTE5NjExMEE4MDBFMUQw
MkQgLyogQ29tcGxleEdldFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb21wbGV4R2V0U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY2RkM3NEYxOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxleEdldFN0YXR1cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjcwMjVBNzE3MTRCMEY4MDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3MDI1QTgxNzE0
QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDsgcGF0aCA9IGRm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3MTRDQTExNkVBOTJFRDAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzE0Q0EyMTZFQTkyRUQw
MEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNzI1Q0EzMUM1MDNERUQwMEFEOTQzQSAvKiBCM0VsaW1pbmF0ZUNvbW1vblN1
YmV4cHJlc3Npb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NzI1Q0E0MUM1MDNERUQwMEFEOTQzQSAvKiBCM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzRWxpbWluYXRlQ29tbW9uU3Vi
ZXhwcmVzc2lvbnMuaDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3MjVDQTUxQzUwM0RFRDAwQUQ5NDNB
IC8qIEIzUHVyZUNTRS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M1B1cmVDU0UuY3BwOyBwYXRoID0gYjMvQjNQdXJlQ1NFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY3MjVDQTYxQzUwM0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNTRS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1B1cmVDU0UuaDsgcGF0aCA9IGIzL0IzUHVy
ZUNTRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjcyNUNBRDFDNTA2RDNCMDBB
RDk0M0EgLyogQjNGb2xkUGF0aENvbnN0YW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcDsgcGF0aCA9IGIzL0IzRm9sZFBh
dGhDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjcyNUNBRTFD
NTA2RDNCMDBBRDk0M0EgLyogQjNGb2xkUGF0aENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0ZvbGRQYXRoQ29uc3RhbnRzLmg7IHBhdGggPSBiMy9CM0ZvbGRQ
YXRoQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzRCOTNBMUY4
OTYxNDUwMEI5MzVEMyAvKiBQcm90b3R5cGVLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvdG90eXBlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NzVBMDU0MjAwRDI1RUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNzVBMDU3MjAwRDI1RjAwMDM4RTJDRiAvKiBMb2NhbEFsbG9jYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjc1QTA1OTIwMEQyNUYwMDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxBbGxvY2F0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc1QTA1QTIwMEQyNUYwMDAzOEUy
Q0YgLyogTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExvY2FsQWxsb2NhdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjc1QTA1RDIwMEQyNUYxMDAzOEUyQ0YgLyogQWxsb2NhdG9ySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0b3JJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzVBMDY1MjAxM0U0RUYwMDM4RTJDRiAvKiBKSVRBbGxv
Y2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQWxsb2NhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzY2RDFDMTVBNTAyOEQwMDhGMzYzRSAv
KiBKSVRTdHViUm91dGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRT
dHViUm91dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQyNjE1QThD
QzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmVTZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQyQTE1QThDQzM0MDA4RjM2
M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUU3R1YlJvdXRpbmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3
NjZEMkQxNUE4RENERDAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc2NkQyRTE1QThEQ0REMDA4RjM2M0Ug
LyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDQXdhcmVKSVRTdHViUm91dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVT
dHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzlDN0M1MUU3NEM5MzYwMEVCMzREMSAvKiBB
aXJCcmVha0NyaXRpY2FsRWRnZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJCcmVha0Ny
aXRpY2FsRWRnZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc5QzdDNjFF
NzRDOTM2MDBFQjM0RDEgLyogQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpckJyZWFrQ3JpdGljYWxFZGdlcy5oOyBwYXRoID0gYjMvYWly
L0FpckJyZWFrQ3JpdGljYWxFZGdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjdDMzlGQTFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGN0MzOUZDMUM4RjY1OTUwMDQ4MDE1MSAvKiBSZWdFeHBPYmplY3RJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUx
IC8qIERGR09wSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPcElu
Zm8uaDsgcGF0aCA9IGRmZy9ERkdPcEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3QzVGQjcxRDg4OEEwMTAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRCbG9ja0lubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3Q0Y5NEUxREJFRUU4NjAwOThDQzEyIC8qIFJlbGVh
c2VIZWFwQWNjZXNzU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVs
ZWFzZUhlYXBBY2Nlc3NTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdD
Rjk1MDFEQzAyN0Q3MDA5OENDMTIgLyogU3RvcElmTmVjZXNzYXJ5VGltZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcElmTmVjZXNzYXJ5VGltZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdDRjk1MTFEQzAyN0Q3MDA5OENDMTIgLyog
U3RvcElmTmVjZXNzYXJ5VGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RvcElmTmVjZXNzYXJ5VGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3
Q0Y5NTQxREMxMjU4QjAwOThDQzEyIC8qIEF0b21pY3NPYmplY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRvbWljc09iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGN0NGOTU1MURDMTI1OEIwMDk4Q0MxMiAvKiBBdG9taWNzT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY3NPYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3REYxMkYxRTI5NzBENTAwOTU5NTFCIC8qIENv
bnN0cmFpbnRWb2xhdGlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnN0cmFpbnRWb2xhdGlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0RG
MTMwMUUyOTcwRDUwMDk1OTUxQiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2VkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGN0RGMTMxMUUyOTcwRDUwMDk1OTUxQiAvKiBTdWJzcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJzcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0RGMTMyMUUyOTcwRDUwMDk1OTUxQiAvKiBTdWJz
cGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzcGFjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdERjEzMzFFMjk3MEQ1MDA5NTk1MUIgLyogU3Vi
c3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnNwYWNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdERjEzOTFFMjk3MTBF
MDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjdERjEzQTFFMjk3MTBF
MDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3REYxNDUxRTJCRUY2ODAwOTU5NTFC
IC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCbG9ja0RpcmVjdG9yeUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY3Rjk4ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdG9yZUJh
cnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckNsdXN0
ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0Y5ODhBMUQ5
NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNl
Lmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAv
KiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAvKiBH
Q1R5cGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUeXBlTWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODZBRTFGMUM1MzExQzUwMDZCRThFQyAv
KiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaDsgcGF0aCA9IGIzL0IzQ29tcHV0ZURpdmlzaW9u
TWFnaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4ODVFMTAxODQ5QTNCRTAw
RjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJ5dGVjb2RlVXNlRGVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGODkz
QkRBMTkzNkUyM0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZUFic3RyYWN0VmFs
dWUuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjg5OEYyRjFCMjc2ODlGMDA4M0EzM0MgLyogREZHSW50
ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwOyBwYXRoID0g
ZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY4OThGMzAxQjI3Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5n
ZU9wdGltaXphdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHSW50ZWdlclJh
bmdlT3B0aW1pemF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4
RjE0MkYxQURGMDkwMTAwRUQ3OTJDIC8qIERGR0Vwb2NoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Vwb2NoLmNwcDsgcGF0aCA9IGRmZy9ERkdFcG9jaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEYxNDMwMUFERjA5MDEwMEVENzkyQyAv
KiBERkdFcG9jaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFcG9jaC5o
OyBwYXRoID0gZGZnL0RGR0Vwb2NoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OEYyQjkzMTcyRTA0OUUwMDdEQkRBNSAvKiBGVExMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEZUTExpbmsuY3BwOyBwYXRoID0gZnRsL0ZUTExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjhGMkI5NDE3MkUwNDlFMDA3REJEQTUgLyogRlRMTGluay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExMaW5rLmg7IHBhdGggPSBmdGwvRlRMTGluay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjhGMkI5NzE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHA7
IHBhdGggPSBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY4RjJCOTgxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEZXNpcmVkSWRlbnRpZmllcnMuaDsgcGF0aCA9IGRm
Zy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY4RjJCOUQxNzMwNkM4QjAwN0RCREE1IC8qIFVubGlua2VkU291cmNlQ29kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVbmxpbmtlZFNvdXJjZUNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0Qx
NjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja0hhc2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVUeXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0NDMxNjY3NjM1MjAwRDYxOTcxIC8q
IEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ29k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDQ1MTY2NzY0RUUwMEQ2
MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQw
OTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3lt
Ym9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTeW1i
b2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQwRTE1
N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMEYxNTdGMzMyNzAwNEE0RTdE
IC8qIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjkxOUQyMjE1ODUzQ0RFMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXRjaHBvaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MTlEMjMxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNo
cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hwb2ludC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyog
U3ltYm9sVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lt
Ym9sVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzMjc0QzFDMUY2
NkFBMDBDRjY1NjQgLyogR1BSSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFJJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzI3
NTkxQzIwQkNCQTAwQ0Y2NTY0IC8qIGR5bmJlbmNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBkeW5iZW5jaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMEY5MzI3NUExQzIwQkNERjAwQ0Y2NTY0IC8qIGR5bmJlbmNoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGR5bmJlbmNoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzI3NUUxQzIxRUY3RjAwQ0Y2NTY0IC8qIEpTT2Jq
ZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09iamVjdElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzMyOTMxNENBN0RDMTAw
ODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxMaW5rU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRCeVN0YXR1cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAv
KiBHZXRCeVN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeVN0
YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzMzI5OTE0Q0E3REMxMDA4
NUYzQzYgLyogUHV0QnlTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHV0QnlTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkz
MzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHV0QnlTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5MzMyOUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5VmFyaWFudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhcmlhbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzQjRBODE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFy
aWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjk1MkE5RjFERjc4NjA3MDBF
MDZGQkQgLyogVmlzaXRSYWNlS2V5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpc2l0UmFjZUtleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTUyQUEwMURGNzg2MDcwMEUwNkZCRCAvKiBWaXNpdFJhY2VLZXkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRSYWNlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja2VkUmVmZXJlbmNlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTUyQUJCMUI0ODdBNzcwMEMzNjdD
NSAvKiBUcmFja2VkUmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUcmFja2VkUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjk2
MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2VsbEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjk2MzAzNjFENDE5MkMzMDA1NjA5RDkgLyogQ2VsbEF0dHJpYnV0
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VsbEF0dHJpYnV0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5NjMwMzcxRDQxOTJDMzAwNTYwOUQ5IC8q
IERlc3RydWN0aW9uTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZXN0cnVjdGlvbk1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjk2
MzAzODFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlc3RydWN0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2Nr
V2l0aEpJVFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2Nr
V2l0aEpJVFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5NzE1MkUxRUIy
OEJFOTAwQTE2NDVEIC8qIEdDUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHQ1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjk3MTUyRjFFQjI4QkU5MDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdDUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjk3NDk2RjE2ODdBREUyMDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NlbGxJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGOTc4QjNBMUFBRUE3MUQwMDdDNzM2OSAvKiBDb25zdGFudE1vZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RhbnRNb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5ODIwNUQxNkJGRTM3RjAwMjQwRDAyIC8q
IFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcmVjaXNlSnVtcFRhcmdldHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjk4MjA1RTE2QkZFMzdGMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjlCMURCMzFDMEU0MkE1MDBFNUJGRDIgLyogRlRMT3V0
cHV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTE91dHB1dC5j
cHA7IHBhdGggPSBmdGwvRlRMT3V0cHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5QjFEQjUxQzBFNDJCRDAwRTVCRkQyIC8qIEZUTE9TUkV4aXRIYW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMT1NSRXhpdEhhbmRsZS5jcHA7IHBh
dGggPSBmdGwvRlRMT1NSRXhpdEhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUIxREI2MUMwRTQyQkQwMEU1QkZEMiAvKiBGVExPU1JFeGl0SGFuZGxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTE9TUkV4aXRIYW5kbGUuaDsgcGF0aCA9IGZ0
bC9GVExPU1JFeGl0SGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUMw
M0Q0MUU5NDc2RjAwMENEOTEyNSAvKiBBaXJUbXBTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyVG1wU2V0Lmg7IHBhdGggPSBiMy9haXIvQWlyVG1wU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUNBQkM2MURCNTRBNzYwMDA4RTgzQiAvKiBBaXJQ
YWRJbnRlcmZlcmVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QWlyUGFkSW50ZXJmZXJlbmNlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJQYWRJbnRlcmZlcmVuY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlDQUJDNzFEQjU0QTc2MDAwOEU4
M0IgLyogQWlyUGFkSW50ZXJmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFpclBhZEludGVyZmVyZW5jZS5oOyBwYXRoID0gYjMvYWlyL0FpclBhZEludGVyZmVyZW5j
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQz
ODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzOTQxN0ZGQzRFNjAwNzNDMkJD
IC8qIERGR0ZsdXNoZWRBdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdGbHVzaGVkQXQuY3BwOyBwYXRoID0gZGZnL0RGR0ZsdXNoZWRBdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVz
aGVkQXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7
IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGOUQzNjkyMUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xlYW5VcFBoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdDbGVhblVwUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjlEMzY5MzFBRTlDQzMzMDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NsZWFuVXBQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0Ns
ZWFuVXBQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlENEMwQTFDM0Ux
QzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEV4Y2VwdGlvblRhcmdldC5jcHA7IHBhdGggPSBmdGwvRlRM
RXhjZXB0aW9uVGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDRD
MEIxQzNFMUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExFeGNlcHRpb25UYXJnZXQuaDsgcGF0aCA9IGZ0bC9GVExF
eGNlcHRpb25UYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDRDMEUx
QzNFMkM3NDAwNkNEOTg0IC8qIEZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZS5jcHA7IHBhdGggPSBmdGwvRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQ0QzBGMUMzRTJDNzQwMDZDRDk4NCAvKiBG
VExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaDsgcGF0aCA9IGZ0bC9GVExQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OURBQTA2MUZEMUMzQzgwMDc5QzVCMiAvKiBNYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJraW5nQ29uc3RyYWludFNvbHZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOURBQTA3MUZEMUMzQzgwMDc5
QzVCMiAvKiBNYXJraW5nQ29uc3RyYWludFNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXJraW5nQ29uc3RyYWludFNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjlEQUEwODFGRDFDM0M4MDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VBZGFw
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmFsbGVsU291cmNlQWRh
cHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlFMzI2MTFCMDVBQjA0MDA4
MDFFRDUgLyogREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
OyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RTMyNjIxQjA1QUIwNDAwODAxRUQ1IC8qIERGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RkI0
RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZBMTI2NTMyMEM4REI5ODAwNEIwRDExIC8qIFN0dWJJbmZvU3VtbWFyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHViSW5mb1N1bW1hcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkEyQzE3OTE3RDdDRjg0MDA5RDAxNUYgLyogVGVz
dFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
c3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTJDMTdB
MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUZsYWdzLmNwcDsgcGF0aCA9
IGRmZy9ERkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE1
ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR05vZGVGbGFncy5oOyBwYXRoID0gZGZnL0RGR05vZGVGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkg
LyogREZHTm9kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTm9k
ZVR5cGUuaDsgcGF0aCA9IGRmZy9ERkdOb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkE2RjM4QzIwQ0MyQzk1MDBBMDNEQ0QgLyogR0NTZWdtZW50ZWRBcnJheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ1NlZ21lbnRlZEFycmF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNkYzOTYyMENDQjdBNjAwQTAzRENE
IC8qIEFzc2VtYmxlckJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBc3NlbWJsZXJCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkE3NjIwMDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbGxlY3Rpb25TY29wZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAxMURCOTI0MjMwMEI3QTJGRCAvKiBDb2xsZWN0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdGlvblNj
b3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQTc2MjAyMURCOTI0MjMwMEI3
QTJGRCAvKiBNdXRhdG9yU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTXV0YXRvclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
NzYyMDMxREI5MjQyMzAwQjdBMkZEIC8qIE11dGF0b3JTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNdXRhdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNzYyMEExREI5NTlGNjAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0aW5nU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBN0E4RTkxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3MUQgLyogU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQURF
NjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIZWFwVXRpbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkFG
N0VGQTE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVERpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGQUY3RUZCMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3Nl
bWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURGlzYXNzZW1ibGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTgyMTY3NTQ4MEMwMEY4QUI2
RSAvKiBFeGl0S2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
eGl0S2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTgzMTY3NTQ4
MEMwMEY4QUI2RSAvKiBFeGl0S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeGl0S2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxMDU4NzE2NzU0
ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlck9TUkV4aXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxMDU4ODE2
NzU0ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJP
U1JFeGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjEwNTg5MTY3NTQ4MkUw
MEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdFNpdGUuY3BwOyBwYXRoID0gcHJvZmlsZXIv
UHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
QjEwNThBMTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyT1NSRXhpdFNpdGUuaDsgcGF0aCA9IHBy
b2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZCMTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMTRFMUQxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQjE0RTIwMTgxMjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNo
ZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5saW5lQ2Fj
aGVXcmFwcGVyLmg7IHBhdGggPSBkZmcvREZHSW5saW5lQ2FjaGVXcmFwcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjE0RTIyMTgxMzA5NTUwMDlCNkI0RCAvKiBERkdJbmxp
bmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdJbmxpbmVDYWNo
ZVdyYXBwZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjE3NjVD
MTk2QjhGOUUwMDkxMDUyQSAvKiBERkdIZWFwTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHSGVhcExvY2F0aW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdI
ZWFwTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxNzY1RDE5
NkI4RjlFMDA5MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0hlYXBMb2NhdGlvbi5oOyBwYXRoID0gZGZnL0RGR0hlYXBMb2NhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkIxNzY1RTE5NkI4RjlFMDA5MTA1
MkEgLyogREZHUHVyZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1B1cmVWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHUHVyZVZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMTc2NUYxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1
cmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQdXJlVmFsdWUu
aDsgcGF0aCA9IGRmZy9ERkdQdXJlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZCMzg3OEIxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQmxvY2tXb3JrbGlzdC5oOyBwYXRoID0gYjMv
YWlyL0FpckJsb2NrV29ya2xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZC
Mzg3OEMxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuY3Bw
OyBwYXRoID0gYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQjM4NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJs
b2NrT3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyT3B0aW1pemVC
bG9ja09yZGVyLmg7IHBhdGggPSBiMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjM4NzkxMUJGRDMxQTEwMEUzQUIxRSAvKiBGVExD
b21waWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTENvbXBp
bGUuY3BwOyBwYXRoID0gZnRsL0ZUTENvbXBpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkIzOTlCOTIwQUY2QjJBMDAxN0UyMTMgLyogSW5zdGFuY2VPZlZhcmlhbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdGFuY2VPZlZhcmlhbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMzk5QkEyMEFGNkIyQTAwMTdFMjEzIC8qIElu
c3RhbmNlT2ZTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zdGFuY2VPZlN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjM5
OUJCMjBBRjZCMkEwMDE3RTIxMyAvKiBJbnN0YW5jZU9mU3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3RhbmNlT2ZTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZCMzk5QkMyMEFGNkIyQTAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3RhbmNlT2ZWYXJp
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCMzk5QkQyMEFGNkIzODAw
MTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSUNTdGF0dXNVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0MTU4
MzFENzhGOTgyMDBERjhEMDkgLyogQXJyYXlDb252ZW50aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUNvbnZlbnRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNDM4QTIxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVTZXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNC
MDkgLyogSXNvQ2VsbFNldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSXNvQ2VsbFNldElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZC
NDY3N0MxRkREQTZEOTAwM0ZDQjA5IC8qIElzb0NlbGxTZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSXNvQ2VsbFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQjQ2NzdEMUZEREE2RDkwMDNGQ0IwOSAvKiBJc29DZWxsU2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb0NlbGxTZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZCNDY3N0UxRkREQTZFNTAwM0ZDQjA5IC8qIEF0b21JbmRpY2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21JbmRpY2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjQ3NjdDMUQ5OUFFQTcwMDhFQTZDQiAvKiBHQ0RlZmVy
cmFsQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0RlZmVycmFs
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0NzY3RDFEOTlBRUE3
MDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkI0QjUxMDE2QjNBOTY0MDAzRjY5NkIgLyogREZHTWluaWZpZWRJ
RC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElELmg7IHBh
dGggPSBkZmcvREZHTWluaWZpZWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkI0QjUxQTE2QjYyNzcyMDAzRjY5NkIgLyogREZHQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbi5jcHA7IHBhdGggPSBkZmcvREZHQ29tbW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNEI1MUIxNkI2Mjc3MjAwM0Y2
OTZCIC8qIERGR0VkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHRWRnZS5jcHA7IHBhdGggPSBkZmcvREZHRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQjRCNTFFMTZCNjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGUuY3BwOyBwYXRoID0gZGZnL0RG
R05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0QjUyMTE2QjYyNzhE
MDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNEI1MjIxNkI2Mjc4RDAwM0Y2OTZCIC8qIEZ1bmN0aW9u
RXhlY3V0YWJsZUR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rp
b25FeGVjdXRhYmxlRHVtcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI0RkI3
MDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTExhenlTbG93UGF0aC5jcHA7IHBhdGggPSBmdGwvRlRM
TGF6eVNsb3dQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNEZCNzEx
QkM4NDMxNDAwMjVDQTVBIC8qIEZUTExhenlTbG93UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBGVExMYXp5U2xvd1BhdGguaDsgcGF0aCA9IGZ0bC9GVExMYXp5U2xvd1Bh
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNEZCNzIxQkM4NDMxNDAwMjVD
QTVBIC8qIEZUTExhenlTbG93UGF0aENhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRlRMTGF6eVNsb3dQYXRoQ2FsbC5oOyBwYXRoID0gZnRsL0ZUTExhenlTbG93UGF0aENh
bGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMy
OTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQjU0Njc4MTRGNUM0NjgwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU0NjdB
MTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5
IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjU3MDY4MjY3QTY0MkUwMDgwRkE4QiAvKiBIYXNo
YWJsZVJlZ2lzdGVyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hh
YmxlUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCN0YzODkx
NUVEOEUzODAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkI3RjM4QjE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1dHRlcmZseS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM4QzE1RUQ4RTM4MDBGMTY3QjIgLyogQnV0dGVyZmx5
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdXR0ZXJmbHlJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjdGMzhEMTVFRDhFMzgwMEYx
NjdCMiAvKiBJbmRleGluZ0hlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmRleGluZ0hlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM4
RTE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nSGVhZGVySW5saW5lcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5kZXhpbmdU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4aW5nVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MDE1RUQ4RTM4MDBGMTY3QjIgLyog
UHJvcGVydHlTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Bl
cnR5U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MTE1RUQ4
RTM4MDBGMTY3QjIgLyogVHlwZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFR5cGVFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkI3RjM5MjE1
RUQ4RTM4MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGFyc2VBcnJheVZhbHVlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQkI3M0I2MURFRjNBQUMwMDJDMDA5RSAvKiBQcmV2ZW50Q29sbGVjdGlv
blNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZXZlbnRDb2xsZWN0
aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCQjczQkExREVGODY0
NDAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVsZXRlQWxsQ29kZUVmZm9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHRXhpdFByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyog
REZHRXhpdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHRXhp
dFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRDdFNjcxNDQ3OTk4
RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJEQjlBQzFB
QjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxDcmVhdGVE
aXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR0NhbGxDcmVh
dGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkJFMEY2QjE2QzFEQjAxMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRTBGNkMxNkMxREIwMTAwODJDNUU4IC8q
IERGR0NQU1JldGhyZWFkaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRTBGNkQxNkMxREIwMTAw
ODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9u
SW5qZWN0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQkUwRjZGMTZDMURCMDEw
MDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1Vu
aWZpY2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJFMEY3
MDE2QzFEQjAxMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdVbmlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZH
VW5pZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJGMTU4
QTE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tTZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZCRjE1OEIxOUI3QTUzMTAwNjk1
REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdCbG9ja1NldElubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja1NldElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQy
IC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21tb24uaDsgcGF0aCA9IGRmZy9ERkdDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMDk3OEUxNDZBNkY2MzAwQ0YyNDQy
IC8qIERGR09TUkV4aXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHT1NSRXhpdC5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhpdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVGh1bmtzLmNwcDsgcGF0
aCA9IGRmZy9ERkdUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMw
OTdBMDE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1RodW5rcy5oOyBwYXRoID0gZGZnL0RGR1RodW5rcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyMENCMzE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMjBD
QjQxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oOyBw
YXRoID0gZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZDMjBDQjcxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBTG93ZXJp
bmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0I4MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FM
b3dlcmluZ1BoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NTQUxv
d2VyaW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3Rl
clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlclNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMzMTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyog
VGVtcFJlZ2lzdGVyU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBSZWdpc3RlclNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzMx
NDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQzNDQ0Y1MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja01hcC5oOyBwYXRoID0gZGZnL0RG
R0Jsb2NrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzNDQ0Y2MTlBREE0
MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQmxvY2tNYXBJbmxpbmVzLmg7IHBhdGggPSBkZmcvREZHQmxvY2tNYXBJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzNDQ0Y3MTlBREE0MTAw
MDZBQzcyQSAvKiBERkdCbG9ja1NldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdCbG9ja1NldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGQzNDQ0Y5MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmts
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrV29ya2xpc3Qu
aDsgcGF0aCA9IGRmZy9ERkdCbG9ja1dvcmtsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDNzEyREQxN0NEODc3ODAwOEND
OTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZDNzEyRTAxN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDNzEyRTExN0NE
ODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzgxNTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0
ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkM4MTUwOTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjJGMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZDOTdGMzAxODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZDOTdGMzcxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5q
ZWN0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
SW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHSW52YWxp
ZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGQzk3RjM4MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVj
dGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdJbnZhbGlkYXRpb25Qb2lu
dEluamVjdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzk3RjM5
MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHSnVtcFJlcGxhY2VtZW50LmNwcDsgcGF0aCA9IGRm
Zy9ERkdKdW1wUmVwbGFjZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkM5N0YzQTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0p1bXBSZXBsYWNlbWVudC5oOyBwYXRoID0gZGZn
L0RGR0p1bXBSZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkM5
N0YzQjE4MjAyMTE5MDAyQzlCMjYgLyogREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdXYXRjaHBvaW50Q29sbGVj
dGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDOTdGM0MxODIwMjExOTAwMkM5QjI2
IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RG
R1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZDQjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbG90VmlzaXRvcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDQ0FFNDMxNkQwQ0Y2RTAwRDBDNjVCIC8qIFBhcnNl
ckVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlckVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQ0VGQUE5MTgwNEMxM0UwMDQ3MkNFNCAv
KiBGVExTYXZlUmVzdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBGVExTYXZlUmVzdG9yZS5jcHA7IHBhdGggPSBmdGwvRlRMU2F2ZVJlc3RvcmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkNFRkFBQTE4MDRDMTNFMDA0NzJDRTQgLyogRlRM
U2F2ZVJlc3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU2F2ZVJl
c3RvcmUuaDsgcGF0aCA9IGZ0bC9GVExTYXZlUmVzdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkNFRkFERDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTG9jYXRpb24uY3BwOyBwYXRo
ID0gZnRsL0ZUTExvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZD
RUZBREUxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTExvY2F0aW9uLmg7IHBhdGggPSBmdGwvRlRMTG9jYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEMEU1RTUxRTQzRDM0NzAwMDZBQjA4IC8q
IENvbGxlY3RvclBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbGxlY3RvclBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEMEU1
RTYxRTQzRDM0NzAwMDZBQjA4IC8qIENvbGxlY3RvclBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvclBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRDBFNUU3MUU0M0QzNDcwMDA2QUIwOCAvKiBHQ0NvbmR1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0NvbmR1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDBFNUU4MUU0M0QzNDcwMDA2QUIwOCAvKiBHQ0NvbmR1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0NvbmR1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQwRTVFRDFFNDY4QTU0MDAwNkFCMDggLyog
U3dlZXBpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTd2VlcGlu
Z1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDBFNUVGMUU0NkJGMjMw
MDA2QUIwOCAvKiBSZWdpc3RlclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZ2lzdGVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEMEU1
RjExRTQ2QzhBRDAwMDZBQjA4IC8qIENvbGxlY3RpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2xsZWN0aW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZEMkM5MjMxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQyRkQ5MjIwQjUyQkRDMDBGMDk0NDEgLyogSXNv
U3Vic3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElzb1N1
YnNwYWNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQyRkQ5MzIw
QjUyQkREMDBGMDk0NDEgLyogQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEcml2ZXIuY3Bw
OyBwYXRoID0gZGZnL0RGR0RyaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHRHJpdmVyLmg7IHBhdGggPSBkZmcvREZHRHJpdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDNFM0ZGMUI2MThBQUYwMEM4MEUxRSAvKiBE
RkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50LmNwcDsgcGF0aCA9IGRmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQzRTQw
MDFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOyBwYXRoID0gZGZnL0RGR0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkQzRTQwMzFCNjE4QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT2JqZWN0UHJvcGVydHlD
b25kaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQzRTQwNDFCNjE4
QjY2MDBDODBFMUUgLyogT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZEM0U0MDUxQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZEM0U0MDYxQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDNFNDA3MUI2MThC
NjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0eUNvbmRpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRDNFNDA4MUI2MThCNjYwMEM4MEUxRSAvKiBQcm9wZXJ0eUNvbmRpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eUNvbmRpdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ1NjUyMjE2QUI3ODBBMDAxOTc2NTMg
LyogREZHQmFzaWNCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQmFzaWNCbG9ja0lubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ3OUEyQjFFQkJCREIyMDBEQTg4
RDMgLyogU3luY2hyb25vdXNuZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN5bmNocm9ub3VzbmVzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRDc5QTJDMUVCQkJEQjIwMERBODhEMyAvKiBTeW5jaHJvbm91c25lc3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3luY2hyb25vdXNuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdEb21pbmF0b3Jz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RvbWluYXRvcnMuaDsgcGF0
aCA9IGRmZy9ERkdEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmNwcDsgcGF0aCA9IGRm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4
MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhcGFiaWxpdGllcy5oOyBwYXRoID0gZGZnL0RGR0NhcGFi
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4MkU0RjE0MURBRUEx
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3BlY3VsYXRlZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZE
ODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR09TUkVudHJ5LmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JF
bnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDgyRTUzMTQxREFFREUw
MDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdPU1JFbnRyeS5oOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdWxhdGVkVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzExMTdENDMyNkMwMENB
MkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29kZUJsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZE
OEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZEOEEzMTUxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExGb3JPU1JFbnRyeUpJ
VENvZGUuY3BwOyBwYXRoID0gZnRsL0ZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JP
U1JFbnRyeUpJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMRm9y
T1NSRW50cnlKSVRDb2RlLmg7IHBhdGggPSBmdGwvRlRMRm9yT1NSRW50cnlKSVRDb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzE3MTdENTFGMjIwMENBMkM0MCAvKiBG
VExPU1JFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExP
U1JFbnRyeS5jcHA7IHBhdGggPSBmdGwvRlRMT1NSRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkQ4QTMxODE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT1NSRW50cnkuaDsgcGF0aCA9IGZ0
bC9GVExPU1JFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ4QTMxRDE3
RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEzMUUxN0Q1MUY1NzAwQ0EyQzQwIC8q
IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZEOEEzMUYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDhBMzIwMTdENTFGNTcw
MENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRDhBMzIxMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHA7IHBhdGggPSBkZmcvREZH
VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkQ4QTMyMjE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaDsgcGF0aCA9IGRmZy9ERkdUb0ZUTERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkQ4QTMyMzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcDsg
cGF0aCA9IGRmZy9ERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEOEEzMjQxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHVG9GVExGb3JPU1JFbnRyeURlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBwYXRoID0gZGZnL0RGR1RvRlRMRm9yT1NSRW50cnlE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZEQjJDQzcxNzNEQTUxRTAwN0IzQzFCIC8qIEZUTEFiYnJldmlhdGVkVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMQWJicmV2aWF0ZWRUeXBlcy5oOyBwYXRoID0gZnRsL0ZUTEFiYnJldmlh
dGVkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEQjJDQzgxNzNEQTUx
RTAwN0IzQzFCIC8qIEZUTFZhbHVlRnJvbUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFZhbHVl
RnJvbUJsb2NrLmg7IHBhdGggPSBmdGwvRlRMVmFsdWVGcm9tQmxvY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJlbnRK
U0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVudEpTTG9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTExQjFGQUU2MUY0MDA2RjM5
MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25G
YWlsdXJlTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTExRjFGQUU4
NTg3MDA2RjM5MDEgLyogSGVhcENlbGxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTEyMDFGQUU4NTg3MDA2RjM5
MDEgLyogSGVhcENlbGxUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBDZWxsVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRENFMTI3MUZBRkE4NTkwMDZGMzkw
MSAvKiBDb21wbGV0ZVN1YnNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRlU3Vi
c3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTEyODFGQUZBODU5
MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0ZVN1
YnNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRENFMTJCMUZBRkI0REUw
MDZGMzkwMSAvKiBJc29TdWJzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJc29TdWJzcGFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTEyQzFGQUZCNERFMDA2RjM5MDEgLyog
SXNvU3Vic3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXNvU3Vic3BhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRDRTEyRjFGQjExRDlEMDA2RjM5MDEgLyogSXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJc29BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEQ0Ux
MzAxRkIxMUQ5RDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkREQkZCMjE2NjZFRUQ1MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhRHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmNwcDsgcGF0aCA9IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZEREJGQjMxNjY2RUVENTAw
QzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oOyBwYXRoID0gZGZnL0RG
R1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZERTg3RjgxREZEMEM2RDAwNjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2VsbENvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGREU4N0ZBMURGRTZFNTAwMDY0QzM5MCAvKiBTcGFjZVRpbWVN
dXRhdG9yU2NoZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkRFODdGQjFERkU2RTUwMDA2NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFjZVRpbWVNdXRhdG9yU2No
ZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREY2N0QwMUQ5QzYwODYw
MDFCOTgyNSAvKiBCM0tpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQjNLaW5kLmNwcDsgcGF0aCA9IGIzL0IzS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGREY2N0QxMUQ5QzYwODYwMDFCOTgyNSAvKiBCM0tpbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNLaW5kLmg7IHBhdGggPSBiMy9CM0tpbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZERjY3RDQxRDlEQzQzRTAwMUI5ODI1IC8qIEFp
cktpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyS2luZC5j
cHA7IHBhdGggPSBiMy9haXIvQWlyS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGREY2N0Q1MUQ5REM0M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpcktpbmQuaDsgcGF0aCA9IGIzL2Fpci9BaXJLaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREY3MDgzMUQzRjJDMUYwMDkyNzQ0OSAvKiBB
aXJMb3dlckVudHJ5U3dpdGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpckxvd2VyRW50cnlTd2l0Y2guY3BwOyBwYXRoID0gYjMvYWlyL0Fpckxvd2VyRW50cnlT
d2l0Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkRGNzA4NDFEM0YyQzFG
MDA5Mjc0NDkgLyogQWlyTG93ZXJFbnRyeVN3aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBaXJMb3dlckVudHJ5U3dpdGNoLmg7IHBhdGggPSBiMy9haXIvQWlyTG93ZXJF
bnRyeVN3aXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwNTAwQzFBQTkw
OTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBcmd1bWVudHNNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RTA1MDBEMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMDUwMEUxQUE5MDkxMTAwRDMzQjMz
IC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXJlY3RBcmd1bWVudHNPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFMDUwMEYxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXJlY3RBcmd1bWVudHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwNTAxMDFBQTkwOTExMDBEMzNCMzMgLyogRGly
ZWN0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpcmVjdEFy
Z3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwNTAxMTFBQTkwOTEx
MDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHZW5lcmljQXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwNTAxMzFBQTkwOTExMDBEMzNCMzMg
LyogR2VuZXJpY09mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5l
cmljT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTA1MDFDMUFBOTA5
NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2xvbmVkQXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFMDUwMUQxQUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3VtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbG9uZWRBcmd1bWVudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMDUwMUUxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
ZEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29w
ZWRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUwNTAxRjFB
QTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjb3BlZEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkUwNTAyMDFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkQXJndW1lbnRzVGFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMDUwMjExQUE5MDk1NjAwRDMzQjMzIC8q
IFNjb3BlT2Zmc2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
b3BlT2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMDUwMjIxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjb3BlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTA1
MDIzMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVmFyT2Zmc2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZFMDUwMjQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWYXJPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFMDUwMkUxQUFBODA2OTAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZEFyZ3VtZW50
c1RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMEU0QUIxQzI0Qzk0
QTAwMkUxN0I2IC8qIEFpclRtcFdpZHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpclRtcFdpZHRoLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJUbXBXaWR0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTBFNEFDMUMyNEM5NEEwMDJFMTdCNiAv
KiBBaXJUbXBXaWR0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJUbXBX
aWR0aC5oOyBwYXRoID0gYjMvYWlyL0FpclRtcFdpZHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdzRm9y
d2FyZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyNTRGNTFBQkRE
RDIyMDBBN0M2RDIgLyogREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmg7IHBhdGggPSBk
ZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkUzNEMxNzFDNEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJMb2dSZWdpc3RlclBy
ZXNzdXJlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJMb2dSZWdpc3RlclByZXNzdXJlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMzRDMTgxQzRCMzlBRTAwMDNBNTEyIC8qIEFp
ckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oOyBwYXRoID0gYjMvYWlyL0FpckxvZ1JlZ2lzdGVyUHJl
c3N1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFNzIxMUIxOTNCOUM1OTAw
MzFGNkVEIC8qIERGR1RyYW5zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gREZHVHJhbnNpdGlvbi5jcHA7IHBhdGggPSBkZmcvREZHVHJhbnNpdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTcyMTFDMTkzQjlDNTkwMDMxRjZFRCAv
KiBERkdUcmFuc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1Ry
YW5zaXRpb24uaDsgcGF0aCA9IGRmZy9ERkdUcmFuc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRTgzNDE1MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRTgzNDE2MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkU4NTM0OTE3MjNDREE1MDBC
NjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA7IHBhdGggPSBkZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
ODUzNEExNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaDsgcGF0aCA9
IGRmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQTA5RkUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExDYXBhYmlsaXRpZXMuY3BwOyBwYXRo
ID0gZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRUEwOUZGMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTAxMTcw
NTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZUTENvbXBpbGUuaDsgcGF0aCA9IGZ0bC9GVExDb21waWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTAyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEpJVENvZGUuY3Bw
OyBwYXRoID0gZnRsL0ZUTEpJVENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkVBMEEwMzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMSklUQ29kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBGVExKSVRDb2RlLmg7IHBhdGggPSBmdGwvRlRMSklUQ29kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBMEEwNDE3MDUxM0RCMDBCQjcyMkMg
LyogRlRMTG93ZXJERkdUb0IzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEZUTExvd2VyREZHVG9CMy5jcHA7IHBhdGggPSBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMDUxNzA1MTNEQjAwQkI3MjJDIC8q
IEZUTExvd2VyREZHVG9CMy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExM
b3dlckRGR1RvQjMuaDsgcGF0aCA9IGZ0bC9GVExMb3dlckRGR1RvQjMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMDcxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN0YXRlLmg7IHBhdGggPSBmdGwv
RlRMU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMTUxNzA2QkI5
MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEZUTFN0YXRlLmNwcDsgcGF0aCA9IGZ0bC9GVExTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTE3MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFj
dEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQWJzdHJh
Y3RIZWFwLmNwcDsgcGF0aCA9IGZ0bC9GVExBYnN0cmFjdEhlYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkVBMEExODE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RI
ZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEFic3RyYWN0SGVhcC5o
OyBwYXRoID0gZnRsL0ZUTEFic3RyYWN0SGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkVBMEExOTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcDsgcGF0aCA9IGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMUExNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOyBwYXRoID0gZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBB
MUIxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTFR5cGVkUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExUeXBlZFBvaW50ZXIuaDsgcGF0aCA9IGZ0bC9GVExUeXBlZFBv
aW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMjExNzA5NjA2OTAw
QkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGVExDb21tb25WYWx1ZXMuaDsgcGF0aCA9IGZ0bC9GVExDb21tb25WYWx1ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMjUxNzA5NjIzQjAwQkI3MjJDIC8qIEZU
TENvbW1vblZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
VExDb21tb25WYWx1ZXMuY3BwOyBwYXRoID0gZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTJCMTcwQjY2MTkwMEJCNzIyQyAvKiBGVExG
b3JtYXR0ZWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExGb3Jt
YXR0ZWRWYWx1ZS5oOyBwYXRoID0gZnRsL0ZUTEZvcm1hdHRlZFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUEwQTJEMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25E
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbW1vbkRh
dGEuY3BwOyBwYXRoID0gZGZnL0RGR0NvbW1vbkRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkVBMEEyRTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21tb25EYXRhLmg7IHBhdGggPSBk
ZmcvREZHQ29tbW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBMEEy
RjE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdKSVRDb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdKSVRDb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQTBBMzAxNzBENDBCRjAwQkI3MjJD
IC8qIERGR0pJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSklU
Q29kZS5oOyBwYXRoID0gZGZnL0RGR0pJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZFQjNFQ0UxNjIzN0Y2NzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTAxRjMzQTQxNjAwRjU5QjZDIC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUMzQzUxMUYz
M0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQzNDNTQxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTUxRjMzQTQ1MzAw
RjU5QjZDIC8qIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRUMzQzU4MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNTkx
RjMzQTQ4OTAwRjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzNDNUYxRjM3OUY1MzAwRjU5QjZDIC8qIENhZ2VkQmFycmll
clB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWdlZEJhcnJpZXJQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFQzg0QjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1lbnRSZWdW
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0FyZ3VtZW50
UmVnVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNBcmd1bWVudFJlZ1ZhbHVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0QjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQXJndW1l
bnRSZWdWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0FyZ3VtZW50
UmVnVmFsdWUuaDsgcGF0aCA9IGIzL0IzQXJndW1lbnRSZWdWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkVDODRCNjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2Nr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQmFzaWNCbG9jay5j
cHA7IHBhdGggPSBiMy9CM0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkVDODRCNzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQmFzaWNCbG9jay5oOyBwYXRoID0gYjMvQjNCYXNp
Y0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEI4MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzQmFzaWNCbG9ja0lubGluZXMuaDsgcGF0aCA9IGIzL0IzQmFzaWNCbG9ja0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0QjkxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzQmFzaWNCbG9ja1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzQmFzaWNCbG9ja1V0aWxzLmg7IHBhdGggPSBiMy9CM0Jhc2ljQmxvY2tVdGlscy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRCQTFCREFDREFDMDA4MEZGNzQg
LyogQjNCbG9ja1dvcmtsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
QmxvY2tXb3JrbGlzdC5oOyBwYXRoID0gYjMvQjNCbG9ja1dvcmtsaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEJCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrU3Bl
Y2lhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NoZWNrU3Bl
Y2lhbC5jcHA7IHBhdGggPSBiMy9CM0NoZWNrU3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRUM4NEJDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrU3BlY2lhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NoZWNrU3BlY2lhbC5oOyBwYXRo
ID0gYjMvQjNDaGVja1NwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
Qzg0QkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NoZWNrVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNDaGVj
a1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0QkUxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCM0NoZWNrVmFsdWUuaDsgcGF0aCA9IGIzL0IzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkVDODRCRjFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNDb21tb24uY3BwOyBw
YXRoID0gYjMvQjNDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVD
ODRDMDFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNDb21tb24uaDsgcGF0aCA9IGIzL0IzQ29tbW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW11dGF0
aXZpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNDb21tdXRh
dGl2aXR5LmNwcDsgcGF0aCA9IGIzL0IzQ29tbXV0YXRpdml0eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUM4NEMyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW11dGF0aXZp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb21tdXRhdGl2aXR5Lmg7
IHBhdGggPSBiMy9CM0NvbW11dGF0aXZpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQzg0QzMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29uc3QzMlZhbHVlLmNwcDsgcGF0aCA9
IGIzL0IzQ29uc3QzMlZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
Qzg0QzQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ29uc3QzMlZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0MzJW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRDNTFCREFDREFDMDA4
MEZGNzQgLyogQjNDb25zdDY0VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQjNDb25zdDY0VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNDb25zdDY0VmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRDNjFCREFDREFDMDA4MEZGNzQg
LyogQjNDb25zdDY0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjND
b25zdDY0VmFsdWUuaDsgcGF0aCA9IGIzL0IzQ29uc3Q2NFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUM4NEM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91Ymxl
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNDb25zdERv
dWJsZVZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0
RG91YmxlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb25zdERv
dWJsZVZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0RG91YmxlVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0Q0IxQkRBQ0RBQzAwODBGRjc0IC8qIEIzRnJlcXVlbmN5
Q2xhc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNGcmVxdWVu
Y3lDbGFzcy5jcHA7IHBhdGggPSBiMy9CM0ZyZXF1ZW5jeUNsYXNzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0Q0MxQkRBQ0RBQzAwODBGRjc0IC8qIEIzRnJlcXVlbmN5
Q2xhc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNGcmVxdWVuY3lDbGFz
cy5oOyBwYXRoID0gYjMvQjNGcmVxdWVuY3lDbGFzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkVDODRDRDFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVudGVkQmxvY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNGcmVxdWVudGVkQmxvY2suaDsgcGF0
aCA9IGIzL0IzRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzR2VuZXJhdGUuY3BwOyBwYXRoID0gYjMvQjNHZW5l
cmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NENGMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzR2VuZXJhdGUuaDsgcGF0aCA9IGIzL0IzR2VuZXJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1ZW50
ZWRCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0dlbmVyaWNGcmVx
dWVudGVkQmxvY2suaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNM
b3dlclRvQWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTG93
ZXJUb0Fpci5jcHA7IHBhdGggPSBiMy9CM0xvd2VyVG9BaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkVDODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5oOyBwYXRoID0g
YjMvQjNMb3dlclRvQWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEQ1
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzTWVtb3J5VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNNZW1vcnlW
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEQ2MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzTWVtb3J5VmFsdWUuaDsgcGF0aCA9IGIzL0IzTWVtb3J5VmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0RDcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3Bjb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzT3Bjb2RlLmNwcDsg
cGF0aCA9IGIzL0IzT3Bjb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
Qzg0RDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEIzT3Bjb2RlLmg7IHBhdGggPSBiMy9CM09wY29kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkVDODREOTFCREFDREFDMDA4MEZGNzQgLyogQjNPcmlnaW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNPcmlnaW4uY3BwOyBw
YXRoID0gYjMvQjNPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVD
ODREQTFCREFDREFDMDA4MEZGNzQgLyogQjNPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNPcmlnaW4uaDsgcGF0aCA9IGIzL0IzT3JpZ2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NERCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9p
bnRTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUGF0
Y2hwb2ludFNwZWNpYWwuY3BwOyBwYXRoID0gYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NERDMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1BhdGNocG9pbnRTcGVjaWFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
UGF0Y2hwb2ludFNwZWNpYWwuaDsgcGF0aCA9IGIzL0IzUGF0Y2hwb2ludFNwZWNpYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0REQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UGF0Y2hwb2ludFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEIzUGF0Y2hwb2ludFZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzUGF0Y2hwb2ludFZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0REUxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzUGF0Y2hwb2ludFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
UGF0Y2hwb2ludFZhbHVlLmg7IHBhdGggPSBiMy9CM1BhdGNocG9pbnRWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRERjFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFz
ZVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUGhhc2VT
Y29wZS5jcHA7IHBhdGggPSBiMy9CM1BoYXNlU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkVDODRFMDFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUGhhc2VTY29wZS5oOyBwYXRoID0gYjMv
QjNQaGFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEUxMUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCM1Byb2NlZHVyZS5jcHA7IHBhdGggPSBiMy9CM1Byb2NlZHVyZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEUyMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1Byb2NlZHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1Byb2Nl
ZHVyZS5oOyBwYXRoID0gYjMvQjNQcm9jZWR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZFQzg0RTMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1Byb2NlZHVyZUlubGluZXMuaDsgcGF0
aCA9IGIzL0IzUHJvY2VkdXJlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkVDODRFNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcFNwZWNpYWwuY3BwOyBw
YXRoID0gYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkVDODRFNzFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTdGFja21hcFNwZWNpYWwuaDsgcGF0aCA9
IGIzL0IzU3RhY2ttYXBTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RUM4NEVBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTbG90QmFzZVZhbHVlLmNwcDsgcGF0aCA9IGIz
L0IzU2xvdEJhc2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4
NEVCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNTbG90QmFzZVZhbHVlLmg7IHBhdGggPSBiMy9CM1Nsb3RCYXNl
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0RUMxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaDsgcGF0aCA9IGIzL0IzU3VjY2Vzc29y
Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRFRDFCREFD
REFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEIzU3dpdGNoQ2FzZS5jcHA7IHBhdGggPSBiMy9CM1N3aXRjaENhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRFRTFCREFDREFDMDA4MEZGNzQg
LyogQjNTd2l0Y2hDYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzU3dp
dGNoQ2FzZS5oOyBwYXRoID0gYjMvQjNTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRUM4NEVGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaFZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzU3dpdGNoVmFsdWUuY3BwOyBw
YXRoID0gYjMvQjNTd2l0Y2hWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRUM4NEYwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzU3dpdGNoVmFsdWUuaDsgcGF0aCA9IGIzL0IzU3dpdGNo
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0RjExQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBCM1R5cGUuY3BwOyBwYXRoID0gYjMvQjNUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFQzg0RjIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1R5cGUuaDsgcGF0aCA9IGIzL0IzVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRGMzFCREFDREFDMDA4MEZGNzQgLyogQjNV
cHNpbG9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNV
cHNpbG9uVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNVcHNpbG9uVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkVDODRGNDFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNpbG9u
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNVcHNpbG9uVmFsdWUu
aDsgcGF0aCA9IGIzL0IzVXBzaWxvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRUM4NEY1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1VzZUNvdW50cy5jcHA7IHBhdGggPSBiMy9C
M1VzZUNvdW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEY2MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM1VzZUNvdW50cy5oOyBwYXRoID0gYjMvQjNVc2VDb3VudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0RjcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsaWRh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNWYWxpZGF0ZS5j
cHA7IHBhdGggPSBiMy9CM1ZhbGlkYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQzg0RjgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNWYWxpZGF0ZS5oOyBwYXRoID0gYjMvQjNWYWxpZGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODRGOTFCREFDREFDMDA4MEZGNzQg
LyogQjNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1Zh
bHVlLmNwcDsgcGF0aCA9IGIzL0IzVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkVDODRGQTFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM1ZhbHVlLmg7IHBhdGggPSBiMy9CM1ZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Zh
bHVlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1ZhbHVlSW5s
aW5lcy5oOyBwYXRoID0gYjMvQjNWYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFQzg0RkMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVSZXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNWYWx1ZVJlcC5jcHA7IHBhdGggPSBi
My9CM1ZhbHVlUmVwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg0RkQx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzVmFsdWVSZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNWYWx1ZVJlcC5oOyBwYXRoID0gYjMvQjNWYWx1ZVJlcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkVDODU0ODFCREFDREM3MDA4MEZGNzQgLyogQWlyQWxsb2Nh
dGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDsgcGF0aCA9IGIzL2Fp
ci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZFQzg1NDkxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckFsbG9jYXRlU3RhY2tC
eUdyYXBoQ29sb3JpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQWxs
b2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oOyBwYXRoID0gYjMvYWlyL0FpckFsbG9jYXRlU3Rh
Y2tCeUdyYXBoQ29sb3JpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1
NEExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckFyZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBBaXJBcmcuY3BwOyBwYXRoID0gYjMvYWlyL0FpckFyZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTRCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJB
cmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQXJnLmg7IHBhdGggPSBi
My9haXIvQWlyQXJnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTRDMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEFpckJhc2ljQmxvY2suY3BwOyBwYXRoID0gYjMvYWlyL0FpckJhc2lj
QmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU0RDFCREFDREM3
MDA4MEZGNzQgLyogQWlyQmFzaWNCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBBaXJCYXNpY0Jsb2NrLmg7IHBhdGggPSBiMy9haXIvQWlyQmFzaWNCbG9jay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU0RTFCREFDREM3MDA4MEZGNzQgLyogQWly
Q0NhbGxTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFp
ckNDYWxsU3BlY2lhbC5jcHA7IHBhdGggPSBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NEYxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
ckNDYWxsU3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJDQ2Fs
bFNwZWNpYWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJDQ2FsbFNwZWNpYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NTAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyQ29kZS5jcHA7IHBhdGgg
PSBiMy9haXIvQWlyQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4
NTUxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpckNvZGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJDb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTUyMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJGcmVxdWVu
dGVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRnJlcXVlbnRl
ZEJsb2NrLmg7IHBhdGggPSBiMy9haXIvQWlyRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTUzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJHZW5lcmF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJHZW5lcmF0ZS5j
cHA7IHBhdGggPSBiMy9haXIvQWlyR2VuZXJhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkVDODU1NDFCREFDREM3MDA4MEZGNzQgLyogQWlyR2VuZXJhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyR2VuZXJhdGUuaDsgcGF0aCA9IGIzL2Fpci9B
aXJHZW5lcmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU1NTFCREFD
REM3MDA4MEZGNzQgLyogQWlyR2VuZXJhdGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyR2VuZXJhdGlvbkNvbnRleHQuaDsgcGF0aCA9IGIzL2Fpci9BaXJH
ZW5lcmF0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU1
NjFCREFDREM3MDA4MEZGNzQgLyogQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwOyBwYXRo
ID0gYjMvYWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZFQzg1NTcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckhhbmRsZUNhbGxlZVNhdmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckhhbmRsZUNhbGxlZVNhdmVz
Lmg7IHBhdGggPSBiMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NTgxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc2VydGlvblNl
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJJbnNlcnRpb25T
ZXQuY3BwOyBwYXRoID0gYjMvYWlyL0Fpckluc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUM4NTU5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnNlcnRpb25T
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlySW5zZXJ0aW9uU2V0Lmg7
IHBhdGggPSBiMy9haXIvQWlySW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRUM4NTVBMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckluc3QuY3BwOyBwYXRoID0gYjMvYWlyL0Fp
ckluc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU1QjFCREFDREM3
MDA4MEZGNzQgLyogQWlySW5zdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
aXJJbnN0Lmg7IHBhdGggPSBiMy9haXIvQWlySW5zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkVDODU1QzFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlySW5zdElubGluZXMuaDsgcGF0aCA9IGIz
L2Fpci9BaXJJbnN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVD
ODU1RTFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJQaGFzZVNjb3BlLmNwcDsgcGF0aCA9IGIzL2Fpci9B
aXJQaGFzZVNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NUYx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyUGhhc2VTY29wZS5oOyBwYXRoID0gYjMvYWlyL0FpclBoYXNlU2NvcGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NjIxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpclNwZWNpYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QWlyU3BlY2lhbC5jcHA7IHBhdGggPSBiMy9haXIvQWlyU3BlY2lhbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTYzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclNwZWNpYWwuaDsgcGF0aCA9
IGIzL2Fpci9BaXJTcGVjaWFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4
NTY2MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTdGFja1Nsb3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyU3RhY2tTbG90LmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJT
dGFja1Nsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU2NzFCREFD
REM3MDA4MEZGNzQgLyogQWlyU3RhY2tTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEFpclN0YWNrU2xvdC5oOyBwYXRoID0gYjMvYWlyL0FpclN0YWNrU2xvdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU2ODFCREFDREM3MDA4MEZGNzQgLyogQWly
VG1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclRtcC5jcHA7
IHBhdGggPSBiMy9haXIvQWlyVG1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZFQzg1NjkxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJUbXAuaDsgcGF0aCA9IGIzL2Fpci9BaXJUbXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1NkExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wSW5saW5lcy5o
OyBwYXRoID0gYjMvYWlyL0FpclRtcElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZFQzg1NkIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclZhbGlkYXRlLmNwcDsgcGF0aCA9IGIz
L2Fpci9BaXJWYWxpZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4
NTZDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJWYWxpZGF0ZS5oOyBwYXRoID0gYjMvYWlyL0FpclZhbGlkYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NThGMkJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJUbXBXaWR0aElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QWlyVG1wV2lkdGhJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyVG1wV2lkdGhJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NTkyMUJEQjFFMTAwMDgwRkY3NCAv
KiBBaXJHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QWlyR2VuZXJhdGVkLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJHZW5lcmF0ZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODVBRDFCREI1Q0YxMDA4MEZGNzQgLyogdGVzdGIz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0YjM7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGRUM4NUFFMUJEQjVENUUw
MDgwRkY3NCAvKiB0ZXN0YjNfMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSB0ZXN0YjNfMS5jcHA7IHBhdGggPSBiMy90ZXN0YjNfMS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRUM4NUIyMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb25zdFB0clZhbHVlLmg7
IHBhdGggPSBiMy9CM0NvbnN0UHRyVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZFQzg1QjQxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9
IGIzL0IzSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
Qzg1QjUxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBiMy9CM0luc2VydGlv
blNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODVCNjFCRTE0NjJGMDA4
MEZGNzQgLyogQjNJbnNlcnRpb25TZXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oOyBwYXRoID0gYjMvQjNJbnNlcnRpb25T
ZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NUI3MUJFMTQ2
MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NUI4MUJFMTQ2
MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzUmVkdWNlU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVkdWNlU3RyZW5ndGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFQzg1QkUxQkUxNjdBMDAwODBGRjc0
IC8qIEIzRWZmZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0VmZmVj
dHMuaDsgcGF0aCA9IGIzL0IzRWZmZWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkVDODVDMDFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNIZWFwUmFuZ2UuaDsgcGF0aCA9IGIzL0IzSGVhcFJhbmdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRUM4NUM0MUJFMTZGNUEwMDgwRkY3
NCAvKiBCM0VmZmVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
QjNFZmZlY3RzLmNwcDsgcGF0aCA9IGIzL0IzRWZmZWN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRUQ2N0I3MUIyNjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0
aW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29u
c3RhbnRIb2lzdGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDb25zdGFudEhvaXN0aW5nUGhh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVENjdCODFCMjYyNTZEMDA2
NkNFMTUgLyogREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0Nv
bnN0YW50SG9pc3RpbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVF
OTg0MDFBODg2NUI2MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dXBWYXJhcmdzRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZFRTk4NDIxQTg5MjI3NTAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0Zy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNldHVwVmFyYXJn
c0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFRkM5QTcxNjgxQTNC
MDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHA7IHBh
dGggPSBkZmcvREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBs
YWNlaG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4aXRK
dW1wUGxhY2Vob2xkZXIuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjA1NEY3MUFDMzVCNDQwMEU1QkU1NyAv
KiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZGMDU0RjgxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxv
Y2F0aW9uRnV6ei5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxl
QWxsb2NhdGlvbkZ1enouaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGMkNENTkx
QjYxQTRGODAwNDk1NUE4IC8qIERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcDsg
cGF0aCA9IGRmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjJDRDVBMUI2MUE0RjgwMDQ5NTVBOCAvKiBERkdNdWx0aUdldEJ5T2Zm
c2V0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNdWx0aUdldEJ5
T2Zmc2V0RGF0YS5oOyBwYXRoID0gZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzJGMTU4RUJENDQwMDRDQjlGRiAvKiBEaXNh
c3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlzYXNzZW1ibGVy
Lmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjQyNzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtCdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZH
RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rp
c2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEaXNhc3Nl
bWJsZXIuaDsgcGF0aCA9IGRmZy9ERkdEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZGNDdDNTgxRUJGRTgzNTAwRjI4MEI3IC8qIEpTT2JqZWN0R2V0UHJveHlU
YXJnZXRUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTT2Jq
ZWN0R2V0UHJveHlUYXJnZXRUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9KU09iamVjdEdldFBy
b3h5VGFyZ2V0VGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQ3QzU5
MUVCRkU4MzUwMEYyODBCNyAvKiBKU09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5oOyBw
YXRoID0gQVBJL3Rlc3RzL0pTT2JqZWN0R2V0UHJveHlUYXJnZXRUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGRjRCNEJBMUU4ODQ0OTUwMERCQkU4NiAvKiBBaXJSZWdMaXZl
bmVzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJSZWdMaXZl
bmVzcy5jcHA7IHBhdGggPSBiMy9haXIvQWlyUmVnTGl2ZW5lc3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRkY0QjRCQjFFODg0NDk1MDBEQkJFODYgLyogQWlyUmVnTGl2ZW5l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyUmVnTGl2ZW5lc3MuaDsg
cGF0aCA9IGIzL2Fpci9BaXJSZWdMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkY0QjRDNjFFODg5M0JGMDBEQkJFODYgLyogQWlyQ0ZHLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEFpckNGRy5oOyBwYXRoID0gYjMvYWlyL0FpckNGRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0QjRDODFFODg5RDc4MDBEQkJFODYgLyogQjNW
YXJpYWJsZUxpdmVuZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEIzVmFyaWFibGVMaXZlbmVzcy5jcHA7IHBhdGggPSBiMy9CM1ZhcmlhYmxlTGl2ZW5lc3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0QjRDOTFFODg5RDc4MDBEQkJFODYg
LyogQjNWYXJpYWJsZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzVmFyaWFibGVMaXZlbmVzcy5oOyBwYXRoID0gYjMvQjNWYXJpYWJsZUxpdmVuZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjYwQUJGMTY3NDBGODEwMDAyOTc3OSAvKiBS
ZWR1Y2VXaGl0ZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZHVjZVdoaXRlc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY2
MEFDMDE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWR1Y2VXaGl0ZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRjcxNjhBMTVBM0IyMzEwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5MjE2NkFEMzQ3MDAwRjVCQTMgLyogUHJv
ZmlsZXJCeXRlY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlckJ5dGVjb2RlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMg
LyogUHJvZmlsZXJCeXRlY29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQ
cm9maWxlckJ5dGVjb2RlLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckJ5dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQcm9maWxlckJ5dGVjb2Rlcy5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTk1MTY2QUQzNDcwMDBG
NUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQcm9maWxlckJ5dGVjb2Rlcy5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1
QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUHJvZmlsZXJDb21waWxhdGlvbi5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlckNvbXBpbGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5
OTcxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJDb21waWxhdGlvbi5oOyBwYXRoID0gcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkY3Mjk5ODE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJDb21waWxhdGlvbktp
bmQuY3BwOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5OTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJv
ZmlsZXJDb21waWxhdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UHJvZmlsZXJDb21waWxhdGlvbktpbmQuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGls
YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjcyOTlBMTY2QUQz
NDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmNwcDsgcGF0
aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRjcyOTlCMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBp
bGVkQnl0ZWNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJD
b21waWxlZEJ5dGVjb2RlLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUMxNjZBRDM0NzAwMEY1
QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUHJvZmlsZXJEYXRhYmFzZS5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckRh
dGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5OUQxNjZBRDM0
NzAwMEY1QkEzIC8qIFByb2ZpbGVyRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUHJvZmlsZXJEYXRhYmFzZS5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY3Mjk5RTE2NkFEMzQ3MDAw
RjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oOyBwYXRoID0gcHJvZmlsZXIv
UHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRjcyOTlGMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlck9yaWdpbi5jcHA7IHBhdGggPSBw
cm9maWxlci9Qcm9maWxlck9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGRjcyOUEwMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlck9yaWdpbi5oOyBwYXRoID0gcHJvZmlsZXIv
UHJvZmlsZXJPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNzI5QTEx
NjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBw
cm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkY4QkRFOTFBRDRDRjcxMDBERkU4ODQgLyogSW5mZXJyZWRWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmZlcnJlZFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEZGOUNFNzExQjlDRDZEMDAwNEVEQ0E2IC8qIFBvbHltb3JwaGlj
QWNjZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbHltb3Jw
aGljQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGOUNFNzIxQjlD
RDZEMDAwNEVEQ0E2IC8qIFBvbHltb3JwaGljQWNjZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBvbHltb3JwaGljQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGRkI2QzM2MUFGNDhEREMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVvZlR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkZCNkMzNzFBRjQ4RERDMDBEQjFCRjcgLyogVHlwZW9mVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlb2ZUeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkI4MEJCMjBBNzk0NzAwMDA2QUFGNiAvKiBKSVRD
b2RlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb2RlSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZDOTIxNTFCOTRGQjNFMDA3
MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR1Byb3BlcnR5VHlwZUtleS5oOyBwYXRoID0gZGZnL0RGR1Byb3BlcnR5VHlwZUtl
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZDOTlEMDE4NEVDOEFEMDA5QzEw
QUIgLyogQ29uc3RhbnRNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnN0YW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZGQzk0QjE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBo
YXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NTRVBoYXNlLmNwcDsgcGF0aCA9IGRm
Zy9ERkdDU0VQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkZDOTRF
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdDU0VQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NTRVBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkZDOTRGMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQ
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkZGQzk1MDE0RUY5MDk1MDBDNzI1MzIgLyogREZHUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdQaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGRkM5NTMxNEVGOTA5NTAw
QzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9u
UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRkZDOTU0MTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmg7IHBh
dGggPSBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTExQzE5N0MyNjI0ODQ4RURBODRDRUQ3RiAvKiBKU1NjcmlwdEZl
dGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRG
ZXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQwRDE3RDYwRThBRDRB
OTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNCYXNlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDEy
MTEwMjBBNDg3ODA5MDA0ODAyNTUgLyogbWluaWRvbS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
LmM7IG5hbWUgPSBtaW5pZG9tLmM7IHBhdGggPSB0ZXN0cy9taW5pZG9tLmM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gbWluaWRvbS5qczsgcGF0
aCA9IHRlc3RzL21pbmlkb20uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTIx
MTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBtaW5pZG9tOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkxNDE0MkU1MDFCNzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQxNDJF
NTIxQjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MTQyRTU0MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTQ0
OENBMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXJrZWRCbG9ja1NldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbnlCbG9vbUZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTggLyogV2Vha1Nl
dElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyMDFENTgxREVDRjI2QTAwOTA0
QkQzIC8qIFNvdXJjZUNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291
cmNlQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDIxMzU5QTBBNjc3RjRG
MDBBODE5NUUgLyogSlNCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjcxMTM4MEE0
NjBCQkIwMDgwRUVFQSAvKiBKU0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlENzdCMEVEMjBE
NzMwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDI5RDdE
MzBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDTG9vcFN0YWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyOUQ4NzcwRUQyMUFDRDAwQjg5NjE5IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0
aW9uSGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MjlEOERCMEVE
MjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQyOUQ4REMwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxh
bmcub2JqY3BwOyB9OworCQkxNDI5RDkyRDBFRDIyRDcwMDBCODk2MTkgLyogSklULmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0MjlEOTJFMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdW1lcmljU3RyaW5ncy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDJENTJCRDIxNzYyOTU3MDAyREIwODYgLyogVW5saW5rZWRN
ZXRhZGF0YVRhYmxlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0MkQ1MkJFMjE3NjI5NTgwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAv
KiBNYXJrZWRCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YXJrZWRCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkQ2RjA3MTM1
MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrZWRCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDJE
NkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MkQ2RjBGMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0MkUzMTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0MkUzMTJDMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFuZGxlU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRTMxMkQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVTZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRTMxMzIxMzRGRjBBNjAwQUZBREI1IC8qIFN0cm9uZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJvbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQyRTMxMzMxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vhay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDJGMTZERjIxNTU4NUM4MDAzRDQ5QzkgLyogTWV0YWRhdGFUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRhZGF0YVRhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MkYxNkU5MjE1ODNCNUUwMDNENDlDOSAvKiBDb2RlQmxv
Y2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzNTk1MUYyMkE1MjFDQTAw
RTgwODZEIC8qIEJ5dGVjb2RlQ2FjaGVFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNh
Y2hlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzNTk1MjAyMkE1MjFD
QTAwRTgwODZEIC8qIEJ5dGVjb2RlQ2FjaGVFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
eXRlY29kZUNhY2hlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDM4
NkE3MjFERDY5ODk1MDA4NjUyQzQgLyogRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyog
RGlyZWN0RXZhbEV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlyZWN0RXZhbEV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQz
ODZBNzYxREQ2OTg5QzAwODY1MkM0IC8qIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Mzg2QTc3MURENjk4OUMwMDg2NTJD
NCAvKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluZGlyZWN0RXZhbEV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQzQkUyNjUyMUM4NTc3NzAwMjBDRDE3IC8qIENhY2hlZFR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0NDAwNTFGMEE1MzFEM0IwMDA1RjA2MSAvKiBOb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vZGUuaDsgcGF0aCA9IHRlc3RzL05vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MDA1MjAwQTUzMUQzQjAwMDVGMDYxIC8qIE5v
ZGUuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gTm9kZS5jOyBwYXRoID0gdGVz
dHMvTm9kZS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQwMDc0ODBBNTM2Q0My
MDAwNUYwNjEgLyogTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Tm9kZUxpc3QuaDsgcGF0aCA9IHRlc3RzL05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0NDAwNzQ5MEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5jICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBOb2RlTGlzdC5jOyBwYXRoID0gdGVzdHMvTm9kZUxp
c3QuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MDA3NTUwQTUzNzBEMjAwMDVG
MDYxIC8qIEpTTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNO
b2RlTGlzdC5oOyBwYXRoID0gdGVzdHMvSlNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDQwMDc1NjBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5jICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBKU05vZGVMaXN0LmM7IHBhdGggPSB0ZXN0cy9K
U05vZGVMaXN0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDBGNjQxMEE0RjhC
NkEwMDA1RjA2MSAvKiBKU05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SlNOb2RlLmg7IHBhdGggPSB0ZXN0cy9KU05vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTQ0MEY2NDIwQTRGOEI2QTAwMDVGMDYxIC8qIEpTTm9kZS5jICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmM7IG5hbWUgPSBKU05vZGUuYzsgcGF0aCA9IHRlc3RzL0pTTm9kZS5jOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQwRjg4RjBBNTA4QjEwMDAwNUYwNjEgLyogSlND
YWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2Fs
bGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQwRjg5MDBB
NTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0NDBGOEFDMEE1MDhEMjAwMDA1RjA2MSAvKiBKU0NhbGxiYWNr
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDBGOEFEMEE1
MDhEMjAwMDA1RjA2MSAvKiBKU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MEZDRTEwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xh
c3NSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbGFzc1JlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDQwRkNFMjBBNTFFNDZCMDAwNUYwNjEgLyog
SlNDbGFzc1JlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Ns
YXNzUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ0MjU2NUYxNUVERTk4
RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2l0aFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQ0MjU2NjAxNUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2l0aFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0NENBMzRGMjIxRjAzNzkwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRCeXRlY29kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDUwRkExRDIzNTdCRUM0MDA5M0NENEQgLyogV2FzbUxMSW50
VGllclVwQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtTExJbnRUaWVyVXBDb3Vu
dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ1MEZBMUUyMzU3QkVDNDAw
OTNDRDREIC8qIFdhc21MTEludFRpZXJVcENvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUxM
SW50VGllclVwQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDU3MjI4
NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJvbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNDVGRjJDNjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRUNNQU1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDVG
RjJDNzI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQU1v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2QUFCMkEwQjY2QTg0OTAwRTU1
RjE2IC8qIEpTU3RyaW5nUmVmQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RyaW5nUmVmQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2QUFCMzcw
QjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc2VydmF0aXZlUm9v
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDZGQTVBODEzNzhGNkIwMDAz
NjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFuZGxlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MTQ4MkUyMEQz
MjM2NDAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTV3JhcHBlck1hcFRlc3RzLmg7IHBhdGggPSBBUEkvdGVzdHMvSlNXcmFw
cGVyTWFwVGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MTQ4MkYyMEQz
MjM2NTAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gSlNXcmFwcGVyTWFwVGVzdHMubW07IHBhdGggPSBBUEkvdGVz
dHMvSlNXcmFwcGVyTWFwVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
NzM0MUNCMURDMDJENzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDczNDFDRDFEQzAyRDc5MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFeGVjdXRhYmxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NzM0MUNGMURDMDJEQjQwMEFBMjlCQSAvKiBO
YXRpdmVFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2
ZUV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MzQxRDExREMw
MkUyRTAwQUEyOUJBIC8qIEV2YWxFeGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV2YWxFeGVjdXRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9ncmFtRXhlY3V0YWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDczNDFENTFEQzAyRUI5MDBBQTI5QkEgLyogTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MzQx
RDcxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQ3MzQxREIxREMyQ0U5NjAwQUEyOUJBIC8qIEV2YWxFeGVjdXRhYmxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2YWxFeGVjdXRhYmxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MzQxREMxREMyQ0U5NjAwQUEy
OUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNDczNDFERDFEQzJDRTk2MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDczNDFERTFE
QzJDRTk2MDBBQTI5QkEgLyogTmF0aXZlRXhlY3V0YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVFeGVjdXRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW1FeGVj
dXRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3MzQxRTAxREMyQ0U5
NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0RXhlY3V0YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0NzM0MUU5MURDMkNGMjUwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxlQmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Nzg4RUUyMjE1MDFBRjcwMEE1NjFDOCAv
KiBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0Nzg4RUU0MjE1MDFCMjgwMEE1NjFDOCAvKiBKU1R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTQ3ODhFRTUyMTUwMUIyOTAwQTU2MUM4IC8qIEdldFB1dEluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0UHV0SW5mby5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0N0I4M0FBMEU2REI4QzkwMDQ3NzVBNCAv
KiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDdCODQ2MjBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dFByb3BlcnR5U2xvdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgwREI5QjBEREMyMjdGMDAzQ0ZERjIgLyogRGVi
dWdnZXJDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdn
ZXJDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4MkI2RUEwQTQz
MDBCMzAwNTE3Q0ZDIC8qIEpTVmFsdWVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNWYWx1ZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDgyQjc0
QjBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJpbmdSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTQ4MkI3NEMwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTQ4MkI3OEEwQTQzMDVBQjAwNTE3Q0ZDIC8qIEFQSUNhc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3RSZWYuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0
UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT2JqZWN0UmVm
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4NTIxRDUyNkVBRUJERjAwQ0Mx
RDFBIC8qIFdhc21IYW5kbGVySW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtSGFuZGxl
ckluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDg1MjFENzI2RUFFQkZF
MDBDQzFEMUEgLyogV2FzbUhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdhc21IYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NDg2QThCRTI0QUJFRDNCMDA3MzkyMkQgLyogSlNMb2NrUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTG9ja1JlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODZBOEJG
MjRBQkVEM0MwMDczOTIyRCAvKiBKU0xvY2tSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TG9ja1JlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4NzRBRTEx
NUVCREU0QTAwMkUzNTg3IC8qIEpTU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
ODc0QUUyMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4
N0NFMTYyMzc3NDEwMDAwNDQ0MjlDIC8qIFdhc21HZW5lcmF0b3JUcmFpdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUdlbmVyYXRvclRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDhBN0JFRDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2Fs
bEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUNh
bGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0OEE3QkVFMUI4Mjk3
NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0OEIxNDE2MjI1REQxRDcwMEQ2RTk5OCAvKiBDYWNoZVBheWxvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQYXlsb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0OEIxNDE3MjI1REQxRDcwMEQ2RTk5OCAvKiBMZWFmRXhlY3V0YWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWFmRXhlY3V0YWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNDhCMTQxODIyNUREMUQ3MDBENkU5OTggLyogQ2FjaGVV
cGRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVVcGRhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4QjE0MTkyMjVERDFFOTAwRDZFOTk4IC8q
IENhY2hlZEJ5dGVjb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZEJ5dGVjb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4QjE0MUEyMjVERDFFOTAwRDZFOTk4
IC8qIENhY2hlVXBkYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlVXBkYXRlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ4QjE0MUIyMjVERDFFQTAwRDZFOTk4IC8q
IENhY2hlUGF5bG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVBheWxvYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDhCMTQxQzIyNUREMUVBMDBENkU5OTggLyog
TGVhZkV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVhZkV4ZWN1dGFibGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYg
LyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NvbnRleHRSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
OTU1OUVEMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1Z2dlckNhbGxGcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0OThDQUQzMjE0NjU2QzQwMDcxMDg3OSAvKiBsaWJX
VEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJj
aGl2ZS5hcjsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQkxNDk4Q0FENTIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJZE1ldGFkYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldEJ5SWRNZXRhZGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNDlCMjRGRjBEOEFGNkQxMDA5Q0I4QzcgLyogUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNl
cnZhdGl2ZVJvb3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnNlcnZh
dGl2ZVJvb3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QTE1NjMwMTA5NjYz
NjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRlSW5zdGFuY2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRBNDY4MDkyMTZGQTUzNDAwMEQyQjFBIC8qIEZpdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEE0NjgwQTIxNkZBNTM1MDAwRDJCMUEgLyogSW5zdHJ1Y3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdHJ1Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRBNDY4MEIyMTZGQTUzNTAwMEQyQjFBIC8qIE9wY29kZVNpemUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Bjb2RlU2l6ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEFCMEM5MTIzMTc0N0I2MDAwMjUwQkMgLyogV2FzbUVudHJ5UGxh
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtRW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRBQjBDOTIyMzE3NDdCNzAwMDI1MEJDIC8qIFdhc21TbG93UGF0
aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVNsb3dQYXRocy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTE0QUIwQzkzMjMxNzQ3QjcwMDAyNTBCQyAvKiBXYXNtU2xvd1Bh
dGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRBQjBDOTQyMzE3NDdCNzAwMDI1MEJDIC8qIFdhc21FbnRyeVBsYW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEFCNjY3NTFERUNGNDA5MDBBNTZDMjYgLyogVW5saW5rZWRTb3VyY2VDb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkU291cmNlQ29kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlND
SlNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNWYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFCQjQ1NDA5OUMyQTBGMDBFMkEyNEYg
LyogSlNUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFCREY1RDBBNDM3RkVGMDBFQ0NBMDEgLyog
SlNDYWxsYmFja09iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Nh
bGxiYWNrT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUJERjVFMEE0
MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEFEOTEwNjFEQ0E5Mjk0MDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmFsQ29kZUJsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUQ5MTA3MURDQTkyOTQwMDE0RjlGRSAvKiBGdW5j
dGlvbkNvZGVCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdW5jdGlv
bkNvZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdsb2JhbENvZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNEFEOTEwOTFEQ0E5Mjk0MDAxNEY5RkUgLyogTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QUQ5MTBBMURDQTkyOTQwMDE0RjlGRSAv
KiBQcm9ncmFtQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2dyYW1Db2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBRDkxMTIx
RENBOTdGRDAwMTRGOUZFIC8qIEV2YWxDb2RlQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXZhbENvZGVCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0QUQ5MTEzMURDQTk3RkQwMDE0RjlGRSAvKiBNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEFEOTExNDFE
Q0E5N0ZEMDAxNEY5RkUgLyogUHJvZ3JhbUNvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcm9ncmFtQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTRBRDkxMTYxRENBOTdGRDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJs
b2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uQ29k
ZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBRDkxMUMxRENBOUZB
NDAwMTRGOUZFIC8qIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVubGlua2VkR2xvYmFsQ29kZUJsb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0QUQ5MTFEMURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBRDkx
MUUxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZEV2YWxDb2RlQmxvY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBRDkxMUYxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTRBRDkxMjAxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRBRDkxMjgxRENBQUFC
MDAwMTRGOUZFIC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZEV2YWxDb2RlQmxvY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNEFEOTEyOTFEQ0FBQUIwMDAxNEY5RkUgLyogVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0QUQ5MTJBMURDQUFBQjAwMDE0RjlGRSAvKiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTRBRDkxMkIxRENBQUFCMDAwMTRGOUZFIC8qIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QjcyMzNGMTJEN0Qw
REEwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFjaGluZVN0YWNrTWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01h
cmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNoaW5lU3RhY2tNYXJr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQTc3NTEyMTEwODZBMDAwOEQw
QjA1IC8qIEJ5dGVjb2RlTGlzdC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGgg
PSBCeXRlY29kZUxpc3QucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkE3NzUy
MjExQThFNUYwMDhEMEIwNSAvKiBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNEJBNzhGMDEzQUFCODhGMDA1QjdDMkMgLyogU2xvdFZp
c2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2xvdFZpc2l0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCQTdBOTUxM0FBREZGODAwNUI3QzJDIC8q
IEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkE3QTk2MTNBQURGRjgwMDVCN0MyQyAv
KiBIZWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3Rh
cGkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3Rh
cGk7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0QkQ1QTI5MEEzRTkx
RjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ29udGV4dFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZVJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0
ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0ZXN0YXBpLmM7IHBh
dGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
NEJENjg4RTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRTZXR0aW5nc0V4dHJhY3RvciAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRTZXR0
aW5nc0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMTRC
RDY4OUMyMTUxOTFCMzAwNTBEQUZGIC8qIExMSW50U2V0dGluZ3NFeHRyYWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRTZXR0aW5nc0V4dHJhY3Rvci5j
cHA7IHBhdGggPSBsbGludC9MTEludFNldHRpbmdzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRCRTdEMzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFr
R0NNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0dDTWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QzFGOUNGMjJFQTUxRkQwMDQwQjE0NSAvKiBX
YXNtLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IFdhc20ucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0QzVBRDY1MjJGMTg2NkMwMEYxRkI4MyAvKiBCeXRlY29kZUdlbmVyYXRvckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0QzVBRDY2MjJGMTg2NkMwMEYxRkI4MyAvKiBCeXRlY29kZUdlbmVy
YXRvckJhc2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yQmFzZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDNUFENjcyMkYzM0ZCRjAw
RjFGQjgzIC8qIFdhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEM1QUQ2ODIyRjMzRkJGMDBGMUZCODMgLyogV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21MTEludEdlbmVyYXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QzVBRDY5MjJGMzNGQkYwMEYxRkI4MyAvKiBX
YXNtTExJbnRHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUxMSW50R2VuZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QzVBRDZBMjJGMzNGQkYwMEYxRkI4MyAv
KiBXYXNtTExJbnRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21MTEludFBsYW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEM1QUQ2QjIyRjMzRkMwMDBGMUZCODMg
LyogV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21G
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNEM1QUQ2QzIyRjMzRkMwMDBGMUZCODMgLyogV2FzbUxMSW50UGxhbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtTExJbnRQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Q0E5
NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRDQTk1OEMxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
Q0MzQkExMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0cnVjdGlvblN0cmVhbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnN0cnVjdGlvblN0cmVhbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0Q0MzQkEyMjEzOEEyMzgwMDJENThCNiAvKiBJbnN0
cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnN0cnVj
dGlvblN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEQwMUE3NTIxRkIz
NTAzMDBCQzU0RTkgLyogSlNTY3JpcHRTb3VyY2VQcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEpTU2NyaXB0U291cmNlUHJvdmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0RDAxQTc2MjFGQjM1MDMwMEJDNTRFOSAvKiBKU1NjcmlwdFNvdXJjZVByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCREEyNkRFRUYzNzAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5
VGFnQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlUYWdDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEQwMUJEQjI2REVFRjM3MDBDQUUw
RDAgLyogV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5
VGFnUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDAxQkRDMjZE
RUVGMzcwMENBRTBEMCAvKiBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlFeGNlcHRpb24uY3BwOyBwYXRo
ID0ganMvSlNXZWJBc3NlbWJseUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0RDAxQkREMjZERUVGMzcwMENBRTBEMCAvKiBXZWJBc3NlbWJseUV4Y2VwdGlvblBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUV4
Y2VwdGlvblByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlFeGNlcHRpb25Qcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCREUyNkRFRUYzNzAwQ0FF
MEQwIC8qIFdlYkFzc2VtYmx5VGFnQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlUYWdDb25zdHJ1Y3Rvci5jcHA7IHBhdGggPSBq
cy9XZWJBc3NlbWJseVRhZ0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTREMDFCREYyNkRFRUYzNzAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5VGFn
UHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCRTAyNkRFRUYzNzAwQ0FFMEQwIC8qIEpT
V2ViQXNzZW1ibHlUYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJB
c3NlbWJseVRhZy5oOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseVRhZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxNEQwMUJFMTI2REVFRjM4MDBDQUUwRDAgLyogSlNXZWJBc3NlbWJs
eUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2Vt
Ymx5RXhjZXB0aW9uLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDAxQkUyMjZERUVGMzgwMENBRTBEMCAvKiBXZWJB
c3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseUV4Y2VwdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTE0RDAxQkUzMjZERUVGMzgwMENBRTBEMCAvKiBXZWJBc3NlbWJseUV4Y2VwdGlvbkNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5
RXhjZXB0aW9uQ29uc3RydWN0b3IuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5RXhjZXB0aW9uQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCRTQyNkRFRUYz
ODAwQ0FFMEQwIC8qIEpTV2ViQXNzZW1ibHlUYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSlNXZWJBc3NlbWJseVRhZy5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2Vt
Ymx5VGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCRTUyNkRFRUYz
ODAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1
Y3Rvci5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMDFCRjIyNkRFRUY1MjAwQ0FFMEQwIC8q
IFdhc21UYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVRh
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDAxQkYzMjZERUVGNTIwMENB
RTBEMCAvKiBXYXNtVGFnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21U
YWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMkYzRDkxMzlGNEJFMjAwNDkx
MDMxIC8qIE1hcmtlZFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cmtlZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDc5MjY0MERBQTAz
RkIwMDFBOUYwNSAvKiBDTG9vcFN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENMb29wU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREODU3NzQw
QTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IG5hbWUgPSB0ZXN0YXBpLmpzOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBK
U0xleGljYWxFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0xleGljYWxFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNERB
ODE4RjBEOTlGRDIwMDBCMEE0RkIgLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNERBRkE0NTIxRTNCODcxMDA0QjY4RjcgLyog
Q2FjaGVkVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fj
aGVkVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNERFMEQ2ODBEMDI0
MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5jcHA7IH07CisJCTE0REYwNEQ5MTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY1By
b3BlcnR5QW5hbHlzaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFODRGOTkx
NEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWFrQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNEU4NEY5QTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0Jsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEU4NEY5QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRFODRGOUMxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEU4NEY5RDE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1
MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYWtIYW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEY3OUY2
RTIxNkVBRDUwMDAwNDZEMzkgLyogTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhZGF0YVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTg3OTUxMDYxNEM1
NDBGRkI1NjFDMTI0IC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ1JlZlByaXZhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFDRjczNzYxNzFDQTZGQjAwQzlCQjFFIC8q
IFdlYWsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vhay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTA1MTQyMEJBOUU4QTcwMDgxRTlEMCAv
KiBWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNp
b24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTA1MTQzMEJBOUU4
QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM5MDUxNDQwQkE5RThBNzAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTA1MTQ1MEJBOUU4QTcwMDgxRTlE
MCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQUE4QjRBMEQzMkMzOUEw
MDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEphdmFTY3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBQThCNEIwRDMy
QzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTIwRUNCMTVFRkM1MjQ2MjRCQzJGMDJENSAvKiBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZU5hbWVzcGFjZUFj
Y2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZp
eFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmg7IHBhdGggPSBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBB
aXJPcGNvZGUub3Bjb2RlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9B
aXJPcGNvZGUub3Bjb2Rlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY4NEQ0Mzcx
QzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpckxpdmVuZXNzLmg7IHBhdGggPSBiMy9haXIvQWlyTGl2ZW5lc3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjY5RDYzNkQxQkZCRTVEMDAwMTAxQjFEIC8qIEZU
TE91dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExPdXRwdXQuaDsg
cGF0aCA9IGZ0bC9GVExPdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJBMDVBQkQzMTk2MURGMjQwMDM0MTc1MCAvKiBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkEwNUFC
RDQxOTYxREYyNDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkExMTEyNDMxOTJGQ0U3OTAwNUVFMThEIC8qIEN1
c3RvbUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
QTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1c3RvbUdldHRlclNldHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyQTM0M0Y3NDE4QTE3NDhCMDAzOUIwODUgLyogR0NTZWdtZW50
ZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1NlZ21lbnRlZEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMzQzRjc3MThBMTc0OUQwMDM5
QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1ZUlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBN0E1OEVFMTgwOEE0QzQw
MDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlZmVyR0MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4
RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
QTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBF
QkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyQUFCQ0RFNjE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dn
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDTG9nZ2luZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJB
QUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlv
bk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW51bWVyYXRpb25Nb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3
NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJB
REZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRjczODJCMThCQkJGOTIwMDhBNUEz
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzAzMjE3
NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBT
Y3JpYmJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpYmJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMzc0MzY0OTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0
aXZlRXhwcmVzc2lvblRyZWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzT3B0aW1pemVBc3Nv
Y2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzc0
MzY0QTIyNEQ3OUVGMDBDOEMyMjcgLyogQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRy
ZWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVl
cy5oOyBwYXRoID0gYjMvQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOTVDNzA0MjI1NTVGNkMwMEJEQkZBRCAvKiBC
M0VsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvQjNFbGltaW5hdGVEZWFkQ29k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOTVDNzA1MjI1NTVGNkQwMEJE
QkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9IGIzL0IzRWxpbWluYXRlRGVhZENv
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNBOTIwQkMyM0RBMkM2RDAwMEVC
QUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzM0IyQTU0NTIyNjUxRDUzMDA1QTBGNzkgLyogTWFya2VkU3BhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFya2VkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzNzExOUE3NzIwQ0NCNURDMDAyQzZEQzkgLyogV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxz
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGgg
PSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkzN0M3MzhE
MTFFREI1NjcyMDAzRjJCMEIgLyogUGFyc2VJbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFyc2VJbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEyOTUy
NzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVy
X2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5z
X2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDEyOTUyNzQxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRl
X2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1w
bGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMjk1Mjc1MUQy
Q0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hlYWRlci5weSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTI5NTI3NjFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRl
X3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpblV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQyNUJBMTMzN0U0MzQ0RTFCMjY5QTY3MSAvKiBTb3VyY2VPcmlnaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlT3JpZ2luLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFj
cm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOyBwYXRoID0gYjMvQjNM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQzMTlEQTAyMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJNYWNy
b3NBZnRlck9wdGltaXphdGlvbnMuaDsgcGF0aCA9IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM0MEE0ODIxQTkwNTFB
RjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQz
NDBBNDgzMUE5MDUxQUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM0MjJBNjAxQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmNwcDsg
cGF0aCA9IGIzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmg7IHBhdGgg
PSBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MzQyMkE2NDFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHA7IHBhdGggPSBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlRG91Ymxl
VG9GbG9hdC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQzNkU1NDUxMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXpl
TWVtb3J5T2Zmc2V0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHA7IHBhdGggPSBiMy9CM0xlZ2FsaXplTWVtb3J5T2Zm
c2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNkU1NDUyMUM0NjhFNUYw
MEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oOyBwYXRoID0gYjMvQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBQjI2
QzQxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBCM01hdGhFeHRyYXMuY3BwOyBwYXRoID0gYjMvQjNNYXRoRXh0
cmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBQjI2QzUxQzFBNTJGNzAw
RDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM01hdGhFeHRyYXMuaDsgcGF0aCA9IGIzL0IzTWF0aEV4dHJhcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0M0MzOTJBQTFDM0JFQjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDJGQkQ4NTIxNDlEMUUwMDA3MzUxOUMg
LyogaGFzaGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gaGFzaGVyLnB5OyBwYXRoID0geWFyci9o
YXNoZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1MTUzOUI4MTJEQzk5NDUw
MEVGN0FDNCAvKiBZYXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIu
aDsgcGF0aCA9IHlhcnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NUUx
MkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gNDsgfTsKKwkJNENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8qIE1v
ZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CisJCTUxRjBFQzA3MDVDODZDOUEwMEU2REYxQiAvKiBsaWJvYmpjLmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpjLmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGli
b2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNTIwRDk5RjAyMzg4
Q0M3ODAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeVZh
bEhpc3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTIxMTMxRjUxRjgyQkYx
MTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvbHlQcm90b0FjY2Vzc0NoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTIxMTMxRjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBvbHlQcm90b0FjY2Vzc0NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUyMTMyMjQzMUVDQkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUZ1
bmN0aW9uQmFzZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMTMyMjQ0MUVDQkNFODIwMEY2NTYxNSAvKiBX
ZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlGdW5jdGlv
bkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTIzMzU2MjgyMjVFQjhFOTAw
MjY4QkQyIC8qIENQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MjRFOUQ3MTIyMDkyQjQ1MDBBNkJFRUUgLyogQWlyQWxsb2Nh
dGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI0RTlENzIyMjA5MkI0NjAwQTZCRUVFIC8q
IEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oOyBwYXRo
ID0gYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI1MEQyQ0YxRThEQTA1QTAwMjlBOTMyIC8q
IFdhc21UaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bVRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNTBEMkQwMUU4REEw
NUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21UaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI1QzBERDcx
RTkzNTg0NzAwMjE4NENEIC8qIFdhc21DYWxsZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2FzbUNhbGxlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyNUMwREQ4MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI2NzhGOEMxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY0Jsb2NrTG9jYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjY3OEY4RDFBMDMxMDA5MDA2
QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJhc2ljQmxvY2tMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MjY3OEY5MDFBMDQxNzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250cm9sRmxvd1Byb2ZpbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjdDRjgxMjQ5MzE2QUQwMDIyQkY2RCAvKiBGYXN0
SklUUGVybWlzc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEpJVFBlcm1pc3Npb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNkFDNEI0MUU5NzdDNUQwMDM1MDBFMSAvKiBX
YXNtQ2FsbGVlR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2FzbUNhbGxlZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QUM0
QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21DYWxsZWVHcm91cC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXYXNtQ2FsbGVlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI3Mjk4N0IyMzVGQzhCQTAwNUM5ODJDIC8qIEdDTWVtb3J5T3BlcmF0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHQ01lbW9yeU9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTI3NzczREQxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRpbWVUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bnRpbWVUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI3Q0UzNTIyMjU1NUZERDAwQzZGMzgyIC8qIEpT
VG9XYXNtSUNDYWxsZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNUb1dhc21JQ0NhbGxlZS5j
cHA7IHBhdGggPSBqcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTI3Q0UzNTMyMjU1NUZERDAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSlNUb1dhc21JQ0NhbGxlZS5oOyBwYXRoID0ganMvSlNUb1dhc21JQ0Nh
bGxlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjdFNkNFQTI3NzJCOUM1MDA1
RTA3ODIgLyogV2FzbU9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT1NS
RW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI3RTZDRUIyNzcy
QjlDNTAwNUUwNzgyIC8qIFdhc21PU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9T
UkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Mjg0N0FEOTIxRkZC
ODYzMDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21BaXJJUkdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUy
ODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2FzbUFpcklSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyQjMxMEZBMTk3NEFFNjEwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUyQjMxMEZDMTk3NEFFODcwMDgwODU3QyAvKiBGdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJCMzEwRkUxOTc1QjQyNDAw
ODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVM
b2NhdGlvbkNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJCMzExMDAx
OTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5
cGVMb2NhdGlvbkNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQjUxMDBC
MjY1RUZDRDQwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRTaXplU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkI1MTAw
QzI2NUVGQ0Q0MDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSklUU2l6ZVN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MkI3MTdCNDFBMDU5N0UxMDA3QUY0RjMgLyogQ29udHJvbEZsb3dQcm9maWxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250cm9sRmxvd1Byb2ZpbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJDMDYxMUQxQUE1MUUxQjAwQjRBREJB
IC8qIFJ1bnRpbWVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRp
bWVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQzU1NTY0MjI0QzJBRTcw
MDk5RjVDQyAvKiBERkdWYWx1ZVJlcFJlZHVjdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1ZhbHVlUmVwUmVkdWN0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1ZhbHVlUmVw
UmVkdWN0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkM1NTU2
NTIyNEMyQUU3MDA5OUY1Q0MgLyogREZHVmFsdWVSZXBSZWR1Y3Rpb25QaGFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdWYWx1ZVJlcFJlZHVjdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHVmFsdWVS
ZXBSZWR1Y3Rpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkM5NTJC
NjE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVQ
cm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkM5NTJCODE5QTI4QTFD
MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQcm9m
aWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQ0QwRjY0MjI0MkY1Njkw
MDRBMThBNSAvKiB0ZXN0ZGZnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSB0ZXN0ZGZnOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0ZGZnLmNwcDsgcGF0aCA9IGRmZy90ZXN0ZGZnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJEMTMwOEYyMjFDRTAzQTAwOUM4MzZD
IC8qIGZvby5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IGZvby5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJERDAwMDYyNkUwMzlCMzAwNTRFNDA4
IC8qIEJhc2VsaW5lSklUQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVENvZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJERDAwMDcyNkUwMzlCNDAwNTRFNDA4IC8q
IEJhc2VsaW5lSklUQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlbGluZUpJVENvZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkU2NUExQTI3NjgyNzYwMDAyQjRD
MEEgLyogQjNFc3RpbWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0VzdGltYXRlU3RhdGljRXhlY3V0aW9uQ291bnRzLmNw
cDsgcGF0aCA9IGIzL0IzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25Db3VudHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MkU2NUExQjI3NjgyNzYwMDAyQjRDMEEgLyogQjNFc3Rp
bWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCM0VzdGltYXRlU3RhdGljRXhlY3V0aW9uQ291bnRzLmg7IHBhdGggPSBiMy9CM0VzdGlt
YXRlU3RhdGljRXhlY3V0aW9uQ291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyRUVENzkyMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGdW5jdGlvbkFsbG93bGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkY2QzM1QzFFNzFFQjA4
MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyRkRBQkMyMjc4ODA3NjkwMEMxNUI1OSAvKiBXYXNtSVJHZW5lcmF0b3JIZWxwZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdhc21JUkdlbmVyYXRvckhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMEE2MzQwMUZBM0UzMUMwMDI2QTU0
NSAvKiBTb3VyY2VzQ29jb2EudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNvdXJjZXNDb2Nv
YS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMEE2MzQxMUZBM0UzMUQwMDI2
QTU0NSAvKiBTb3VyY2VzLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTb3VyY2VzLnR4dDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMwQTY2QUQxRkEzRTc3NzAwMjZBNTQ1IC8q
IFVuaWZpZWRTb3VyY2UxNDQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gVW5pZmllZFNvdXJjZTE0NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDQuY3BwIjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTMwQTY2QUUxRkEzRTc3ODAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxMzkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
VW5pZmllZFNvdXJjZTEzOS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMzkuY3BwIjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTMwQTY2QUYxRkEzRTc3OTAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTE0MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDEuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJNTMwQTY2QjAxRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxNDUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmll
ZFNvdXJjZTE0NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNDUuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3Vy
Y2UzLW1tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gIlVuaWZp
ZWRTb3VyY2UzLW1tLm1tIjsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91
bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTMtbW0ubW0iOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzBBNjZCMjFGQTNFNzdCMDAyNkE1NDUgLyogVW5pZmllZFNv
dXJjZTEzNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVk
U291cmNlMTM3LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlm
aWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEzNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzBBNjZCMzFGQTNFNzdDMDAyNkE1NDUgLyogVW5pZmllZFNvdXJj
ZTE0MC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291
cmNlMTQwLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVk
LXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzBBNjZCNDFGQTNFNzdDMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTEz
OC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTM4LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTEzOC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzBBNjZCNTFGQTNFNzdEMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTUtbW0u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSAiVW5pZmllZFNvdXJj
ZTUtbW0ubW0iOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQt
c291cmNlcy9VbmlmaWVkU291cmNlNS1tbS5tbSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTUzMEE2NkI2MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2Ux
NDIuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291
cmNlcy9VbmlmaWVkU291cmNlMTQyLmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCTUzMEE2NkI3MUZBM0U3N0QwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNDMu
Y3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNl
cy9VbmlmaWVkU291cmNlMTQzLmNwcCI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9ICJVbmlmaWVkU291cmNlNC1t
bS5tbSI7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2U0LW1tLm1tIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJNTMwQTY2Q0MxRkIxMzQ2RDAwMjZBNTQ1IC8qIFN1cGVyU2FtcGxlckJ5dGVjb2Rl
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJTYW1wbGVyQnl0ZWNvZGVTY29wZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzBGQjMwMTFFN0EwQjZFMDAzQzE5REQgLyogV2Fz
bVdvcmtsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Xb3JrbGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzBGQjMwMzFFN0ExMTQ2MDAzQzE5
REQgLyogV2FzbVdvcmtsaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdhc21Xb3JrbGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMEZE
RTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0g
dGVzdEluY2x1ZGVzLm07IHBhdGggPSBBUEkvdGVzdHMvdGVzdEluY2x1ZGVzLm07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMTFCRDQ4MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01H
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT01HUGxh
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMTFCRDQ5MUVBNTgxRTUwMDUy
NTI4MSAvKiBXYXNtT01HUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtT01HUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzEzNzRCQzFENUNF
Njc2MDBBRjdBMEIgLyogV2FzbVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2FzbVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxMzc0QkUxRDVD
RTk1MDAwQUY3QTBCIC8qIFdhc21QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMx
ODA0NUIyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEIzRXh0cmFjdFZhbHVlLmg7IHBhdGggPSBiMy9CM0V4dHJhY3RWYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MzE4MDQ1RDIyRUFBRjBGMDA0QTczNDIgLyogQjNFeHRyYWN0
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNFeHRyYWN0VmFsdWUuY3BwOyBwYXRoID0g
YjMvQjNFeHRyYWN0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzFE
NEUxOTFGNTlDREQyMDBFQzgzNkMgLyogdGVzdGFwaS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0
ZXN0YXBpLmNwcDsgcGF0aCA9IEFQSS90ZXN0cy90ZXN0YXBpLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTMxRUU3QjkyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUVFN0JDMjJERTZFQzYw
MDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzMjYzMUIzMjE4Nzc3QTUwMDdCODE5MSAvKiBKYXZhU2NyaXB0Q29y
ZS5tb2R1bGVtYXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS5tb2R1bGUtbWFwIjsgcGF0aCA9IEph
dmFTY3JpcHRDb3JlLm1vZHVsZW1hcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMz
OEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2
MiAvKiBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExTZWxlY3RQcmVkaWN0YWJpbGl0eS5oOyBwYXRoID0gZnRsL0ZUTFNlbGVjdFBy
ZWRpY3RhYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzM0IxNURFMURD
N0Y0NjMwMDRENTAwQSAvKiBXYXNtT3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21PcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMzRDA3NDMyMkMy
RDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzNEMDc0NTIyQzJEODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9u
UmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMz
RDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MzQxRkM2RjFEQUMzM0U1MDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQxRkM3MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNDYzODcwMUU3MENGM0QwMEYxMkFD
MSAvKiBKU1J1bkxvb3BUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1J1bkxvb3BUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ2Mzg3MjFF
NzBEMDE1MDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8q
IERlZmVycmVkV29ya1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlZmVycmVkV29ya1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlw
ZWRBcnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFR5
cGVkQXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJheUNUZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8q
IFR5cGVkQXJyYXlDVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUeXBl
ZEFycmF5Q1Rlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0QzQ1N0ExQkM3MDNEQzAwNzQ3NkE3IC8qIFR5cGVk
QXJyYXlDb25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0QzQ1N0QxQkM3MjU0
OTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzREOUJGODIzNjNDNTVEMDA1NDUyNEQg
LyogU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IHBhdGggPSBTZXRJdGVyYXRvclByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTM0RDlCRjkyMzYzQzU1RDAwNTQ1MjREIC8qIEl0ZXJhdG9ySGVscGVycy5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEl0ZXJhdG9ySGVscGVycy5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM0RDlCRkEyMzYzQzU1RDAwNTQ1MjRE
IC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gTWFwSXRlcmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUzNEUwMzREMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc0Nhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTM0RTAzNEYxRTREOTVFRDAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzQ2FzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzNEUwMzUzMUU1M0JEMjkwMDIxM0Y2NCAvKiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTM0RTAzNTUxRTUzQkVERTAwMjEzRjY0IC8qIFByb3h5YWJsZUFjY2Vzc0Nhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJveHlhYmxlQWNjZXNzQ2FzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzRFMDM1NzFFNTNCRjJGMDAyMTNGNjQgLyog
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUzNTAzNTY0MjcxNDdFNTkwMEVDMUE3RSAvKiBTb3VyY2VJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb3VyY2VJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTM1NTU3MTMxRDlEOUVBNTAwNkQ1ODNCIC8qIFdhc21NZW1vcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU1lbW9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MzU1NTcxNTFEOURGQTMyMDA2RDU4M0IgLyogV2FzbU1lbW9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtTWVtb3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM1QzI0NkIxRjdBMTc3NzAwNkVDNDBFIC8qIFVuaWZpZWRT
b3VyY2UxMzYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmll
ZFNvdXJjZTEzNi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMzYuY3BwIjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJNTM1RTA4QzkyMjU0NjBBQjAwREYwMENBIC8qIHBvc3Rwcm9jZXNz
LWhlYWRlci1ydWxlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAicG9zdHByb2Nl
c3MtaGVhZGVyLXJ1bGUiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzYwREFCQjIz
NTZBRENBMDAzRjZBQjggLyogQnl0ZWNvZGVJbmRleC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
eXRlY29kZUluZGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM2NjNGRDky
MzU2MkY5MDAwNUVBNjhDIC8qIEJ5dGVjb2RlSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MzY5NkU1NzIwQTNBNzAyMDBEN0UwMUUgLyogQnl0ZWNvZGVTdHJ1Y3RzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlU3RydWN0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzZCMzA4NzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTExOS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291
cmNlMTE5LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVk
LXNvdXJjZXMvVW5pZmllZFNvdXJjZTExOS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzA4ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEy
NS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTI1LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTEyNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzA4OTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzMS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTMx
LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJj
ZXMvVW5pZmllZFNvdXJjZTEzMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzA4QTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyMi5jcHA7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2UyMi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzA4QjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM2LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzNi5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2UzNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzA4QzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM3LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzNy5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2Uz
Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA4RDFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyMy5jcHA7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyMy5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA4RTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzMC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTMwLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEzMC5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA4RjFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTI0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEyNC5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5MDFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTExOC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVbmlmaWVkU291cmNlMTE4LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExOC5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5MTFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTEzMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBVbmlmaWVkU291cmNlMTMyLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEzMi5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5MjFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTEyNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBVbmlmaWVkU291cmNlMTI2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEyNi5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5MzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTM1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2UzNS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5NDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTIxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2UyMS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzA5NTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2Uy
MC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2UyMC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzA5NjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzNC5jcHA7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2UzNC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzA5NzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTI3LmNwcDsgcGF0
aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmll
ZFNvdXJjZTEyNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzA5ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzMy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTMzLmNwcDsgcGF0aCA9
ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNv
dXJjZTEzMy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzA5OTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyMy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTIzLmNwcDsgcGF0aCA9ICJE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJj
ZTEyMy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5
QTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzMC5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzMC5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5QjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyNC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyNC5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5QzFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTE4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxOC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxOC5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5RDFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTE5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2UxOS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxOS5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5RTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTI1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2UyNS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzA5RjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTMxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2UzMS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzBBMDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEy
Mi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTIyLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTEyMi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzBBMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyMC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTIw
LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJj
ZXMvVW5pZmllZFNvdXJjZTEyMC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzBBMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTA4LmNw
cDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTEwOC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzBBMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI3LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyNy5jcHA7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZp
ZWRTb3VyY2UyNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzBBNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzMy5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2UzMy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBB
NTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UzMi5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzMi5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBNjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyNi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UyNi5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBNzFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTA5LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwOS5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBODFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTEyMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVbmlmaWVkU291cmNlMTIxLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEyMS5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBOTFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTgyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2U4Mi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4Mi5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTk2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2U5Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBBQjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTY5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2U2OS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2OS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzBBQzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQx
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0
MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2U0MS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzBBRDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU1LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1NS5jcHA7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2U1NS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzBBRTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1NC5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2U1NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzBBRjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0MC5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0
MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCMDFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2OC5jcHA7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2OC5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U5Ny5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5Ny5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCMjFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTgzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2U4My5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4My5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCMzFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTk1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFVuaWZpZWRTb3VyY2U5NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5NS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTgxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2U4MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4MS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzZCMzBCNTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTU2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2U1Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2U1Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzBCNjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0Mi5j
cHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2U0Mi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzBCNzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTguY3BwOyBwYXRo
ID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVk
U291cmNlOC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzBCODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTkuY3BwOyBwYXRoID0gIkRlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlOS5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCOTFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0My5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0My5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCQTFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTU3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1Ny5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U1Ny5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCQjFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTgwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2U4MC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4MC5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCQzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTk0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2U5NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBCRDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTkwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2U5MC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzBCRTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U4
NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2U4NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzBCRjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1My5jcHA7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2U1My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzBDMDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ3LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0Ny5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2U0Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzBDMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ2LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0Ni5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0
Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDMjFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1Mi5jcHA7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U1Mi5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDMzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U4NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4NS5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDNDFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTkxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2U5MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5MS5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDNTFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTg3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFVuaWZpZWRTb3VyY2U4Ny5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDNjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTkzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2U5My5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzZCMzBDNzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTQ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2U0NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2U0NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzBDODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1MC5j
cHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2U1MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzBDOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc4LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3OC5jcHA7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZp
ZWRTb3VyY2U3OC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzBDQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3OS5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2U3OS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBD
QjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUxLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1MS5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U1MS5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDQzFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U0NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0NS5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDRDFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTkyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U5Mi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5Mi5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDRTFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTg2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2U4Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4Ni5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBDRjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTQ4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2U0OC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0OC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBEMDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTYwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2U2MC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzBEMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3
NC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2U3NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzBEMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTIuY3BwOyBw
YXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9Vbmlm
aWVkU291cmNlMi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzBEMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTMuY3BwOyBwYXRoID0gIkRl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNl
My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBENDFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3NS5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBENTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2MS5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBENjFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTQ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2U0OS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U0OS5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBENzFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTg4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFVuaWZpZWRTb3VyY2U4OC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4OC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBEODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTc3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZp
ZWRTb3VyY2U3Ny5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5p
ZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzZCMzBEOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTYzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2U2My5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2U2My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzBEQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTEuY3Bw
OyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9V
bmlmaWVkU291cmNlMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzBEQjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2Mi5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2U2Mi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzBEQzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc2LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3Ni5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3
Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBERDFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U4OS5jcHA7IHBhdGggPSAiRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U4OS5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBERTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U5OS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5OS5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBERjFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTcyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2U3Mi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3Mi5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFMDFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTY2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFVuaWZpZWRTb3VyY2U2Ni5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmll
ZFNvdXJjZTQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZp
ZWQtc291cmNlcy9VbmlmaWVkU291cmNlNC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzBFMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJjZTUu
Y3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNl
cy9VbmlmaWVkU291cmNlNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzBFMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY3LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2Ny5jcHA7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZp
ZWRTb3VyY2U2Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzBFNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTczLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3My5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2U3My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBF
NTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U5OC5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U5OC5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFNjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2NS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2NS5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFNzFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTcxLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3MS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U3MS5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFODFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTU5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2U1OS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U1OS5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5p
ZmllZFNvdXJjZTcuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzZCMzBFQTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVW5pZmllZFNvdXJj
ZTYuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291
cmNlcy9VbmlmaWVkU291cmNlNi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzBFQjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU4LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U1OC5jcHA7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1Vu
aWZpZWRTb3VyY2U1OC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzBFQzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U3MC5jcHA7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2U3MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZC
MzBFRDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2U2NC5jcHA7IHBhdGggPSAiRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2
NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFRTFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTA0LmNwcDsgcGF0aCA9ICJEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwNC5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBFRjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTEwLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExMC5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNy5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNy5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGMTFGNzFDNTM4MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFVuaWZpZWRTb3VyY2UxNi5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxNi5jcHAiOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGMjFGNzFDNTM4MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTExMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBVbmlmaWVkU291cmNlMTExLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExMS5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTEwNS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBV
bmlmaWVkU291cmNlMTA1LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTExMy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlm
aWVkU291cmNlMTEzLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91
bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExMy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGNTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTEwNy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVk
U291cmNlMTA3LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlm
aWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzZCMzBGNjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTI4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3Vy
Y2UyOC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2UyOC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzBGNzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNC5j
cHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2Vz
L1VuaWZpZWRTb3VyY2UxNC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzBGODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE1LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxNS5jcHA7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZp
ZWRTb3VyY2UxNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzBGOTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UyOS5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2UyOS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBG
QTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTA2LmNwcDsgcGF0aCA9ICJEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEw
Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGQjFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTEyLmNwcDsgcGF0aCA9ICJEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExMi5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGQzFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE2LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNi5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGRDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTAyLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwMi5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGRTFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTExLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMS5jcHAiOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzBGRjFGNzFDNTM4MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTM5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFVuaWZpZWRTb3VyY2UzOS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzOS5jcHAiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEwMDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTM4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVu
aWZpZWRTb3VyY2UzOC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
dW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UzOC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEwMTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTEwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRT
b3VyY2UxMC5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmll
ZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzZCMzEwMjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEw
My5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTAzLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTEwMy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzZCMzEwMzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExNy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE3
LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJj
ZXMvVW5pZmllZFNvdXJjZTExNy5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzZCMzEwNDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTAxLmNw
cDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTEwMS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzZCMzEwNTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExNS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE1LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTExNS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzZCMzEwNjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyOS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTI5LmNwcDsgcGF0
aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmll
ZFNvdXJjZTEyOS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzZCMzEwNzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMi5jcHA7IHBhdGggPSAi
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2UxMi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEw
ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMy5jcHA7IHBhdGggPSAiRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMy5j
cHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEwOTFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyOC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTI4LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEyOC5jcHAi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEwQTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExNC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTE0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTExNC5jcHAiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzEwQjFGNzFDNTM4MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTAwLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTEwMC5jcHAiOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzZCMzE5NjFGNzM1RTVCMDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTItbW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSAiVW5pZmllZFNvdXJjZTItbW0ubW0iOyBwYXRoID0gIkRlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMi1tbS5tbSI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUzNkIzMTk3MUY3MzVFNUIwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMTM0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFVuaWZpZWRTb3VyY2UxMzQuY3BwOyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL3VuaWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlMTM0LmNwcCI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUzNkIzMTk4MUY3MzVFNUMwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9ICJVbmlmaWVkU291cmNlMS1tbS5tbSI7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxLW1tLm1tIjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTM2QjMxOTkxRjczNUU1RDAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gVW5pZmllZFNvdXJjZTEzNS5jcHA7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2UxMzUuY3BwIjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTM2QjMxOUYxRjczNjlCRDAwMzdGQzMz
IC8qIGdsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmb2xkZXI7IHBhdGggPSBnbGliOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Mzcw
QjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRj
aHBvaW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzczQjREMzIyQUQ4QkY3MDA4MDM1NzIg
LyogV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrT2Jq
ZWN0UmVmUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM3M0I0
RDQyMkFEQjMxNDAwODAzNTcyIC8qIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MzgxQjkzNjFFNjBFOTY2MDA5MEY3OTQgLyogV2FzbUZhdWx0U2ln
bmFsSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM4
MUI5MzgxRTYwRTk3RDAwOTBGNzk0IC8qIFdhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzhGMTVERDI2OEZCQkIzMDBENjAxQzQgLyogVW5p
ZmllZFNvdXJjZTE0OC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBV
bmlmaWVkU291cmNlMTQ4LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE0OC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzhGMTVERTI2OEZCQkIzMDBENjAxQzQgLyogVW5pZmll
ZFNvdXJjZTE1MS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlm
aWVkU291cmNlMTUxLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91
bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE1MS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk1MzhGMTVERjI2OEZCQkIzMDBENjAxQzQgLyogVW5pZmllZFNv
dXJjZTE1Mi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVk
U291cmNlMTUyLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlm
aWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZTE1Mi5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1MzhGMTVFMDI2OEZCQkI0MDBENjAxQzQgLyogVW5pZmllZFNvdXJj
ZTE1NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291
cmNlMTU0LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVk
LXNvdXJjZXMvVW5pZmllZFNvdXJjZTE1NC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MzhGMTVFMTI2OEZCQkI0MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1
MC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNl
MTUwLmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNv
dXJjZXMvVW5pZmllZFNvdXJjZTE1MC5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MzhGMTVFMzI2OEZCQkI1MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1My5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTUz
LmNwcDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJj
ZXMvVW5pZmllZFNvdXJjZTE1My5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQk1MzhGMTVFNDI2OEZCQkI1MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0Ny5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ3LmNw
cDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMv
VW5pZmllZFNvdXJjZTE0Ny5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQk1MzhGMTVFNTI2OEZCQkI1MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTU1LmNwcDsg
cGF0aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5p
ZmllZFNvdXJjZTE1NS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MzhGMTVFNjI2OEZCQkI2MDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0OS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ5LmNwcDsgcGF0
aCA9ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmll
ZFNvdXJjZTE0OS5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MzhGMTVGMTI2OEZCQzdCMDBENjAxQzQgLyogVW5pZmllZFNvdXJjZTE0Ni5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBVbmlmaWVkU291cmNlMTQ2LmNwcDsgcGF0aCA9
ICJEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNv
dXJjZTE0Ni5jcHAiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1Mzkx
N0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzkxN0U4MzFCNzkxQ0I4
MDAwRUJEMzMgLyogVHlwZWRBcnJheVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgbmFtZSA9IFR5cGVkQXJyYXlQcm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTUzOTkzMEM3MjJBRDNCOUEwMDUxQ0RFMiAvKiBXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzOUJGQkFEMjJBRDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVm
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtPYmplY3RSZWZQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM5QkZCQUYyMkFEM0NEQzAwMjNGNEMwIC8qIEpT
V2Vha09iamVjdFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtPYmplY3RSZWYuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM5QkZCQjEyMkFEM0Q4QzAwMjNGNEMwIC8qIEpTV2Vh
a09iamVjdFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtPYmplY3RSZWYuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzlERDdGMzIzQzFCQkE5MDA5MDVGMTMgLyog
SlNBcnJheUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQXJyYXlJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzOURE
N0Y0MjNDMUJCQTkwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1M0IwQkUzMzFFNTYxQUM5MDBBOEZDMjkgLyogR2V0dGVy
U2V0dGVyQWNjZXNzQ2FzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTNCMEJFMzUxRTU2MUIwOTAwQThGQzI5IC8qIFByb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlhYmxlQWNjZXNzQ2FzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzQjBCRTM3MUU1NjFCMjQwMEE4RkMy
OSAvKiBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1M0I2MDFFQjIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ2FzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
M0MyQ0U5QjIyRkNDM0Q2MDA4QjI4NTMgLyogQWlySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
aXJIZWxwZXJzLmg7IHBhdGggPSBiMy9haXIvQWlySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1M0MzRDVFNDIxRUNFNkNFMDA4N0ZERkMgLyogYmFzaWMuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBiYXNpYy5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTNDM0Q1RTYyMUVEMUMwNTAwODdGREZDIC8qIEpTQVBJR2xvYmFs
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQVBJR2xvYmFsT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNDNEY2NkEyMUIxQTQwOTAwMkZEMDA5IC8qIEpT
QVBJR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQVBJR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzQzRGNjZDMjFCMUE3Q0EwMDJGRDAwOSAvKiBK
U0FQSUdsb2JhbE9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTQVBJR2xvYmFsT2Jq
ZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0M2RkVFRTFFOEFERkE5MDBC
MTg0MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtT3Bjb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
QzZGRUYwMUU4QUZFMEMwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21PcGNvZGVPcmlnaW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1M0NBNzMwNzFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJC
UVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUJCUVBs
YW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0NBNzMwODFFQTUzM0Q4MDA3
NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUJCUVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNEMzU0OTcyNDBE
ODhBRDAwODk1MEREIC8qIEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAv
KiBCeXRlY29kZVVzZURlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCeXRlY29kZVVzZURlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQx
RUM4MjNDMDA4MTAwMEFFOTg0QiAvKiBJdGVyYXRpb25Nb2RlTWV0YWRhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRDQ0NERCMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21B
ZGRyZXNzVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNXYXNtQWRk
cmVzc1ZhbHVlLmg7IHBhdGggPSBiMy9CM1dhc21BZGRyZXNzVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTNENDQ0REQxREFGMDlBMDAwQjkyNzg0IC8qIEIzV2FzbUFkZHJl
c3NWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1dhc21B
ZGRyZXNzVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNXYXNtQWRkcmVzc1ZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNFMUY4RjcyMTU0NzE0OTAwMDFEREJDIC8qIEpTVmFs
dWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRTc3N0UxMUU5MkUyNjUwMDdD
QkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTNFNzc3RTIxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZv
cm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTW9kdWxlSW5m
b3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNFOUUwQTkxRUFFODNE
RTAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtTWFjaGluZVRocmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1M0U5RTBBQTFFQUU4M0RFMDBGRUUyNTEgLyogV2FzbU1hY2hpbmVUaHJl
YWRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21NYWNoaW5lVGhyZWFk
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0U5RTBBRTFFQUVDNDU3MDBGRUUy
NTEgLyogV2FzbVRpZXJVcENvdW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21UaWVyVXBDb3VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0VFMDFC
NDIxOEY2OTBFMDBBRDFGOEQgLyogSlNTY3JpcHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBKU1NjcmlwdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTNFRTAxQjUyMThGNjkwRjAwQUQxRjhEIC8qIEpTU2NyaXB0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzRUUwMUI3MjE4RjdFRkYwMEFEMUY4RCAvKiBKU1NjcmlwdEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0SW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNGMTFGNDAyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1tdXRh
YmxlQnV0dGVyZmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjExRjQyMjA5MTc0OTgwMEU0MTFBNyAvKiBK
U0ltbXV0YWJsZUJ1dHRlcmZseS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltbXV0YWJsZUJ1
dHRlcmZseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjI1NkUxMUI4N0Uy
ODAwMEI0Qjc2OCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0Y0MEU4NDFENThGOTc3MDA5OUExQjYgLyog
V2FzbVNlY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TZWN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0Y0MEU4QTFENTkwMUJCMDA5
OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdhc21GdW5jdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQjNJUkdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0ZBMkFFMDFD
RjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdE
MyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVu
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDgxREI2OUU1QzAw
RUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0FzeW5jRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3
MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRC
MURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyog
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCODI0MzA0MURC
N0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQTc3QUQyMkYyNDdDOTAwMzgyN0ZGIC8qIHRl
c3RiM183LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RiM183
LmNwcDsgcGF0aCA9IGIzL3Rlc3RiM183LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUMzQTc3QUUyMkYyNDdDQTAwMzgyN0ZGIC8qIHRlc3RiM180LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RiM180LmNwcDsgcGF0aCA9IGIzL3Rlc3RiM180
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQTc3QUYyMkYyNDdDQTAwMzgy
N0ZGIC8qIHRlc3RiM182LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IHRlc3RiM182LmNwcDsgcGF0aCA9IGIzL3Rlc3RiM182LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUMzQTc3QjAyMkYyNDdDQjAwMzgyN0ZGIC8qIHRlc3RiM181LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RiM181LmNwcDsgcGF0aCA9IGIz
L3Rlc3RiM181LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQTc3QjEyMkYy
NDdDQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHRlc3RiM18zLmNwcDsgcGF0aCA9IGIzL3Rlc3RiM18zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQTc3QjIyMkYyNDdDQjAwMzgyN0ZGIC8qIHRlc3RiM18y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RiM18yLmNwcDsg
cGF0aCA9IGIzL3Rlc3RiM18yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMz
QTc3QjMyMkYyNDdDQjAwMzgyN0ZGIC8qIHRlc3RiM184LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3RiM184LmNwcDsgcGF0aCA9IGIzL3Rlc3RiM184LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzQTc3QkIyMkYyNDg5MDAwMzgyN0ZGIC8q
IHRlc3RiMy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSB0ZXN0YjMuaDsgcGF0
aCA9IGIzL3Rlc3RiMy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzQxOTY2MTIy
NzBERkYzMDA0N0I3Q0QgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJDb21wYXRpYmlsaXR5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTT05QYXJzZVRlc3QuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzRFOEU5NTFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBKU09OUGFyc2VUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
SlNPTlBhcnNlVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RDVEOEFEMDBF
MEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0g
bGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07CisJCTVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyog
UmVnaXN0ZXJNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjI3NjczMjExQjY4MEMxRTAwRkQ5
RjJFIC8qIENhbGxNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbGxNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjI3NjczMjIxQjY4
MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbGxNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyQTlBMjlFMUIw
QkVENDgwMEJENTRDQSAvKiBERkdMYXp5Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdMYXp5Tm9kZS5jcHA7IHBhdGggPSBkZmcvREZHTGF6eU5vZGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MkE5QTI5RjFCMEJFRDQ4MDBCRDU0Q0Eg
LyogREZHTGF6eU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTGF6
eU5vZGUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdW5jdGlvblJhcmVEYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMx
IC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RnVuY3Rpb25SYXJlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MkQ3NTVE
MDFCODRGQjM5MDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2MkQ3NTVEMTFCODRGQjM5MDAxODAxRkEgLyogQ2FsbEZyYW1l
U2h1ZmZsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lU2h1
ZmZsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjJENzU1RDIxQjg0RkIzOTAw
MTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEZyYW1lU2h1ZmZsZXIzMl82NC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTYyRDc1NUQzMUI4NEZCMzkwMDE4MDFGQSAvKiBDYWxsRnJhbWVT
aHVmZmxlcjY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxG
cmFtZVNodWZmbGVyNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MkUzRDVF
RjFCOEQwQjczMDBCODY4QkIgLyogRGF0YUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEYXRhRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjJFQzlCQjQxQjdFQjA3QzAwMzAzQUQxIC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxGcmFtZVNodWZmbGVE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjJFQzlCQjUxQjdFQjA3QzAw
MzAzQUQxIC8qIENhbGxGcmFtZVNodWZmbGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbGxGcmFtZVNodWZmbGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdGVzdFJlZ0V4cC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0
UmVnRXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSB0
ZXN0UmVnRXhwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk2NTE0RjIx
NzE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTE0
RjIxODE4QjNFMTY3MDA5OEZGOEIgLyogSW5pdEJ5dGVjb2Rlcy5hc20gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IHBh
dGggPSBJbml0Qnl0ZWNvZGVzLmFzbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjUy
QTNBMjAxNjUxQzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFSTTY0RGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9
IGRpc2Fzc2VtYmxlci9BUk02NERpc2Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1MkEzQTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEE2NERPcGNvZGUuY3BwOyBwYXRoID0g
ZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBNjRET3Bjb2RlLmg7IHBhdGggPSBkaXNhc3NlbWJs
ZXIvQVJNNjQvQTY0RE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTMw
M0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2NTNCQzQzRTI2RDAxM0E2MDBEOEJFMjAgLyogWWFyckpJVFJlZ2lzdGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJySklUUmVnaXN0ZXJzLmg7IHBhdGggPSB5
YXJyL1lhcnJKSVRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU0
MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NTQwQzc5QzFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9m
ZnNldExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTQwQzc5
RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjU0MEM3OUUxQjgyRDlDRTAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRP
ZmZzZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJB
dE9mZnNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NDBDNzlGMUI4MkQ5
Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ2lzdGVyQXRPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNjU0NkY1MUYxQTMyQTU5QzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CisJCTY1NDZGNTIwMUEzMkE1
OUMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTnVsbEdldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1NDc4ODQyMUM5MzdEMkMwMDA3ODFBMCAvKiBSZWdFeHBQcm90b3R5cGUuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWdFeHBQcm90b3R5cGUuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NTI1RkMzMUE2REQzQjMwMDdCNTQ5NSAv
KiBOdWxsU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTnVsbFNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNjU1MjVGQzQxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdWxsU2V0dGVyRnVuY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU1NzBGNTgxQUE0QzAwQTAwOUIzQzIzIC8qIFJlZ3Jl
c3MxNDEyNzUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVncmVzczE0MTI3
NS5oOyBwYXRoID0gQVBJL3Rlc3RzL1JlZ3Jlc3MxNDEyNzUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU1NzBGNTkxQUE0QzAwQTAwOUIzQzIzIC8qIFJlZ3Jlc3MxNDEyNzUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZWdyZXNzMTQxMjc1Lm1t
OyBwYXRoID0gQVBJL3Rlc3RzL1JlZ3Jlc3MxNDEyNzUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNDb2RlZ2VuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENv
cmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQk2NTYyMUU2QjA4
OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5U2xvdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjU2MjFFNkMwODlFODU5NzAw
NzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB9OworCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxs
ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWxsZWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIg
LyogSlNDYWxsZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWxsZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU4NjAxNzcxODVBOEY1RTAwMDMwRUVF
IC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmZpZ0ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU4ODI0QjAxRTVDRkRGNDAwRkI3MzU5IC8qIENvbmZp
Z0ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uZmlnRmls
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1OEQzQTU1MTk2MzgyNjgwMDND
NDVENiAvKiBWTUVudHJ5UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVu
ZGluZyA9IDA7IHBhdGggPSBWTUVudHJ5UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9
OworCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0Q29tcGlsYXRp
b25JbmZvLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2Vk
UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbnVzZWRQb2ludGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1OUNEQTU5MUY2NzUwOTgwMEQzRTUz
RiAvKiBZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcDsgcGF0aCA9IHlhcnIvWWFyclVu
aWNvZGVQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5Q0RB
NUExRjY3NTA5ODAwRDNFNTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyVW5pY29kZVByb3BlcnRpZXMuaDsgcGF0aCA9IHlh
cnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1QTk0NjEzMUM4RTlGMjAwMEE3MjA5QSAvKiBnZW5lcmF0ZVlhcnJDYW5vbmljYWxpemVVbmlj
b2RlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJhdGVZYXJyQ2Fu
b25pY2FsaXplVW5pY29kZTsgcGF0aCA9IHlhcnIvZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5p
Y29kZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVBOTQ2MTQxQzhFOUY2RjAwQTcy
MDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFlhcnJDYW5vbmljYWxpemVVbmljb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjVCODM5MkMxQkFDQTkyQTAwNDRFODI0IC8qIENhY2hlZFJlY292
ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlY292ZXJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QjgzOTJEMUJBQ0E5RDMwMDQ0RTgyNCAv
KiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZWRSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1Qjg5
OEFEMjMxNDZFOUIwMDQ3NjM1OCAvKiBhcm02NGUucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5y
dWJ5OyBwYXRoID0gYXJtNjRlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUMw
MkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJvdGVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJNjVDNkJFREYyMTEyOEMzQjAwNjg0OUMzIC8qIFlh
cnJEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
WWFyckRpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUM2QkVFMDIxMTI4QzNCMDA2ODQ5QzMgLyog
WWFyckRpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJy
RGlzYXNzZW1ibGVyLmg7IHBhdGggPSB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDN0ExNzEwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBl
ck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcmFw
cGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDN0ExNzIwQThF
QUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXcmFwcGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTY1REE5MDQ2MUY4NzA1MkEwMDlCQzU0NiAvKiBnZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVy
dHlUYWJsZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5lcmF0
ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk7IHBhdGggPSB5YXJyL2dlbmVyYXRlWWFyclVu
aWNvZGVQcm9wZXJ0eVRhYmxlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVF
ODY2RUQwREQ1OUFGQTAwQTJCMkExIC8qIFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1RUE0Qzk5MDkyQUY5RTIwMDkzRDgwMCAvKiBKU0xvY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNMb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk2NUVBNEM5QTA5
MkFGOUUyMDA5M0Q4MDAgLyogSlNMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IH07CisJCTY1RUE3MzYyMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbW9u
SWRlbnRpZmllcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUVBNzM2MzBC
QUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b0NhbGxGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2QTM4Q0ZBNzFFMzJCNThCMDA2MDIwNkYgLyogQXN5bmNT
dGFja1RyYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
U3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZBMzhDRkE4MUUz
MkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZBRDJDQjRDMTlCOTE0MDEwMDA2NTcxOSAvKiBEZWJ1Z2dlckV2YWxFbmFibGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyRXZhbEVuYWJsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkIyMzYwQ0QyNkM2MjUzQzAwNTRBRUVDIC8qIEpJ
VE9wZXJhdGlvblZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SklUT3BlcmF0aW9uVmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
QjczMUNDMDI2NDdBODM3MDAxNDY0NkYgLyogU2xvd1BhdGhDYWxsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNsb3dQYXRoQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZC
NzY3RTdBMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkE5M0M5NTkwNDg0QzVCQUQ5MzE2RUEgLyog
SlNTY3JpcHRGZXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2Ny
aXB0RmV0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QkNDRUMwMzI1RDFG
QTI3MDAwRjM5MUQgLyogVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmVyaWZpZXJTbG90VmlzaXRvcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzAxMTNENDkxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
dGVyYXRvck9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDEx
M0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yT3BlcmF0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MDEzQ0E4OTFCNDkxQTk0MDBDQUU2MTMgLyogSlNNaWNyb3Rhc2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNaWNyb3Rhc2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDEzQ0E4QTFCNDkxQTk0MDBDQUU2MTMg
LyogSlNNaWNyb3Rhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNaWNy
b3Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzAzNTU4N0MxQzQxODQxOTAw
NEJEN0JGIC8qIE1hcFByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IE1hcFByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzAzNTU4N0QxQzQxODQxOTAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFNldFByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzAzNTU4N0UxQzQxODQ1ODAwNEJEN0JGIC8qIE1hcFByb3RvdHlw
ZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwUHJvdG90eXBlLmx1
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDM1NTg3RjFDNDE4NDU4MDA0QkQ3
QkYgLyogU2V0UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNEZE
MzUzMDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk3MDVCNDFBMzFBNkU1MDFFMDA3
MTY3NTcgLyogU3ltYm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN5bWJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNUI0MUE0MUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNUI0MUE1MUE2RTUwMUUw
MDcxNjc1NyAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTeW1ib2xDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwNUI0MUE2MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xDb25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDVCNDFBNzFBNkU1MDFFMDA3MTY3NTcgLyog
U3ltYm9sT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5
bWJvbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNUI0MUE4MUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3ltYm9sT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
NUI0MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA4RUJFMjMxQ0U4RjM1MDAwNDUz
MTQ2IC8qIEludGxPYmplY3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcw
OTRDNERDMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDk0QzRERDFBRTQzOTUz
MDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA5RkI4NjIxQUUzMzVDNjAwMzlEMDY5IC8q
IEpTV2Vha1NldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA5RkI4NjMxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrU2V0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MDlGQjg2NDFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRDb25zdHJ1Y3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA5RkI4
NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3
OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4ODFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxODkxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5l
cmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEI3OTE4
QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEI3OTE4QzFDMDI0NDYyMDAyNDgxRTIgLyogSlNHZW5lcmF0b3JGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBCNzkxOEQxQzAy
NDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBH
ZW5lcmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwQjc5
MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBEQzNFMDcxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJh
dG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEl0
ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBEQzNF
MDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50QXNzZW1ibHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3Ry
aW5nSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
dHJpbmdJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUJE
MUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzBFQzBFQzAxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQzBFQzEx
QUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAwMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEVDQTYwNDFB
RkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjEzMUJGMzI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Fm
ZXBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFNhZmVw
b2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTMxQkY0MjY1ODdFRjIw
MDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUU2Nhbm5hYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTMxQkY1
MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklUU2FmZXBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyMTMxQkY2MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFuU3RhZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSklUUGxhblN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyMTMxQkZCMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUV29ya2xpc3RJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAv
KiBCYXNlbGluZUpJVFBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFz
ZWxpbmVKSVRQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzk5OEY2MjY1
REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzZWxpbmVKSVRQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI2QjkxQTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0VGhyZWFkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNkI5MUFBMjY1ODE2NTMwMDhFNkY4MiAv
KiBKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFBs
YW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjZCOTFBQjI2NTgxNjUzMDA4
RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVENvbXBpbGF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MjZCOTFBQzI2NTgxNjUzMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUV29ya2xpc3RUaHJlYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjZCOTFBRTI2NTgxNjUzMDA4RTZGODIgLyog
SklUQ29tcGlsYXRpb25Nb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVENvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyNkI5MUFGMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVFBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI2QjkxQjgyNjU4MjYzQzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uS2V5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcyNkI5MUI5MjY1ODI2M0MwMDhFNkY4MiAvKiBKSVRDb21waWxh
dGlvbktleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRDb21w
aWxhdGlvbktleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMxMjQw
REIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRl
QnlWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIy
NDkwMDNENDhEQiAvKiBEZWxldGVCeVZhcmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVs
ZXRlQnlWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYy
NDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERlbGV0ZUJ5U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzM0QjY1
NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzNFMzc5OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmNwcDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5MDA4MTM2MUU5NUE4RUMwMDUy
RDdDRCAvKiBXYXNtTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdhc21Nb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTAwODEz
NzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5
MDVCQjY2MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lQWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzkwNUJCNjcxRDEyMDUwRTAwMTlGRTU3IC8qIElubGluZUFjY2Vzcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVBY2Nlc3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzkxNjBEQkIxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5
UmV2b2tlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3h5UmV2
b2tlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzkxNjBEQkMxQzhFM0VDODAw
OEMwODVBIC8qIFByb3h5UmV2b2tlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByb3h5UmV2b2tlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5MTlCNzdGMUUw
MzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNDb21waWxlLmg7IHBhdGggPSBiMy9CM0NvbXBpbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzkyMzNDMjkxRDM0NzE1NzAwQzVBODM0IC8qIEpJVE1hdGhJQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRNYXRoSUMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzkyODFCREMyMEI2MkIzRTAwMkUyQTYwIC8qIHRlc3RtZW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RtZW07IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTc5MkNCMzQ3MUM0RUVENUMwMEQx
M0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQQ1RvQ29kZU9yaWdpbk1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc5MkNCMzQ4MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQ1RvQ29kZU9yaWdpbk1hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTU0QkUwQTIwQjYyRDYzMDA5QkM4M0EgLyogdGVz
dG1lbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IHRlc3RtZW0u
bW07IHBhdGggPSB0ZXN0bWVtL3Rlc3RtZW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTc5NUFDNjE3MjBBMjM1NEIwMDUyQzc2QyAvKiBKU1ZpcnR1YWxNYWNoaW5lUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1ZpcnR1YWxNYWNoaW5lUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OTVGMDk5QzFFMDM2MDA1MDBCQkUzN0YgLyogQjNDb21waWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ29tcGlsZS5jcHA7IHBh
dGggPSBiMy9CM0NvbXBpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTY0
NjU2ODFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZXRQdXRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTc5NjVDMjE0MUU1RDc5OTYwMEI3NTkxRCAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhD
b2xvcmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJBbGxv
Y2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHA7IHBhdGggPSBiMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3OTY1QzIxNTFFNUQ3OTk2MDBCNzU5MUQgLyogQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdy
YXBoQ29sb3JpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaDsgcGF0aCA9IGIzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0J5R3JhcGhDb2xvcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
OTZEQUEyQTFFODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsZWVCaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTc5NkZCNDM5MURGRjhDM0YwMDM5Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5SGVscGVycy5oOyBw
YXRoID0ganMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzk3RTA3QTcxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzk3RTA3
QTgxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAv
KiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuY3BwOyBwYXRoID0gZGZnL0RG
R1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3OTgwQzE2QjFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZWdpc3RlcmVkU3RydWN0dXJl
U2V0Lmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3OTg2OTQzOTFGOEMwQUM3MDA5MjMyQUUgLyogU3RydWN0dXJl
Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlQ2FjaGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3OTg2OTQzQTFGOEMwQUM4MDA5MjMyQUUgLyogU3RydWN0
dXJlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzk4NzJDNDcyMjFCQkFFRDAwOEM2OTY5IC8qIEpTQmFzZUludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmFzZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc5OUVGN0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNQQ1RvT3JpZ2luTWFwLmg7IHBh
dGggPSBiMy9CM1BDVG9PcmlnaW5NYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzlBMDkwN0QxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hNYXBJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzlBMDkwN0UxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hNYXBJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5QTIyODMzMUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFBy
b2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJpdGhQcm9m
aWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBMjI4MzQxRDM1RDcxRTAw
RDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcml0aFByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlBODk5RkUx
RDM4NjEyRTAwRDE4QzczIC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVE1hdGhJQ0ZvcndhcmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTc5QUJCMTdCMUU1Q0NCNTcwMDQ1QjlBNiAvKiBBaXJEaXNhc3NlbWJsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWlyRGlzYXNzZW1ibGVyLmNw
cDsgcGF0aCA9IGIzL2Fpci9BaXJEaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3OUFCQjE3QzFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckRpc2Fzc2VtYmxlci5oOyBwYXRo
ID0gYjMvYWlyL0FpckRpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3OUFDMzBGRTFGOTk1MzYzMDA0ODRGRDcgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUFGMEJFMzFE
M0VGRDRDMDBFOTVGQTUgLyogSklUTWF0aElDSW5saW5lUmVzdWx0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OUIwMENCODFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm94eUNvbnN0
cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlCMDBDQjkxQzZBQjA3
RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJveHlDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3OUIwMENCQTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJveHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OUIwMENCQjFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJveHlPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlCNzU5NzExREZBNEM2MDAwNTIxNzRDIC8qIFdhc21N
ZW1vcnlJbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3OUI3NTk3MjFERkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21NZW1vcnlJbmZvcm1hdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUI3NTk3MzFERkE0QzYwMDA1MjE3NEMgLyog
V2FzbVBhZ2VDb3VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGFn
ZUNvdW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5QjgxOTkyMUREMjVDRjUw
MEREQzcxNCAvKiBKU0dsb2JhbE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTc5QzRCMTVCMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OUM0QjE1QzFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNo
VmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcv
REZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3OUNGQzZFRjFDMzNCMTAwMDBDNzY4RUEgLyogTExJbnRQQ1Jhbmdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFBDUmFuZ2VzLmg7IHBhdGgg
PSBsbGludC9MTEludFBDUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5
RDVDRDU4MUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nUHJvZmlsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3OUQ1Q0Q1OTFDMTEwNkE5MDBDRUNBMDcgLyogU2FtcGxp
bmdQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ1By
b2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5RDdCMEUxMjExNTJGRDIw
MEZFN0M2NCAvKiBlbnRpdGxlbWVudHMucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IGVudGl0bGVtZW50
cy5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlEQUUyNzkxRTAzQzgyMjAw
QjUyNkFBIC8qIFdhc21FeGNlcHRpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdhc21FeGNlcHRpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTc5REZDQkRBMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNPd25Qcm9wZXJ0eUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc093blByb3BlcnR5Q2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlFRTBCRkQxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlh
YmxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VmFyaWFibGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5
RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhcmlhYmxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lz
dGVyZWRTdHJ1Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5Nzc0QTYyMDZCODI4QzAwOEQwM0QwIC8q
IEpTV2Vha1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2Vha1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5Nzc0QTcyMDZC
ODJDOTAwOEQwM0QwIC8qIEpTV2Vha1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2Vha1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQzU0
N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21Gb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MwMDhDRTUxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNaWNyb3Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MxODRFMTgxN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb21pc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7
IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4
Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJ
N0MxODRFMUQxN0JFRTIyRTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGlu
ZyA9IDA7IHBhdGggPSBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3Bw
OyB9OworCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjQxN0JGRkEzNjAwN0NCNjNB
IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VD
b25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMjUx
N0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1Y3Rvci5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IEFycmF5Q29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDRjlCQzU5MUI2NUQ5QTMwMDlEQjFFRiAvKiBBcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8q
IEdsb2JhbE9iamVjdC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEdsb2JhbE9iamVjdC5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NGOUJDNUIxQjY1RDlBMzAwOURCMUVGIC8q
IEl0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSXRlcmF0b3JQcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRjlCQzVDMUI2NUQ5QjEw
MDlEQjFFRiAvKiBPYmplY3RDb25zdHJ1Y3Rvci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE9i
amVjdENvbnN0cnVjdG9yLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0Y5QkM1
RDFCNjVEOUIxMDA5REIxRUYgLyogUHJvbWlzZU9wZXJhdGlvbnMuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBQcm9taXNlT3BlcmF0aW9ucy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0NGOUJDNUUxQjY1RDlCMTAwOURCMUVGIC8qIFByb21pc2VDb25zdHJ1Y3Rvci5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0NGOUJDNUYxQjY1RDlCMTAwOURCMUVGIC8qIFJlZmxlY3RPYmplY3Qu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3Q0Y5QkM2MDFCNjVEOUIxMDA5REIxRUYgLyogU3RyaW5nQ29uc3Ry
dWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTdHJpbmdDb25zdHJ1Y3Rvci5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NGOUJDNjExQjY1RDlCMTAwOURCMUVGIC8qIFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRkJBQzFD
MThCNTM1RTUwMEQwMDc1MCAvKiBQcm9taXNlUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUHJvbWlzZVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0Q1RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Q1RkIxOEUyMDc0NEJGMDAwNURERjY0
IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Q1RkIxOEYyMDc0NEJGMTAwNURERjY0IC8qIEludGxQbHVy
YWxSdWxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUGx1
cmFsUnVsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RDVGQjE5MDIwNzQ0
QkYxMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0Q1RkIxOTEyMDc0NEJGMTAwNURERjY0IC8qIEludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3RDVGQjE5MjIwNzQ0QkYyMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxQbHVyYWxSdWxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0
dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hh
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0U0RUU3MEUwRUJCN0E1QjAwNTkz
NEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODQzMjNFN0IyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyog
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg0MzIzRTdEMjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3RTI1RDVFQzZBMDBG
OTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0
OTI1QTlDMjJCMzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAxNjFE
RjBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fz
c2VtYmxlclg4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclg4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAxNjFFMjBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkEyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1Jl
YWxtUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YWRvd1JlYWxtUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYw
Mjk1RkIyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1JlYWxtT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
ZG93UmVhbG1Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjAy
OTVGRDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYwMjk1RkUyNkZCNTUyRDAwNzhFQjYy
IC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNoYWRvd1JlYWxtT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MDI5
NUZGMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFsbVByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9n
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bGluZUVuZGluZyA9IDA7IHBhdGggPSBDaGFuZ2VMb2c7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVySW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0Y2hSZXN1bHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYxNThBQjIxNTVDOEIzRjAwQjQ1QzlD
IC8qIFByb3BlcnR5TmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9w
ZXJ0eU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYxODE2NzYxRkI3OTIy
RjAwRUNDNEVDIC8qIEJpZ0ludE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnRPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYxODE2NzgxRkI3OTMxMzAwRUNDNEVD
IC8qIEJpZ0ludE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaWdJbnRPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjFBRjYwNjI1RDE4QzlEMDAwQjYzRTEg
LyogQnJhbmRlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmFuZGVkU3RydWN0dXJlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjU1M0NFMTYxMzZBQTUwMDlGMTdEMCAv
KiBKU1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjI1NTNDRjE2MTM2QUE1MDA5
RjE3RDAgLyogSlNQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1By
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUVGMjVCNjE2MDAwMDM2
NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hlY2tQ
cml2YXRlQnJhbmRWYXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Mjgx
RUYxMjVCNjE2NUUwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFuZFZhcmlhbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODYyODFFRjMyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2MjgxRUY1MjVCNjFCMDYwMDM2NzAwNCAv
KiBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGVja1By
aXZhdGVCcmFuZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0Iy
M0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fu
b25pY2FsaXplVUNTMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZ
YXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1My
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYzQzZEOTkxNTIxMTExMjAwNTg1
RTRFIC8qIFlhcnJDYW5vbmljYWxpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gWWFyckNhbm9uaWNhbGl6ZS5oOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0M2RDlBMTUyMTExMTIwMDU4NUU0RSAvKiBZ
YXJyQ2Fub25pY2FsaXplVUNTMi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IFlhcnJDYW5vbmljYWxpemVVQ1MyLmpzOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2Fs
aXplVUNTMi5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYzRkJDNTcyNUIwOTNC
ODAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdhc21WYWx1ZUxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODYzRkJDNTgyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21WYWx1ZUxvY2F0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAv
KiBBUk02NEFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk02
NEFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjQwOTIzQjE1NkVF
RDNCMDA1NjZDQzIgLyogQVJNNjRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVJNNjRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODY0MDkyM0MxNTZFRUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNW
YWx1ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDSlNWYWx1
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzQyNUI4OTU3
NDAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFuZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0
UHJpdmF0ZUJyYW5kVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjVE
QTBDNjI1Qjg5NTlFMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODY1REEwQzcyNUI4OTYwQzAwODc1NzcyIC8qIFNldFByaXZhdGVCcmFu
ZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRTdGF0dXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY1REEwQzkyNUI4OTYyQTAwODc1NzcyIC8qIFNldFBy
aXZhdGVCcmFuZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRQcml2YXRlQnJhbmRT
dGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjY0OTY3QTI1RDFERDEy
MDA1MTZCMzYgLyogQnJhbmRlZFN0cnVjdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCcmFu
ZGVkU3RydWN0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY2NzM5RDAx
M0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmlnSW50ZWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjY3
MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVpbnQxNldpdGhGcmFjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjcwNEI0MDEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENo
ZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclN5bnRh
eENoZWNrZXIuY3BwOyBwYXRoID0geWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzA0QjQxMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3lu
dGF4Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyU3ludGF4
Q2hlY2tlci5oOyBwYXRoID0geWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NjcwNEI3RDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJl
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJJbnRlcnBy
ZXRlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2NzA0QjdFMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckludGVycHJldGVyLmg7
IHBhdGggPSB5YXJyL1lhcnJJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NjcwNEI3RjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJySklULmNwcDsgcGF0aCA9IHlhcnIvWWFyckpJ
VC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzA0QjgwMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJySklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJK
SVQuaDsgcGF0aCA9IHlhcnIvWWFyckpJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0
aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4
ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY4OTIxQzExRjlDMENCNzAwMTE1OUY2
IC8qIEpTQmlnSW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmlnSW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlG
NiAvKiBKU0JpZ0ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0JpZ0ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2OTc2RTU3MUZBMzc1
NDAwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnRD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njk3NkU1ODFGQTM3
NTZEMDBFN0M0RTEgLyogQmlnSW50Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmlnSW50Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJpZ0ludFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4Njk3NkU1QjFGQTM3NUE4MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpZ0ludFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2OUVCQ0I2MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3Vs
dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZBMDU0NDYxNTU2NDUxQjAw
NDQ1MTU3IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5hc207IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZBMDU0NDcxNTU2NDUxQjAwNDQ1MTU3
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbS5hc207IGxpbmVFbmRpbmcg
PSAwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2QTA1NDQ4MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyNjQuYXNtICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5hc20uYXNtOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c207IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NkE5MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRp
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGlj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZBREQxNDMwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFSTXY3QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QUREMTQz
MEZEREVBOTgwMDA2RkZDQyAvKiBBUk12N1JlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBUk12N1JlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QjU4MjJDMTREMjJGNUYwMEE5QzMwNiAvKiBQ
cm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZmls
ZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QjU4MjZBMTREMzVE
NTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGllcmVkTU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2Qjg2OTAwMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaXZhdGVGaWVsZFB1dEtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODZCODY5MDIyNEI4QTIwODAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50cmluc2ljLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hY3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNSVBTQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGRiAvKiBNSVBTUmVnaXN0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JUFNSZWdpc3RlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkNDODVBMjBFRTc5Qjc0MDAyODg2ODIgLyogSklU
Q2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRDYWxsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZDQzg1QzMwRUU3QTg5NDAwMjg4Njgy
IC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVFByb3BlcnR5QWNjZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSklUQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBm
aWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gdGVzdGFwaS5tbTsgcGF0aCA9IEFQSS90ZXN0cy90ZXN0
YXBpLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkQzQjNDMTEwMTU5RDdGMDAy
ODY1RTcgLyogTGlua0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5rQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDQ0NkU1MjVCMjEy
NDcwMEVDQUU3NSAvKiBKSVRPcGFxdWVCeXByb2R1Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUT3Bh
cXVlQnlwcm9kdWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDQ0NkU2MjVC
MjEyNDgwMEVDQUU3NSAvKiBKSVRPcGFxdWVCeXByb2R1Y3RzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VE9wYXF1ZUJ5cHJvZHVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZENDQ2
RTcyNUIyMTI0ODAwRUNBRTc1IC8qIEpJVENvbXBpbGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VENvbXBpbGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDQ0NkU4MjVC
MjEyNDgwMEVDQUU3NSAvKiBKSVRDb21waWxhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRDb21waWxhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDQ0NkU5
MjVCMjEyNDgwMEVDQUU3NSAvKiBKSVRPcGFxdWVCeXByb2R1Y3RzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVE9wYXF1ZUJ5cHJvZHVjdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTg2RTNDNjA3MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg2RTNDNjA4MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0NvbnRleHQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RTNDNjA5MTY3QkFCODcwMDZENzYwQSAvKiBK
U0NvbnRleHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Nv
bnRleHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwQTE2
N0JBQjg3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFeHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MEIx
NjdCQUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEpTV3JhcHBlck1hcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODZFM0M2MEMxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyYXBwZXJNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MEQxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTVmFsdWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU1ZhbHVlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwRTE2N0JBQjg3MDA2RDc2MEEgLyogSlNW
YWx1ZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkUzQzYwRjE2N0JBQjg3
MDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1ZpcnR1YWxNYWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2RTNDNjEwMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNWaXJ0dWFsTWFjaGluZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFM0M2MTExNjdCQUI4NzAwNkQ3NjBBIC8qIEpT
VmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODZFQzlEQjQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0J5dGVDb2RlUGFyc2VyLmNwcDsg
cGF0aCA9IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2RUM5REI1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZVBhcnNlci5oOyBwYXRo
ID0gZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2RUM5REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdHZW5lcmF0aW9uSW5mby5oOyBwYXRoID0gZGZn
L0RGR0dlbmVyYXRpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5
REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdHcmFwaC5jcHA7IHBhdGggPSBkZmcvREZHR3JhcGguY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVDOURCODEzMjhERjgyMDAyQjJBRDcgLyog
REZHR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHR3JhcGguaDsg
cGF0aCA9IGRmZy9ERkdHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVD
OURCQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHSklUQ29tcGlsZXIuY3BwOyBwYXRoID0gZGZnL0RG
R0pJVENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQzlEQkMx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0pJVENvbXBpbGVyLmg7IHBhdGggPSBkZmcvREZHSklUQ29tcGlsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3
IC8qIERGR09wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHT3BlcmF0aW9ucy5jcHA7IHBhdGggPSBkZmcvREZHT3BlcmF0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdP
cGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wZXJhdGlv
bnMuaDsgcGF0aCA9IGRmZy9ERkdPcGVyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJCYW5rLmg7IHBhdGggPSBk
ZmcvREZHUmVnaXN0ZXJCYW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RUM5
REMyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVC5jcHA7IHBhdGggPSBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
NkVDOURDMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQuaDsgcGF0aCA9IGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkVDQTNF
OTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdOb2RlLmg7IHBhdGggPSBkZmcvREZHTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NkVDQTNGOTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTY29yZUJvYXJkLmg7IHBhdGgg
PSBkZmcvREZHU2NvcmVCb2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NkYz
RUVCNjE2ODU1QTVCMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqY1J1bnRpbWVFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODZGM0VFQjkxNjhDQ0Y3NTAwNzdCOTJBIC8qIE9iakNDYWxsYmFja0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iakNDYWxsYmFja0Z1
bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RjNFRUJBMTY4Q0NGNzUw
MDc3QjkyQSAvKiBPYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE9iakNDYWxsYmFja0Z1bmN0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NkY3NUVGQjE1MUMwNjJGMDA3QzlCQTMgLyogUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENh
Y2hlZFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2Rjc1RUZDMTUx
QzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGVkUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg2Rjc1RUZEMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBNYXRjaGVzQXJyYXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwTWF0Y2hlc0Fy
cmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZGQTlFOEYxNDJCQkIyRDAw
MTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0JvdW5kRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQm91bmRGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4ODUyMTUxQTlDMzg0MjM4OUIzMjE1QjcgLyogU2NyaXB0RmV0
Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGZXRjaGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCMTczNUVGMUU5MkU1MjkwMDM2OTA1NCAv
KiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCM0JGNUUzMUUzRDM2NUEwMDc2QTg3QSAvKiBB
c3luY0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCThCNjAxNkYzMUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0
b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOEI2MDE2RjQxRjNFM0NDMDAwRjlERTZBIC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEI5RjZE
NTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4QkMwNjQ4MjFFMTgwQjRBMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0dlbmVyYXRv
clByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJDMDY0ODMxRTFB
NEZEMDAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0dlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QkMwNjQ4NDFF
MUE0RkQxMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QkMwNjQ4NTFFMUE0RkQx
MDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJDMDY0ODYxRTFBNEZEMTAw
QjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QkMwNjQ4NzFFMUE1ODNGMDBCMkI4Q0EgLyog
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCThCQzA2NDg4MUUxQTU4NDAwMEIyQjhDQSAvKiBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0
aCA9IEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4
Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsK
KwkJOEJDMDY0OEYxRTFBRDZBQzAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jR2VuZXJhdG9yUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJDMDY0OTAxRTFBRDZB
QzAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCThCQzA2NDkzMUUxRDgyOEIwMEIyQjhDQSAvKiBBc3luY0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
SXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QkMw
NjQ5NDFFMUQ4MjhCMDBCMkI4Q0EgLyogQXN5bmNJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThCQzA2NDk1MUUxRDgzOEIwMEIyQjhDQSAvKiBBc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gQXN5bmNJdGVyYXRvclByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTAyMTNFM0IxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5U3RhdGlzdGljcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwMjEzRTNDMTIzQTQwQzIwMEQ0MjJGMyAv
KiBNZW1vcnlTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
bW9yeVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTEyNzhENTIy
MURFQjgyNDAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxMjc4RDUzMjFERUI4MjUwMEI1NzE4NCAvKiBJbnNwZWN0
b3JBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckF1ZGl0QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTEyNzhENTYyMURF
REE5NDAwQjU3MTg0IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTEyNzhENTcyMURFREE5NTAwQjU3MTg0IC8qIEpTR2xvYmFs
T2JqZWN0QXVkaXRBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5MTY4QkQ4NDI0NDdCQTRDMDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdncmVnYXRlRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTY4QkQ4NTI0NDdCQTREMDA4MEZGQjQgLyogQWdn
cmVnYXRlRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWdncmVnYXRl
RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE3N0ExREIyMkY5NThEMzAw
QjM0Q0EyIC8qIEhlYXBBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE4RTE1QkMy
NDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOEUxNUJEMjQ0N0IyMjYwMDQ0N0E1
NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MThFMTVCRjI0
NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBCcmVh
a3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyZWFrcG9p
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzA1MkMzMjBGQjc5MjE5MDA0
OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzA1
MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MzIyQTAwMzA2QzM0MUQzMDA5MDY3QkIgLyogbGliaWN1Y29y
ZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliaWN1Y29yZS5keWxpYjsgcGF0aCA9
IC91c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CisJCTkzMkY1QkQ4MDgyMkExQzcwMDczNjk3NSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAxOyB9OworCQk5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBqc2M7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzMzAzRkU4MEU2QTcyQjUwMDc4NkU2QSAvKiBT
bWFsbFN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21h
bGxTdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMDNGRUEwRTZB
NzJDMDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbWFsbFN0cmluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMz
NDVBODcxMkQ4MzhDNDAwMzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMzQ1QTg4MTJEODM4QzQwMDMwMkJF
MyAvKiBTdHJpbmdSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTMzQTM0OUEwMzhBRTdDNjAwODYzNUNFIC8qIElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJOTMzQTM0OUQwMzhBRTgw
RjAwODYzNUNFIC8qIElkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZGVudGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk5MzdCNjNDQzA5RTc2NkQyMDBBNjcxREQgLyog
RGVyaXZlZFNvdXJjZXMubWFrZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gc291cmNlY29kZS5tYWtlOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMubWFrZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdXNlc1RhYnMgPSAxOyB9
OworCQk5Mzg3NzJFNTAzOEJGRTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBC
MDggLyogSlNBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0FycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNDRURERkIwRUE5MUVF
NjAwMjU4RUJFIC8qIFJlZ0V4cE1hdGNoZXNBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBNYXRjaGVzQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNGMEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0YwQjNBQTA5QkI0REMwMDA2OEZDRTMgLyogUGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0YxOTgxQTA4MjQ1QUFFMDAxRTlBQkMgLyogS2V5d29yZHMudGFibGUgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBLZXl3b3Jkcy50YWJsZTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQk5NUMxOEQzRTBDOTBFN0VGMDBF
NzJGNzMgLyogSlNSZXRhaW5QdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNSZXRhaW5QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTYwMDk3QTUwRUJB
QkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGFiZWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njg4Q0Ix
MzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTEgLyogWDg2UmVnaXN0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4NlJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4Nl82NFJlZ2lzdGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OTkg
LyogUmVnaXN0ZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lz
dGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njg4Q0IxNDBFRDEyQjRF
MDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFg4NkFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDcy
MDBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVH
ZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA3MjcwRUQxQ0U2OTAw
RjFGNjgxIC8qIExhYmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk2OUEwNzI4MEVEMUNFNjkwMEYxRjY4
MSAvKiBSZWdpc3RlcklELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lz
dGVySUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA3OTAwRUQxRDNBRTAw
RjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2RlQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlBMDc5
MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjlB
MDc5MjBFRDFEM0FFMDBGMUY2ODEgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXJlY3RFdmFsQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk2OUEwNzk0MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3Bjb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGNvZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTY5QTA5MjIwRUQxRTA5QzAwRjFGNjgxIC8qIENvbXBsZXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGxldGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0Uy
RCAvKiBKU0RhdGVNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzg4RkMyMzE0
NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RhdGVNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MERB
NjdFMUM4RTMxMUQwMDI5NTE1OSAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVy
c2lvbnNfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaW1wbGVtZW50YXRp
b24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MkFCQ0Y1MUJFQTk0Q0EwMDY0
MDNBMCAvKiBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OTJBQkNGNjFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21h
dGlvblRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdXRv
bWF0aW9uVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MkQ2QTExMUZC
RDQ5MUQwMDAyNDVGNCAvKiBEZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTJGNTZCMDFFNEU4NDc5MDAzNTk1M0Ig
LyogUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTkyRjU2QjExRTRFODQ3OTAwMzU5NTNCIC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTJGNTZC
MjFFNEU4NDc5MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MkY1NkIzMUU0RTg0
N0QwMDM1OTUzQiAvKiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTU1NjY4NTFFNEU4QjA3MDBB
QUUxM0MgLyogUmVtb3RlSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBjc3NtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NTlFOTI5MUJEMTdGQTAwMDFBQTQxMyAvKiBqc21pbi5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGpzbWluLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyogeHhkLnBsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucGVybDsgcGF0aCA9IHh4ZC5wbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rv
ci1qc29uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRl
LWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTk1OUU5MzAxQkQxODFGNjAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hl
ZXRzLWFuZC1zY3JpcHRzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
ImlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5Ijsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjczMDcxQkQ5RkEyQzAwMzMxQjg0IC8qIEJvb2xlYW5Q
cm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5Q
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkI3MzA4MUJE
OUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERhdGVDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvclByb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjczMEExQkQ5RkEyQzAwMzMxQjg0
IC8qIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGF0YVZpZXdQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NkI3MzBCMUJEOUZBMkMwMDMzMUI4NCAvKiBKU0dsb2JhbE9iamVjdC5sdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3QubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkI3MzBDMUJEOUZBMkMwMDMzMUI4NCAvKiBK
U01vZHVsZUxvYWRlci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
b2R1bGVMb2FkZXIubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkI3MzBE
MUJEOUZBMkMwMDMzMUI4NCAvKiBOdW1iZXJQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTk2QjczMEUxQkQ5RkEyQzAwMzMxQjg0IC8qIE9iamVjdENvbnN0cnVj
dG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RDb25zdHJ1
Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjczMEYxQkQ5RkEy
QzAwMzMxQjg0IC8qIFJlZmxlY3RPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZmxlY3RPYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5NkI3MzExMUJEOUZBMkMwMDMzMUI4NCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29uc3RydWN0b3IubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NkI3MzEzMUJEOUZBMkMwMDMzMUI4NCAv
KiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3ltYm9sQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5NkI3MzE0MUJEOUZBMkMwMDMzMUI4NCAvKiBTeW1ib2xQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFByb3RvdHlwZS5sdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk2QjczMTUxQkRBMDVBQTAwMzMxQjg0IC8qIEFycmF5
Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OEVENjcy
MUJFRDY1OUEwMEREODAxNyAvKiBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk4RUQ2NzMxQkVENjU5QTAwREQ4MDE3
IC8qIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlBMzI3MzgyNUM5Q0JFRTAwREE4Q0FGIC8qIFNvdXJjZXNDb2NvYS50eHQgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAw
OTkxQkQ1OTkyNzAwRjQ1NzVDIC8qIF9faW5pdF9fLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5REEwMDlBMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0b3IucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBi
dWlsdGluc19tb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1
aWx0aW5zX21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5QzFC
RDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OURBMDA5RDFCRDU5OTI3MDBGNDU3NUMgLyogd2tidWlsdGlucy5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IHdrYnVpbHRpbnMucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlFMUJENTk5MjcwMEY0NTc1QyAvKiBi
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlGMUJENTk5MjcwMEY0NTc1QyAvKiBi
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBMDFCRDU5
OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJh
dGVfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBMTFCRDU5
OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24u
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlEQTAwQUMxQkQ1OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1
NzVDIC8qIGxhenl3cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBsYXp5d3JpdGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBRTFC
RDU5OTNFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSBVcGRhdGVDb250ZW50cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZy
b250ZW5kUm91dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlGMUE3MDAx
Qjk4RkJFQzAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kUm91dGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNDk1NEU4MUE2NjQwREIwMDI4MTVBNiAvKiBQYXJzZXJG
dW5jdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyRnVuY3Rpb25JbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlFNzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxl
UGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU3Mjk0MEExOTBGMDUxNDAw
MUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTI1ODQ2QzFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRs
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxPYmpl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2NzFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDczMUI0REMxQzYw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENh
Y2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3MTJCM0UxMUM3QjIyODAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzEyQjQwMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODE5M0Ux
MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAv
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFCODlCODgyMjFFMDAyQTAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gU0RLVmFyaWFudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsQ29sbGF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzNTFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMUI5RTIzNjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzcx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxDb2xsYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3
OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZv
cm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGODFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3
OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRTA0NTFCMUMyNUI0QjEwMEJCNjYzQyAv
KiBTdHJpbmdQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBTdHJpbmdQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
RkUxRUIwMUMyQzUzN0UwMEEyODlGRiAvKiBEYXRlUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gRGF0ZVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMyMUFBNkMyNjI2MzU5QjAw
MjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxXb3JrYXJvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzNzYx
OTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsV29ya2Fyb3VuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUEzOENBNTlCMjZERDg0REUwMEM4RDg0QyAvKiBJU084NjAxLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElTTzg2MDEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMzhDQTU5QzI2REQ4NERFMDBDOEQ4NEMgLyogSVNPODYw
MS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJU084NjAxLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAvKiBKU0FycmF5
QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzhENUJGOTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5U3RhdHVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeVN0YXR1cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50
bExvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAv
KiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bExvY2FsZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMb2NhbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0FGRjkyRTI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZVByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxl
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNBRkY5MkYyNDVB
M0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0IgLyogSW50bExv
Y2FsZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9j
YWxlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRCMjQ0
ODBCREUwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QzI0NDgw
QkRGMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYz
NSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEUyNDQ4MEJFMDAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEYyNDQ4MEJFMDAwMUI5RjM1IC8q
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzQkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNDN0VEQjAyNkIwREIzNjAw
NEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBM0M3RURCMTI2QjBEQjM2MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbER1
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNDN0VEQjIyNkIwREIz
NzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0M3RURCMzI2QjBEQjM3MDA0QzM0QzUg
LyogVGVtcG9yYWxEdXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZW1wb3JhbER1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQzdFREI0
MjZCMERCMzcwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQzdFREI1MjZCMERCMzcwMDRDMzRDNSAv
KiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBM0ZGOUJDNTIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJGbGFncy5oOyBwYXRoID0geWFy
ci9ZYXJyRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNGRjlCQzYyMjM0
NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBZYXJyRmxhZ3MuY3BwOyBwYXRoID0geWFyci9ZYXJyRmxhZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUwM0ZBMjcxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxP
YmplY3REZWJ1Z2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTI4
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUwOThCMDMxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRoID0g
UGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xMS5zZGsv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBERVZFTE9QRVJfRElSOyB9OworCQlBNTBFNEI1RDE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1MEU0QjVFMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MEU0QjVGMTg4MDlERDUwMDY4QTQ2RCAvKiBK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1MEU0QjYwMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEw
MDdCRTE4N0NDM0M2MDBCMzg4NzkgLyogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
MTAwN0JGMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNFNUI1
MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1MTNFNUI2MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVCOTE4NUJGQUNDMDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVj
dGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVCQTE4
NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVCQjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0U1QkMx
ODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUxM0U1QkQxODVCRkFD
QzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTNFNUMzMTg1RjkyQzkwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdFNvdXJjZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEluamVjdGVkU2Ny
aXB0U291cmNlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVDNjE4NUY5
NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTUxM0U1QzgxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTEzRTVDOTE4
NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTE0QjJDMDE4NUE2ODQ0MDBGM0M3Q0IgLyogSW5qZWN0ZWRTY3Jp
cHRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
U2NyaXB0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MTRCMkMxMTg1
QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1MjcwNDg1MUQwMjdDODgwMDM1NEMzNyAvKiBHbG9iYWxPcGVyYXRpb25zLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gR2xvYmFsT3BlcmF0aW9u
cy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUyNzA0ODYxRDAyN0M4ODAwMzU0
QzM3IC8qIE51bWJlckNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gTnVtYmVyQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1MzExQzM0MUM3N0NFQUMwMEU2QjFCNiAvKiBIZWFwU25hcHNob3RCdWlsZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBTbmFwc2hvdEJ1aWxk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTMxMUMzNTFDNzdDRUFDMDBF
NkIxQjYgLyogSGVhcFNuYXBzaG90QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIZWFwU25hcHNob3RCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1MzI0MzgxMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzMjQzODIxODU2ODMxNzAwMkVENjky
IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUz
MjQzODMxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MzI0Mzg0MTg1NjgzMTcwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZy
b250ZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzMjQz
ODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIg
LyogcHJvdG9jb2wgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmb2xkZXI7IHBhdGggPSBwcm90b2NvbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTUzMjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIENvbWJpbmVkRG9tYWlucy5qc29uICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5qc29uOyBwYXRoID0gQ29tYmluZWREb21haW5zLmpzb247IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1MzI0Mzk2MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1MzM5RUM0MUJCMzk5OTAwMDU0RjAwNSAvKiBJbnNwZWN0b3JIZWFwQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySGVhcEFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzMzlFQzUxQkIzOTk5MDAwNTRGMDA1
IC8qIEluc3BlY3RvckhlYXBBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JIZWFwQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUz
MzlFQzgxQkI0QjQ1MTAwNTRGMDA1IC8qIEhlYXBPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIZWFwT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTUzOThGQTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwUHJvZmlsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNTM5OEZBQTFDNzUwRDk1MDA2MEE5NjMgLyogSGVhcFBy
b2ZpbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBQcm9maWxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTNDRTA4OTE4QkMyMUMzMDBCRURGNzYg
LyogQ29uc29sZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25z
b2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1M0YxQUJFMThDOTBF
QzcwMDcyRUI2RCAvKiBmcmFtZXdvcmsuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gZnJhbWV3b3JrLnNiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTRDMkFBRTFDNjU0NEQxMDBBMThENzggLyogSGVhcFNuYXBz
aG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBTbmFwc2hv
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NEMyQUFGMUM2NTQ0RDEwMEEx
OEQ3OCAvKiBIZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkYyMTg0
RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JpcHRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1NENGMkYzMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBT
Y3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NTE2NUQwMUJERUZEQkQwMDNC
NzVDMSAvKiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTUxNjVEMTFCREVGREJEMDAzQjc1QzEgLyog
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1NTE2NUQ0MUJERjEzNEQwMDNCNzVDMSAvKiBTY3JpcHRQcm9maWxpbmdT
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxpbmdT
Y29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTUyQzM3RDFBRERCOEZFMDAx
Mzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNSZW1vdGVJbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTUyQzM3RTFBRERCOEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVJbnNwZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1NUZGMzgyMTU5RDJENjAwRkNEODI2IC8qIElu
c3BlY3RvclRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1NUZGM0MyMTU5RDQx
RTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclRhcmdldEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTU1NUZGM0QyMTU5RDQxRTAwRkNEODI2IC8qIEluc3BlY3RvclRhcmdldEFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvclRhcmdldEFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1NTcxNEJDMUNEODA0OEUwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnNvbGVPYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTU3MTRCRDFDRDgwNDhFMDAwNEQyQzYgLyogQ29u
c29sZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zb2xlT2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0EzMTg1MDEyQTgwMDQw
MERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8q
IEluc3BlY3RvclByb3RvY29sVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTdEMjNFMzE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3RDIzRTQxODkwQ0VCRjAw
MzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNTdEMjNFNzE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0QyM0VCMTg5MUI1NTQw
MDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBSZWd1bGFyRXhwcmVzc2lvbi5jcHA7IHBhdGggPSB5YXJyL1JlZ3VsYXJF
eHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3RDIzRUMxODkx
QjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFJlZ3VsYXJFeHByZXNzaW9uLmg7IHBhdGggPSB5YXJyL1JlZ3VsYXJFeHBy
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0QyM0VGMTg5MUI1QjQw
MDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNTdEMjNGMDE4OTFCNUI0MDAzMUM3RkEgLyogQ29udGVudFNl
YXJjaFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50
U2VhcmNoVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODQwRTFF
MTg3QjdCODYwMDg0M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1ODQwRTFGMTg3QjdCODYwMDg0M0IxMCAvKiBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNThDMDI0
MTE4RTRBNDFBMDAwMzJCQzUgLyogSlNDb250ZXh0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NvbnRleHRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1OEUzNTkwMTg2MERFQzcwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU5M0NGN0ExODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTNDRjdFMTg0
MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTkzQ0Y4NTE4
NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAvKiBSZW1vdGVJbnNw
ZWN0aW9uVGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUluc3BlY3Rpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NTk0NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OTQ1NTkxMTgyNDc0NDcw
MENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QTFBMDky
MUQ4Q0IxMkYwMDRDMkVCOCAvKiBEZWJ1Z2dlclBhcnNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWJ1Z2dlclBhcnNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUExQTA5MzFEOENCMzM3MDA0QzJFQjggLyogRGVidWdnZXJQYXJzZURhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJQYXJzZURh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUFCNDlEQTFCRUM4MDc5MDA3
MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQ
ZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE1QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnNvbGVDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFMzE4MjM0
MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUJB
MTVFRjE4MjM0NUFGMDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1QzNBMUEzMThDMDQ5MDIwMEM5NTkzQSAvKiBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVDM0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVD
RUVFMTIxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVDRUVFMTMxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAv
KiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDb250ZXh0UmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcw
RTUxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcw
RTYxOUY1QjEwMTAwOThGNUVDIC8qIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRl
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE1RUE3MEVEMTlGNUI1QzQwMDk4RjVFQyAvKiBKU0NvbnRleHRSZWZJbnNwZWN0b3JTdXBw
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZkluc3Bl
Y3RvclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRUYxOUY2
REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX29iamNfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTVFQTcwRjAxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RUE3MEYxMTlGNkRFNUEwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRjIxOUY2REU1QTAwOThGNUVDIC8q
IGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9p
bXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRjMx
OUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9u
c19oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNUVBNzBGNDE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2Jq
Y19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzBGNTE5
RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9vYmpjX2hlYWRlci5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFQTcwRjYxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRl
X29iamNfaW50ZXJuYWxfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gZ2VuZXJhdGVfb2JqY19pbnRlcm5hbF9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1RUE3MEY4MTlGNkRFNUEwMDk4RjVFQyAvKiBvYmpjX2dlbmVyYXRvci5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IG9iamNfZ2VuZXJhdG9yLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzEwRDE5RjZERjgxMDA5OEY1RUMg
LyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVGMTNGNzFGMDczMUI0MDAwRjA0NDIg
LyogbWFrZS1qcy1maWxlLWFycmF5cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJtYWtlLWpzLWZp
bGUtYXJyYXlzLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGQzg0QjAxRDFE
REFDODAwNkI1QzQ2IC8qIERlYnVnZ2VyTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGVidWdnZXJMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1RkM4NEIxMUQxRERBQzgwMDZCNUM0NiAvKiBEZWJ1Z2dlckxvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyTG9jYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwNjUxODlBRkU5QzAwNjMzMjMxIC8q
IFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZE
MDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RkQwMDZBMTg5QjAwQTkwMDYzMzIz
MSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RkQwMDZC
MTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTVGRDAwNkMxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwNzExODlCMDM4QzAwNjMzMjMxIC8q
IENvbnNvbGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zb2xl
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwNzIxODlCMDM4QzAw
NjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJZGVudGlmaWVyc0ZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUZEMDA3MzE4OUIwMzhDMDA2MzMyMzEgLyogSWRlbnRpZmllcnNGYWN0b3J5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkZW50aWZpZXJzRmFjdG9yeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZEMDA3NzE4OUIwNTEwMDA2MzMyMzEg
LyogQ29uc29sZU1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc29sZU1lc3NhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZE
MDA3ODE4OUIwNTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29uc29sZU1lc3NhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RkQwMDdDMTg5
QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVGRDAwN0YxODlCMTkxQTAwNjMzMjMxIC8qIEluc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUZE
MDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVBZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczNzE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFwQ29u
c3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczODE3Q0JF
ODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFwQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTcwMDg3M0IxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcFByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODczRjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNN
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNYXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyog
SlNNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJh
bmRzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcGVyYW5kc0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwNDQ3RUIxN0EwQkQ3MDAw
RjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IER1bXBDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcw
NDQ3RUMxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IER1bXBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3MDREOEZFMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIu
aDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3MDREOEZGMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MDREOTAwMTdBMEJB
QTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGgg
PSBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzA0RDkwMTE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzA5RjJFRjE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhD
YWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3dQYXRoQ2FsbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzA5RjJGMTE3QTBBQzJBMDA1MTJFOTggLyog
Q29tbW9uU2xvd1BhdGhzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbW1vblNsb3dQYXRocy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MTIz
NkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRh
Ymxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgbmFt
ZSA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHBhdGggPSB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rp
b25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjcwMUIzMERBREU5
NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4Y2VwdGlvbkhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTcyOTAwOUIxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk12Ny5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5RDlCMTdEMTI4MzcwMDVGNUZG
OSAvKiBKU1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Nl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5RDlDMTdEMTI4MzcwMDVG
NUZGOSAvKiBKU1NldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzI5OUQ5RjE3RDEyODQ4MDA1RjVGRjkg
LyogU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5REEw
MTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3Mjk5REEzMTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5REE0MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzMwQjYxMDEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczNzgxMEIxNzk5RUEyRTAwODE3
NTMzIC8qIERGR05hdHVyYWxMb29wcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdOYXR1cmFsTG9vcHMuaDsgcGF0aCA9IGRmZy9ERkdOYXR1cmFsTG9vcHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNp
YWxpemVkVGh1bmtKSVQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlY2lh
bGl6ZWRUaHVua0pJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzM4NjU1MjEx
ODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRodW5rR2VuZXJhdG9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3Mzg2NTUzMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGh1bmtHZW5lcmF0b3JzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3M0E1MzU4MTc5OUNENUQwMDE3MEMxOSAvKiBE
RkdMYXp5SlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdMYXp5SlNWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzNBNTM1OTE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6
eUpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTGF6eUpTVmFs
dWUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5SlNWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzQxMDE3RTE3OURBRjgwMDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFs
U2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzQ4MkI3OTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NDgyQjdBMTE2NkNE
RUEwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzQ4MkUzNzExNkE2OTdCMDAzQjA3MTIgLyog
SlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc0REVGOEQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcEl0ZXJhdG9yUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc0REVGOEUxODJEOTkx
NDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWFwSXRlcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hcEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NUVFOUIwMThBQUI3RTIw
MEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVpbHRpbk5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NjdCNUIz
MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzY3QjVCNDE3QTBCOTY1MDA2M0Q5NDAg
LyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9E
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VKSVQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTc3QTQyMzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0
SGVhcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFj
dEhlYXAuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3N0E0MjM3MTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhl
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQWJzdHJhY3RIZWFwLmg7
IHBhdGggPSBkZmcvREZHQWJzdHJhY3RIZWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3N0E0MjM4MTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVyaXplLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJpemUuY3BwOyBwYXRoID0g
ZGZnL0RGR0Nsb2JiZXJpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzdB
NDIzOTE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJlcml6ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyaXplLmg7IHBhdGggPSBkZmcvREZHQ2xvYmJlcml6
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzdBNDIzQTE3QTBCQkZEMDBBOERC
ODEgLyogREZHQ2xvYmJlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdDbG9iYmVyU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9iYmVyU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3QTQyM0IxN0EwQkJGRDAwQThEQjgxIC8qIERG
R0Nsb2JiZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2xvYmJl
clNldC5oOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTc3QTQyM0MxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2FmZVRvRXhlY3V0ZS5oOyBwYXRo
ID0gZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTc3RjE4MUYxNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNzdGMTgyMDE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzdGMTgyNDE2NDE5MjU0MDA2NDBBNDcgLyogUGFyc2VyTW9kZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGFyc2VyTW9kZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGYWlsZWRGaW5hbGl6ZXIuY3Bw
OyBwYXRoID0gZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3OEE5NzZEMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmFpbGVkRmluYWxpemVyLmg7
IHBhdGggPSBkZmcvREZHRmFpbGVkRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3OEE5NzZFMTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRmluYWxpemVyLmNwcDsgcGF0aCA9
IGRmZy9ERkdGaW5hbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzhB
OTc2RjE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0ZpbmFsaXplci5oOyBwYXRoID0gZGZnL0RGR0ZpbmFsaXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzhBOTc3MDE3OTczOEI4MDA5REY3NDQg
LyogREZHSklURmluYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0pJVEZpbmFsaXplci5jcHA7IHBhdGggPSBkZmcvREZHSklURmluYWxpemVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc4QTk3NzExNzk3MzhCODAwOURGNzQ0IC8q
IERGR0pJVEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdK
SVRGaW5hbGl6ZXIuaDsgcGF0aCA9IGRmZy9ERkdKSVRGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTc4QTk3NzIxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUGxhbi5jcHA7IHBhdGgg
PSBkZmcvREZHUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OEE5Nzcz
MTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR1BsYW4uaDsgcGF0aCA9IGRmZy9ERkdQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3OEE5NzdDMTc5NzM4RDUwMDlERjc0NCAvKiBGVExHZW5lcmF0ZWRGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExHZW5lcmF0ZWRGdW5j
dGlvbi5oOyBwYXRoID0gZnRsL0ZUTEdlbmVyYXRlZEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3OEE5NzdEMTc5NzM4RDUwMDlERjc0NCAvKiBGVExKSVRGaW5hbGl6
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMSklURmluYWxp
emVyLmNwcDsgcGF0aCA9IGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzhBOTc3RTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxpemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEpJVEZpbmFsaXplci5oOyBw
YXRoID0gZnRsL0ZUTEpJVEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0SXRlcmF0b3JQcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzkwREQ2ODE4MkY0OTk3MDA1ODg4
MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2V0SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc5MERENjkxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXRJdGVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0SXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5RTc4MUUxNUVFQ0JBODAwNDdDODU1
IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVubGlua2VkQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTc5RTc4MUYxNUVFQ0JBODAwNDdDODU1IC8qIFVubGlua2VkQ29kZUJsb2NrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVj
dFJlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3RS
ZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTRBRTA3MTc5NzNC
MjYwMDU2MTJCMSAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTdFRTc0MTFCOThCOEQwMDY1QTE0RiAvKiBBU1RC
dWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFTVEJ1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBN0VFNzcxMUI5OEI4RDAwNjVBMTRGIC8q
IFN5bnRheENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGF4
Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyNTE3QURCNUYy
MDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXJyYXlCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0E4QUYyNjE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdBOEFGMjcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUJ1ZmZlclZpZXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
QnVmZmVyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYyOTE3QURC
NUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZsb2F0MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4
QUYyQTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0E4QUYyQjE3QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDhBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0E4QUYyQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MTZBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludDMyQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhBcnJheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhD
bGFtcGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVWludDhDbGFt
cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBOEFGMzIxN0FEQjVG
MzAwNUFCMTc0IC8qIFVpbnQxNkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVpbnQxNkFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QThBRjMz
MTdBREI1RjMwMDVBQjE3NCAvKiBVaW50MzJBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVaW50MzJBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0E5NzlDNDE4QkU4RDlFMDAyQzM3MzMgLyogRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBGdW5jdGlvblByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhl
Y3V0YWJsZUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I0OERC
NjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhw
b3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhwb3J0TWFj
cm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QkRBRUMyMTdGNEVBMTQwMEY2
MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5jcHA7IH07CisJCUE3QkRBRUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBB
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdCRkYzQkYxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmlsdHJhdGlvblJlc3VsdC5oOyBwYXRoID0g
ZGZnL0RGR0ZpbHRyYXRpb25SZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdDMEM0QUExNjdDMDhDRDAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2NyaXB0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdDMEM0QUIxNjdDMDhDRDAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdFJlZlByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMUVBRUIxNzk4N0FCNjAwMjk5
REIyIC8qIENMb29wU3RhY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENMb29wU3RhY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFN0YWNrVmlzaXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzFFQUVEMTc5ODdBQjYwMDI5OURCMiAv
KiBTdGFja1Zpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tW
aXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QzIyNUNDMTM5OTgxRjEw
MEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gS2V5d29yZExvb2t1cEdlbmVyYXRvci5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYyIC8qIEtleXdvcmRMb29r
dXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5d29yZExvb2t1cC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FERDE3REE0MUFFMDA2NTM4QUYgLyog
V2Vha01hcENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcENvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Q0EzQURGMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFw
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtN
YXBQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0NBM0FFMDE3
REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWFrTWFwUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3Q0EzQUUxMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5UHJv
dG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXlQ
cm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4MEQ2
NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRh
Ymxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJs
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAx
QTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZn
L0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4OUNF
NDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRo
ID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7
IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODlDRTYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFr
aW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ3Jp
dGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ3JpdGljYWxFZGdlQnJl
YWtpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5Q0U3MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuaDsg
cGF0aCA9IGRmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3RDg5Q0U4MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1h
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGbHVzaEZvcm1h
dC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0Q4OUNFOTE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmx1c2hGb3JtYXQuaDsgcGF0aCA9
IGRmZy9ERkdGbHVzaEZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4
OUNFQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHA7IHBhdGggPSBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRUQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVu
ZXNzQW5hbHlzaXNQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdM
aXZlbmVzc0FuYWx5c2lzUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODlDRUUxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDg5Q0VGMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdP
U1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3RDg5Q0YwMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29u
dmVyc2lvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NTQUNv
bnZlcnNpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4OUQwMTE3QTBCOTA0MDA3NzNBRDggLyogRlRM
TG93ZXJlZE5vZGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExM
b3dlcmVkTm9kZVZhbHVlLmg7IHBhdGggPSBmdGwvRlRMTG93ZXJlZE5vZGVWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q5QTI4RjE3QTBCQzc0MDBFRTI2MTggLyogREZH
QXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEOUEyOTAxN0Ew
QkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0F0VGFpbEFic3RyYWN0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdE
OUEyOTExN0EwQkM3NDAwRUUyNjE4IC8qIERGR0VkZ2VEb21pbmF0ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRnZURvbWluYXRlcy5oOyBwYXRoID0gZGZnL0RGR0Vk
Z2VEb21pbmF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEOUEyOTIxN0Ew
QkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdMSUNNUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0xJQ01QaGFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDlBMjkzMTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
TElDTVBoYXNlLmg7IHBhdGggPSBkZmcvREZHTElDTVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTJFQTY5MEZCNDYwQ0YwMDYwMUYwNiAvKiBMaXRlcmFs
UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpdGVyYWxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdFMkVBNkEwRkI0NjBDRjAwNjAxRjA2
IC8qIExpdGVyYWxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGl0ZXJhbFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTVB
M0E1MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxhdGlvblJlc3VsdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RTVBM0E2MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxh
dGlvblJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxhdGlv
blJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0U1QUIzNjE3OTlFNEIy
MDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFg4NkRpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvWDg2
RGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdGMjk5Njkx
N0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMRmFpbC5jcHA7IHBhdGggPSBmdGwvRlRMRmFpbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RjI5OTZBMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWls
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEZhaWwuaDsgcGF0aCA9IGZ0
bC9GVExGYWlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Rjg2OTBFMEY5NTg0
QTEwMDU1ODY5NyAvKiBDYWNoZWRDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlZENhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdGODY5RUMw
Rjk1QzJFQzAwNTU4Njk3IC8qIENhbGxGcmFtZUNsb3N1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbEZyYW1lQ2xvc3VyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Y5OTM1RDBGRDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09OT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3Rjk5MzVFMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTT05PYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0ZCNjA0QjEwM0Y1RUFCMDAxN0EyODYgLyogUHJv
cGVydHlEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Bl
cnR5RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0ZCNjBBMzEw
M0Y3REMyMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3BlcnR5RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RkNDMjZDMTdBMEI2QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hD
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFN3aXRjaENhc2UuaDsg
cGF0aCA9IGZ0bC9GVExTd2l0Y2hDYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RkY2NDdBMThDNTJFODUwMEI1NTMwNyAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BpbGxSZWdpc3RlcnNNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE4RTg5NDMxMENEMDYwMjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThFODk0MzMwQ0QwNjAzRjAw
MzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMDA2
NTlEMUVDQUM3RkUwMDBDQTkyNiAvKiBXYXNtTGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21MaW1pdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVydHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2Vi
QXNzZW1ibHlNb2R1bGUuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQjhEMURCNTg0NDAwMEIzRTczNiAvKiBK
U1dlYkFzc2VtYmx5TW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpT
V2ViQXNzZW1ibHlNb2R1bGUuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCOTgxREI1ODVBNjAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA7IHBhdGggPSBqcy9X
ZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0I5QTFEQjU4NUE2MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOyBwYXRoID0ganMv
V2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDJGQ0I5QjFEQjU4NUE2MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlNb2R1bGVQ
cm90b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkE2MURCNThEQTQwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwOyBwYXRoID0ganMvSlNXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZD
QkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDsg
cGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUQyRkNCQTgxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQTkxREI1OERBNDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBQTFEQjU4REE0MDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU1dlYkFzc2VtYmx5TWVtb3J5LmNwcDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlN
ZW1vcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JBQjFEQjU4REE0
MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5TWVtb3J5Lmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5
TWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkFDMURCNThEQTQw
MEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwOyBwYXRo
ID0ganMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFEMkZDQkFEMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5UnVudGlt
ZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3IuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUUxREI1OERBNDAwQjNFNzM2IC8qIEpT
V2ViQXNzZW1ibHlUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU1dlYkFzc2VtYmx5VGFibGUuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseVRhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQUYxREI1OERBNDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBKU1dlYkFzc2VtYmx5VGFibGUuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlUYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMDFEQjU4REE0MDBCM0U3MzYgLyog
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCMTFEQjU4REE0MDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFEMkZDQkIyMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBp
bGVFcnJvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQkIzMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvclByb3RvdHlwZS5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQ
cm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjQxREI1OERB
NDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQjUxREI1OERBNDAwQjNFNzM2IC8qIFdl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaDsgcGF0aCA9IGpzL1dlYkFz
c2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0JCNjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JCNzFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkI5MURCNThE
QTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaDsgcGF0
aCA9IGpzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUQyRkNCQkExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQkIxREI1OERB
NDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDJGQ0JCQzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5
UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBRDJGQ0JCRDFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJFMURC
NThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
clByb3RvdHlwZS5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQkJGMURCNThEQTQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oOyBw
YXRoID0ganMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNCQzAxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNC
QzExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3Iu
aDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0JDMjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0JDMzFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg7IHBhdGggPSBq
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQzBBMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBRDJGQ0MwQjFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBRDJGQ0MwQzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3Nl
bWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFEMkZDQzBEMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseUlu
c3RhbmNlUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJG
Q0MwRTFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXNzZW1ibHlNZW1vcnlDb25z
dHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMEYxREI1
OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkNDMTAxREI1OUM1OTAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEMkZDQzExMURCNTlDNTkwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFEMkZDQzEyMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0MxMzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBRDJGQ0MxNDFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFEMkZDQzE1MURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDJGQ0Mz
MjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXYXNtRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDQyNTI1MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbENvZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3Jp
Z2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxDb2RlT3Jp
Z2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ0OTM3QzExRERCRTYwQTAw
NzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQ0OTM3QzIxRERCRTYwQTAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxl
UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0TW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENDkzN0M1MUREQ0RDRjAw
MDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA7IHBhdGggPSBq
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFENDkzN0M2MUREQ0RDRjAwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUQ0OTM3QzkxREREMjczNDAwNzdDODA3IC8qIFdlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ0OTM3Q0ExREREMjczNDAwNzdDODA3IC8qIFdlYkFz
c2VtYmx5RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNz
ZW1ibHlGdW5jdGlvbi5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBRDRCMURGNzFERjI0NEQ3MDA3MUFFMzIgLyogV2FzbUJp
bmRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUJpbmRp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBRDRCMURGODFERjI0NEQ3MDA3
MUFFMzIgLyogV2FzbUJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ1QjQxNkUxRUJB
RkI2NTAwOEVGQTQzIC8qIFdhc21OYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21OYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENUMzNkRDMUY2
ODhCNUYwMDBCQ0FBRiAvKiBXYXNtRW1iZWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUVtYmVk
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENUMzNkRFMUY2OTlFQjYwMDBC
Q0FBRiAvKiBXYXNtSW5zdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUluc3RhbmNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ1QzM2REYxRjY5OUVCNjAwMEJD
QUFGIC8qIFdhc21JbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtSW5zdGFuY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ1QzM2RTMxRjY5RUM4QjAwMEJDQUFGIC8qIFdh
c21UYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtVGFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBRDVDMzZFNDFGNjlFQzhCMDAwQkNBQUYgLyogV2FzbVRhYmxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21UYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBRDVDMzZFRTFGN0EyNjI5MDAwQkNBQUYgLyogV2FzbU1lbW9yeU1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2FzbU1lbW9yeU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QUQ1QzM2RjAxRjdBMjZCRjAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhc21NZW1vcnlNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQ3NDM4QkUxRTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVNpZ25hdHVyZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFENzQzOEJGMUUwNDU3OTIwMEZEMEMyQSAvKiBXYXNtU2ln
bmF0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5
IC8qIFdhc21OYW1lU2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
YXNtTmFtZVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQ4NkE5M0Qx
QUE0RDg3QzAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2Vha0dDTWFwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBRDhERDZDRjFGNjcwODlGMDAwNEVCNTIgLyogSlNUb1dhc20uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSlNUb1dhc20uaDsgcGF0aCA9IGpzL0pTVG9XYXNtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUFEOERENkQwMUY2NzA4QTMwMDA0RUI1MiAvKiBKU1RvV2FzbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBKU1RvV2FzbS5jcHA7IHBhdGggPSBqcy9KU1RvV2FzbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEOEZGMzk1MUVCNUJEODUwMDg3RkY4MiAvKiBX
YXNtSW5kZXhPck5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUlu
ZGV4T3JOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFEOEZGMzk2MUVCNUJE
ODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2FzbUluZGV4T3JOYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQURCNkY2N0MxRTE1RDc1MDAwODJGMzg0IC8qIFdhc21QYWdlQ291bnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVBhZ2VDb3VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAvKiBX
YXNtVG9KUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXYXNtVG9KUy5oOyBwYXRoID0ganMvV2FzbVRvSlMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUREMDlBRUYxRjVGNjIzRjAwMTMxM0My
IC8qIFdhc21Ub0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdhc21Ub0pTLmNwcDsgcGF0aCA9
IGpzL1dhc21Ub0pTLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUREMDlBRjIx
RjYyNDgyOTAwMTMxM0MyIC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SlNXZWJBc3NlbWJseS5jcHA7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUREMDlBRjMxRjYyNDgyRTAwMTMxM0MyIC8qIEpTV2ViQXNz
ZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNXZWJBc3NlbWJseS5oOyBwYXRoID0ganMvSlNXZWJB
c3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREQ4RkE0MzFFQjMwNzcx
MDBERjU0MkYgLyogV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21OYW1lU2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBREQ4RkE0NDFFQjMwNzcxMDBERjU0MkYgLyogV2FzbU5hbWVTZWN0aW9uUGFy
c2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21OYW1lU2Vj
dGlvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERTgwMjkzMUUw
OEYxQzkwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOyBwYXRo
ID0ganMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUFERTgwMjk0MUUwOEYxQzkwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQURFODAyOTUxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlu
a0Vycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREU4MDI5
NjFFMDhGMUM5MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlMaW5rRXJyb3JQ
cm90b3R5cGUuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREU4MDI5NzFFMDhGMUM5MDA1OERFNzgg
LyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaDsgcGF0aCA9IGpzL1dl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFERTgwMjlEMUUwOEYyMjYwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2Vt
Ymx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlMaW5rRXJy
b3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDIxQkYy
MTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMwMkU5MDQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JDb25z
dHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOTA1MEUxODM5
REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVycm9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMwMkU5MDYwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9y
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9yUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOTA4MEUxODM5REIwMDBG
OTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzAyRTkwOTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOTBBMEUx
ODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVFcnJvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDJFOTBCMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVF
cnJvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAyRTk4QTBF
MTgzRTM4MDAwRjkyOTcgLyogRXJyb3JJbnN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFcnJvckluc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMwMkU5OEIwRTE4M0UzODAwMEY5Mjk3IC8qIEVycm9ySW5zdGFuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJyb3JJbnN0YW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzAyRTlCODBFMTg0NTQ1MDAwRjkyOTcgLyog
R2V0dGVyU2V0dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdl
dHRlclNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMDg5NEQ1MEZB
RkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0FQSVZhbHVlV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMDg5NEQ2MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3Jh
cHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVZhbHVlV3JhcHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzExNjYwMDBFMTk5N0IxMDA4MDY2
REQgLyogRGF0ZUluc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGVJbnN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTE2
NjAxMEUxOTk3QjEwMDgwNjZERCAvKiBEYXRlSW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0ZUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMTY3RDgwRTE5QkNDOTAwODA2NkREIC8qIEpTQ2VsbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NlbGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0Nv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEMzQzEwRTE2
RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmluZ0NvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMThDM0MyMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z09iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOEMzQzUwRTE2RUUzMzAwQjM0NDYw
IC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJpbmdQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzE4QzNDNjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExleGVyLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzIyQTM5ODBFMTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPYmplY3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzIyQTM5OTBFMTZFMTQ4MDBBRjIxQzggLyogSlNP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzAwRTE2RDRFOTAwQTA2RTkyIC8qIEZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMjY4MEMxMEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzIwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJl
ckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE51
bWJlckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgw
QzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMjY4MEM0MEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJQcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTnVtYmVyUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzUwRTE2RDRFOTAwQTA2
RTkyIC8qIE51bWJlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOdW1iZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgw
QzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9iamVjdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwQzcwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9iamVjdENvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjY4MEM4MEUxNkQ0RTkw
MEEwNkU5MiAvKiBPYmplY3RQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gT2JqZWN0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyNjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNjgwRTYwRTE2RDUyMzAwQTA2RTkyIC8qIE51bWJlckNv
bnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdW1iZXJD
b25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMDQ2MDYw
RTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzM3QkRFMEUxQUYw
QjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBs
aW5lRW5kaW5nID0gMDsgcGF0aCA9IEdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNw
cDsgfTsKKwkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkM2QUFBRTQwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc0luZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM3NTZGQzYwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3
NTZGQzcwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzk1MjA2MEUxNUU4QTgwMEE4OThBQiAvKiBB
cnJheUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFycmF5Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzc5
NTIwNzBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDNzk1MjMyMEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhbkNvbnN0
cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3OTUyMzMwRTE1RUI1
NjAwQTg5OEFCIC8qIEJvb2xlYW5Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCb29sZWFuQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkM3OTUyMzQwRTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhblByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzk1MjM1MEUxNUVCNTYwMEE4OThBQiAv
KiBCb29sZWFuUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJv
b2xlYW5Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM3RjhGQkEw
RTE5RDFFRjAwODYzMkMwIC8qIEpTQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzg3
Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM4RjNDQ0YwREFGMTdCQTAwNTc3QTgwIC8qIENvbnN0cnVjdERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0RGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzkwNDE0NzBFQjkyNTA5MDBGRTI2RkEgLyogU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzk1
NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0E2MkRGRTBFMjgyNjIzMDAwNEYzMEQg
LyogQ2FsbERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fs
bERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0E2MkRGRjBFMjgyNjMx
MDAwNEYzMEQgLyogQ29uc3RydWN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb25zdHJ1Y3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkNCRTJDQUQxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0Fzc2VydGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNDRjBEMDcwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4RiAv
KiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJ1Y3R1cmVTdHViSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDRDIwMkJEMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDb25zdHJ1Y3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBS
ZWdFeHBDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdF
eHBDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0QyMDJCRjBF
MTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDRDIwMkMwMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBQcm90b3R5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwUHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRDIwMkQ1MEUxNzA3MDgwMDJDN0U4MiAvKiBS
ZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnRXhwQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RDIwMzQ1MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMjAzNDYwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3
RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0ZVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVQcm90b3R5cGUubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREQ1MUU5MEZCOERGNzQwMDRBOEJEQyAvKiBK
SVRPcGNvZGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9w
Y29kZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0RFM0FCMDBFNkM4MkNG
MDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cnVjdHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREUz
QUIxMEU2QzgyQ0YwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RTJGQUZBMjYwOTE2RUYwMDBBNTEwRiAvKiBXZWFrR0NTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a0dDU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTJGQUZDMjYwOTE2RkYw
MDBBNTEwRiAvKiBXZWFrR0NTZXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ1NldElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFMkZBRkUyNjA5MTc4MjAw
MEE1MTBGIC8qIFdlYWtHQ0hhc2hUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NIYXNoVGFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNGNjA1MTEwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXJnTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjYwNTEyMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNGRDhDOTAwRUVCMkVF
NzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0ZE
OEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
REI0QjVFMDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMDMyODFFMTk4MTk3OUQw
MDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5jOyBuYW1lID0gQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmM7IHBhdGggPSBB
UEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMDMyODFGMTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmpl
Y3RDbGFzc1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tR2xv
YmFsT2JqZWN0Q2xhc3NUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0
Q2xhc3NUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMEJBOTJDMTZCQjFD
MTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFj
a0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNhbGxiYWNr
RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxODFGQzAxOEE5NDhG
QjAwMjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSlNFeHBvcnRUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxODFGQzExOEE5NDhGQjAwMjVBMjM1IC8q
IEpTRXhwb3J0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBKU0V4cG9ydFRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL0pTRXhwb3J0VGVzdHMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBT
bG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90
VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDk5MTZERTk5
RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjVGOEJD
QzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjgzMThGRjE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlQmxvY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJs
b2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVCbG9j
a0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEIyREMxOEE1NEQz
RTAwN0JFNDBCIC8qIERhdGVUZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEYXRlVGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVzdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERhdGVUZXN0cy5tbTsg
cGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtS
ZWZlcmVuY2VzLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFr
UmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjlFQ0IwMTE4MDRE
MEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdC5tbTsgcGF0aCA9IEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0
dGVyVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDIxODA0RDBF
RDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
Lmg7IHBhdGggPSBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8q
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
QjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRlQmFycmllcklubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGly
ZWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRGlyZWN0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4
NiAvKiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCbG9ja0RpcmVjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
QzBGN0NCMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFRyYW5zaXRpb25zLmNw
cDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkMwRjdDQzE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5z
aXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRUcmFu
c2l0aW9ucy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNB
UElXcmFwcGVyT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlD
MDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQVBJV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJGMEYyRDAxNkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVy
ZVJhcmVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVj
dHVyZVJhcmVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJGQ0FFMEMx
N0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUJhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMkZDQUUwRDE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVC
YXNpY0Jsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQmFz
aWNCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkZDQUUwRTE3QTlDMjRF
MDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyRkNBRTBGMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyRkUxOEEzMTZCQUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVSYXJlRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNDcwM0NCRjE5Mjg0NDk2MDAxM0ZCRUEgLyogZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gImdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0NzAzQ0MyMTkyODQ0Q0MwMDEzRkJFQSAvKiBf
X2luaXRfXy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IF9faW5pdF9f
LnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDcwM0NDMzE5Mjg0NENDMDAxM0ZC
RUEgLyogZ2VuZXJhdGVfanNfYmFja2VuZF9jb21tYW5kcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2pzX2JhY2tlbmRfY29tbWFuZHMucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0NzAzQ0NBMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5l
cmF0b3JfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzQ3
MDNDQ0IxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzQ3MDNDQ0MxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IG1vZGVscy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzRGNEI2Q0YxQTA1Qzc2RjAwNUNBQjc2IC8qIGNwcF9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRv
cl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0RjRCNkQwMUEw
NUM3NkYwMDVDQUI3NiAvKiBjcHBfZ2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gY3BwX2dlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzRGNEI2RDExQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rp
c3BhdGNoZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
Z2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM0RjRCNkQyMUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGNEI2RDMxQTA1Qzc2
RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2NwcF9mcm9udGVu
ZF9kaXNwYXRjaGVyX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRG
NEI2RDQxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
Z2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0RjRCNkQ1MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5l
cmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGNEI2RDYxQTA1Qzc2RjAwNUNBQjc2IC8qIGdl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGNEI2RDcxQTA1
Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRp
b24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9vYmpj
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNEY0QjZEODFBMDVDNzZGMDA1Q0FCNzYgLyogb2JqY19nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gb2JqY19nZW5lcmF0
b3JfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDFGOUIzOTI3
MEI5QUFEMDA2MTdFQjYgLyogRm9yd2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3J3YXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMUY5QjNCMjcwQzBDMUEwMDYxN0VCNiAvKiBU
eXBlZEFycmF5QWRhcHRlcnNGb3J3YXJkRGVjbGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5
cGVkQXJyYXlBZGFwdGVyc0ZvcndhcmREZWNsYXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0QxRjlCNDgyNzBDRkRDQzAwNjE3RUI2IC8qIEhhbmRsZUZvcndhcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGFuZGxlRm9yd2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDFGOUI0QTI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2FyZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJvbmdGb3J3YXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
MjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjBCRDAyMjM3RDNBRDQwMDQ2RTUyMCAv
KiBQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyMEJEMDMyMzdEM0FENDAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enpl
ckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyMEJEMDQyMzdEM0FENDAwNDZFNTIwIC8q
IEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3
QTNENTIzNzU5QkFDMDA4OTYwNUUgLyogV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDYyMzc1OUJBQzAwODk2MDVF
IC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0UyN0EzRDcyMzc1OUJBQzAwODk2MDVFIC8qIE5hcnJvd2lu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXJy
b3dpbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hcnJvd2luZ051bWJlclByZWRp
Y3Rpb25GdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI3QTNE
OTIzNzVBNkRDMDA4OTYwNUUgLyogTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE51bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtYmVyUHJlZGljdGlvbkZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFQ0ZBRDMyMjM3MkRB
QTcwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxl
QmFzZWRGdXp6ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUNGQUQz
MzIzNzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmlsZUJhc2VkRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnV6emVyUHJlZGljdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1enplclByZWRpY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJz
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVy
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQyMTIwMjI5MEFENDMxMEMw
MEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMw
MDAzOTAxOUQ4QkU2RjAwMDIzRUIwIC8qIERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5o
OyBwYXRoID0gZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJREMwMTg0MTcxRDEwQzE4NzAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFdvcmtsaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMwMTg0MTgxRDEwQzE4NzAwNTdCMDUzIC8q
IEpJVFdvcmtsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmts
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDMTdFODEzMUM5QzdGRDQwMDhB
NkFCMyAvKiBTaGFkb3dDaGlja2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYWRvd0NoaWNrZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
QzE3RTgxNDFDOUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDaGlja2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURDMTdFODE1MUM5QzdGRDQwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dDaGlja2VuSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzE3RTgxNjFDOUM4MDJCMDA4QTZB
QjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENDYWxsSGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDMjE0
MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElDU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEQzIxNDMwNjFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJQ1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIZWFwQ2VsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEQzYwNUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsg
cGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckV2ZW50Lmg7IHBhdGggPSBwcm9m
aWxlci9Qcm9maWxlckV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1
QjVCMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlclVJRC5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlclVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDNjA1QjVDMUNFMjZF
OTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQcm9maWxlclVJRC5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJVSUQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREM2OUFBNjUxQ0Y3QTFFRjAwQzYyNzJGIC8qIE1hdGNo
UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGNoUmVz
dWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREM2OUI5OUExRDE1RjkwRjAw
MkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBCM0luZmVyU3dpdGNoZXMuY3BwOyBwYXRoID0gYjMvQjNJbmZlclN3aXRjaGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREM2OUI5OUIxRDE1RjkwRjAwMkUz
QzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBCM0luZmVyU3dpdGNoZXMuaDsgcGF0aCA9IGIzL0IzSW5mZXJTd2l0Y2hlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEQzc5OTc4MTFDREU5RjlFMDA0RDRBMDkgLyogVGFnUmVn
aXN0ZXJzTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdS
ZWdpc3RlcnNNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREM3OTk3ODIx
Q0RFOUY5RTAwNEQ0QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGFnUmVnaXN0ZXJzTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEQzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0Nhc2VDb2xsZWN0aW9uLmNw
cDsgcGF0aCA9IGIzL0IzQ2FzZUNvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEQzlBMEMxRDFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0Nhc2VDb2xsZWN0aW9uLmg7IHBhdGgg
PSBiMy9CM0Nhc2VDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURD
OUEwQzFFMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oOyBw
YXRoID0gYjMvQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRENFRTIyMDYxQ0VCOTg5MDAwMEMyMzk2IC8qIERGR0JhY2t3YXJkc0NGRy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCYWNrd2FyZHNDRkcuaDsgcGF0aCA9
IGRmZy9ERkdCYWNrd2FyZHNDRkcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENF
RTIyMDcxQ0VCOTg5MDAwMEMyMzk2IC8qIERGR0JhY2t3YXJkc0RvbWluYXRvcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmFja3dhcmRzRG9taW5hdG9ycy5oOyBwYXRo
ID0gZGZnL0RGR0JhY2t3YXJkc0RvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRENFRTIyMDgxQ0VCOTg5MDAwMEMyMzk2IC8qIERGR0NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzLmg7IHBhdGggPSBkZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIyMEMxQ0VCQUY3MzAwMEMy
Mzk2IC8qIERGR051bGxBYnN0cmFjdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR051bGxBYnN0cmFjdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHTnVsbEFic3RyYWN0
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENGM0Q1NjQxQ0QyOTQ2ODAw
M0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMYXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEQ0YzRDU2NTFDRDI5NDY4MDAzRDVDNjUgLyogTGF6eUNsYXNzU3RydWN0dXJl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlDbGFzc1N0cnVjdHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0YzRDU2NjFDRDI5NDY4MDAzRDVDNjUg
LyogTGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURDRjNENTY3MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVydHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF6eVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURDRjNENTY4MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVy
dHlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhenlQcm9wZXJ0
eUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENGREZCRDcxRDFGNUQ5
ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNCb3R0b21Qcm92aWRlci5oOyBwYXRoID0gYjMvQjNCb3R0b21Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIg
LyogQjNUeXBlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzVHlwZU1h
cC5oOyBwYXRoID0gYjMvQjNUeXBlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURERTk5MzBFMjc4RDA4NjYwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBh
dGggPSBsaWJXZWJLaXRBZGRpdGlvbnMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3Jl
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJs
ZUNyZWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREUyNkU5MDYxQ0I1REQ5
NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERTVBMDlGRjFCQTNBQzNFMDAzRDQ0MjQgLyogSW50
cmluc2ljRW1pdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRyaW5zaWNFbWl0dGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREZCQzJD
QTUyNUU2RDU3OTAwODFCREQxIC8qIFN5bWJvbFN0dWJzRm9yU2FmYXJpQ29tcGF0aWJpbGl0eS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5bWJvbFN0dWJzRm9y
U2FmYXJpQ29tcGF0aWJpbGl0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEy
NEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE9wYXF1ZUpTU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcGFxdWVKU1N0cmluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNzg2MzNGMEQ5QkVDMDAwMEQ3NEU3NSAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluaXRpYWxpemVUaHJlYWRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE3
ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOEUzQTU2MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAv
KiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBw
YXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKKwkJRTMwNjAxMjgyMjhGOTc4MTAw
RkFBQkRGIC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
bmxpbmtlZE1ldGFkYXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc3RTI0Qzc4MjQ2MDBERjA2NDQg
LyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3
N0YyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50bFNlZ21lbnRlclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzA3MTc4MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMwNzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bFNlZ21lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzA3MTc4MjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMEU4QTRDMjZERTJFNDcwMERBNDkxNSAvKiBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzBFOEE0RDI2REUyRTQ3MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbFRpbWVab25lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwRThBNEUyNkRFMkU0NzAwREE0OTE1
IC8qIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzBFOEE0RjI2REUyRTQ3MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsVGltZVpvbmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzMTYxODEwMUVDNUZFMDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUFubm90YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxNjE4MTExRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzE2MTgxMjFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0E2NTI1NDQwNkI0
MDA0REMxMjkgLyogSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzMThDQTY2MjU0NDA2QjQwMDREQzEyOSAvKiBJbnRsTGlzdEZv
cm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTGlzdEZvcm1hdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0E2NzI1NDQwNkI1MDA0REMxMjkg
LyogSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50bExpc3RGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMxOENBNjgyNTQ0MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMaXN0Rm9ybWF0
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENBNjkyNTQ0
MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxMaXN0Rm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTMxOENBNkEyNTQ0MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0Q29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bExpc3RG
b3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThD
QkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzFDMzEzMDI1MTFBRkQ2MDBFN0EzQTAgLyogSW50bENhY2hlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzFDMzEzMTI1MTFBRkQ2MDBFN0EzQTAgLyogSW50bENhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjJFNUEwMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlw
cGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1Nu
aXBwZXRQYXJhbXMuY3BwOyBwYXRoID0gZGZnL0RGR1NuaXBwZXRQYXJhbXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25p
cHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTbmlwcGV0
UGFyYW1zLmg7IHBhdGggPSBkZmcvREZHU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzIyRTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFt
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTbmlwcGV0UGFy
YW1zLmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlwcGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJh
bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5o
OyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMyMzExNjgyNEExREMyRjAwNjkzREE1IC8qIEludGxOdW1iZXJGb3JtYXRJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9i
YWxEYXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBH
bG9iYWxEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzI1QTM1
RjIyMjExNThBMDA3MzQ5QTEgLyogU3RyaW5nUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMjZDNDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckVycm9yQ29kZS5j
cHA7IHBhdGggPSB5YXJyL1lhcnJFcnJvckNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmg7IHBhdGggPSB5YXJy
L1lhcnJFcnJvckNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyQzNDNjgy
M0U5NEMxRTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUwMjZEQUZENDIwMEQ0NTMzQSAvKiBU
ZW1wb3JhbENhbGVuZGFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlbXBvcmFsQ2FsZW5kYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzJE
NERFMTI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REUyMjZEQUZENDIwMEQ0NTMzQSAv
KiBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzJENERFMzI2REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxl
bmRhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMz
QSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMkQ0REU1MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMyRkVBMkEyNzQ0OEYzNjAwRkY0MUMxIC8qIEpTT05BdG9tU3RyaW5nQ2FjaGVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05BdG9tU3RyaW5nQ2Fj
aGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMkZFQTJCMjc0NDhG
MzYwMEZGNDFDMSAvKiBKU09OQXRvbVN0cmluZ0NhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT05BdG9tU3RyaW5nQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlWYXJpYW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlW
YXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlWYXJpYW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAv
KiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzNENCQjIy
MUZEOTZBODAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMzYz
N0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMzN0I5NjYyMjQzMjRFNTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbUNhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzM5NzAwNDIzMjEwRTBBMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMz
QTk0OTIyMjU1MzIyOTAwRDQyQjA2IC8qIEZ1enplckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0E5NDkzMjI1NTMy
MjkwMEQ0MkIwNiAvKiBSYW5kb21pemluZ0Z1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJhbmRvbWl6aW5nRnV6emVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzNBOTQ5NDIyNTUzMjI5MDBENDJCMDYgLyogUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSYW5kb21pemluZ0Z1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzM0E5NDk1MjI1NTMyMkEwMEQ0MkIwNiAvKiBGdXp6ZXJBZ2VudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzM0JCRTA3MjVCRkEwM0MwMDUzNjkwRiAvKiBXYXNtU3RyZWFtaW5nQ29t
cGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzQkJFMDgyNUJGQTAzQzAwNTM2OTBGIC8q
IFdhc21TdHJlYW1pbmdDb21waWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU3RyZWFtaW5nQ29t
cGlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRTgyNzdGMzAzRjAw
QTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkRW51bVJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFp5ZGlzR2VuZXJhdGVkRW51bVJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzM0QxRkU5Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc1JlZ2lz
dGVyLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5ZGlzUmVnaXN0ZXIuYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRUEyNzdGMzAzRjAwQTQ1RkJCIC8q
IFp5ZGlzR2VuZXJhdGVkSW5zdHJ1Y3Rpb25EZWZpbml0aW9ucy5pbmMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLnBhc2NhbDsgcGF0aCA9IFp5ZGlzR2VuZXJhdGVkSW5zdHJ1Y3Rpb25EZWZpbml0aW9u
cy5pbmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QxRkVCMjc3RjMwM0YwMEE0
NUZCQiAvKiBaeWNvcmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFp5Y29yZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRUMy
NzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5jOyBwYXRoID0gWnlkaXNGb3JtYXR0ZXJJbnRlbC5jOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzNEMUZFRTI3N0YzMDNGMDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5Y29yZVN0cmluZy5jOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMUZGMDI3N0YzMDNGMDBBNDVGQkIgLyogWnlkaXNT
dGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNTdGF0dXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRjEyNzdGMzAzRjAwQTQ1RkJCIC8q
IFp5ZGlzRm9ybWF0dGVyQVRULmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5
ZGlzRm9ybWF0dGVyQVRULmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QxRkYz
Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEZvcm1hdHRlclN0cmluZ3MuaW5jICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5wYXNjYWw7IHBhdGggPSBaeWRpc0dlbmVyYXRlZEZvcm1hdHRl
clN0cmluZ3MuaW5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMUZGNTI3N0Yz
MDNGMDBBNDVGQkIgLyogWnlkaXNVdGlscy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBh
dGggPSBaeWRpc1V0aWxzLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QxRkY2
Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsRm9ybWF0dGVySW50ZWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNJbnRlcm5hbEZvcm1hdHRlckludGVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QxRkY3Mjc3RjMwM0YwMEE0NUZCQiAv
KiBaeWRpc0ludGVybmFsRGVjb2RlckRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWnlkaXNJbnRlcm5hbERlY29kZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzM0QxRkY4Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWNvcmVDb21wYXJpc29uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5Y29yZUNvbXBhcmlzb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRjkyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlz
U2hhcmVkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNTaGFy
ZWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMUZGQTI3N0YzMDNG
MDBBNDVGQkIgLyogWnljb3JlVmVjdG9yLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0
aCA9IFp5Y29yZVZlY3Rvci5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMUZG
QjI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNJbnRlcm5hbFN0cmluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBaeWRpc0ludGVybmFsU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzM0QxRkZDMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc01ldGFJbmZv
LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5ZGlzTWV0YUluZm8uYzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRkQyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
Y29yZUZvcm1hdC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBaeWNvcmVGb3Jt
YXQuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDFGRkUyNzdGMzA0MDAwQTQ1
RkJCIC8qIFp5ZGlzR2VuZXJhdGVkRW51bU1uZW1vbmljLmluYyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUucGFzY2FsOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaW5jOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMUZGRjI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNJ
bnRlcm5hbEZvcm1hdHRlckFUVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBa
eWRpc0ludGVybmFsRm9ybWF0dGVyQVRULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzM0QyMDAxMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1JU0FTZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRFbnVtSVNBU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDAyMjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBaeWRpcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAwMzI3N0YzMDQwMDBBNDVGQkIgLyog
WnlkaXNGb3JtYXR0ZXJCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WnlkaXNGb3JtYXR0ZXJCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMz
RDIwMDQyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBaeWNvcmVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMzRDIwMDUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRXhwb3J0Q29uZmln
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5ZGlzRXhwb3J0Q29uZmlnLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDA2Mjc3RjMwNDAwMEE0NUZCQiAv
KiBaeWNvcmVTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3Jl
U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDA3Mjc3RjMwNDAw
MEE0NUZCQiAvKiBaeWRpc1N0cmluZy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGgg
PSBaeWRpc1N0cmluZy5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAwODI3
N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNEZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFp5ZGlzRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzNEMjAwOTI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNHZW5lcmF0ZWRBY2Nlc3NlZEZsYWdzLmlu
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUucGFzY2FsOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRBY2Nl
c3NlZEZsYWdzLmluYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMEEyNzdG
MzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
YzsgcGF0aCA9IFp5ZGlzRm9ybWF0dGVyLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzM0QyMDBDMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVCaXRzZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3JlQml0c2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzM0QyMDBFMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1J
U0FFeHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRF
bnVtSVNBRXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDBGMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1JbnN0cnVjdGlvbkNhdGVnb3J5LmluYyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUucGFzY2FsOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRFbnVtSW5z
dHJ1Y3Rpb25DYXRlZ29yeS5pbmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Qy
MDEwMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1NoYXJlZERhdGEuYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5jOyBwYXRoID0gWnlkaXNTaGFyZWREYXRhLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzM0QyMDExMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVMaXN0LmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5Y29yZUxpc3QuYzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMTIyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVk
RW51bUluc3RydWN0aW9uQ2F0ZWdvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWnlkaXNHZW5lcmF0ZWRFbnVtSW5zdHJ1Y3Rpb25DYXRlZ29yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzNEMjAxMzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNNbmVtb25p
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBaeWRpc01uZW1vbmljLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDE0Mjc3RjMwNDAwMEE0NUZCQiAvKiBa
eWRpc0dlbmVyYXRlZEVudW1JU0FFeHQuaW5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5wYXNjYWw7
IHBhdGggPSBaeWRpc0dlbmVyYXRlZEVudW1JU0FFeHQuaW5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzNEMjAxNTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5Y29yZVN0cmluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAxNzI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3JlVHlwZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMTkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
ZGlzR2VuZXJhdGVkSW5zdHJ1Y3Rpb25FbmNvZGluZ3MuaW5jICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5wYXNjYWw7IHBhdGggPSBaeWRpc0dlbmVyYXRlZEluc3RydWN0aW9uRW5jb2RpbmdzLmluYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMUEyNzdGMzA0MDAwQTQ1RkJCIC8q
IFp5ZGlzSW50ZXJuYWxGb3JtYXR0ZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFp5ZGlzSW50ZXJuYWxGb3JtYXR0ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzM0QyMDFCMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1JlZ2lzdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5ZGlzUmVnaXN0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMUMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2Vu
ZXJhdGVkRW51bUlTQVNldC5pbmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnBhc2NhbDsgcGF0aCA9
IFp5ZGlzR2VuZXJhdGVkRW51bUlTQVNldC5pbmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzM0QyMDFEMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3JlVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzM0QyMDFFMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVGb3JtYXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3JlRm9ybWF0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDFGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Rl
Y29kZXJEYXRhLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5ZGlzRGVjb2Rl
ckRhdGEuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMjAyNzdGMzA0MDAw
QTQ1RkJCIC8qIFp5ZGlzTWV0YUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWnlkaXNNZXRhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAy
MTI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNJbnRlcm5hbFNoYXJlZERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnlkaXNJbnRlcm5hbFNoYXJlZERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMjIyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29y
ZUxpYkMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWnljb3JlTGliQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAyNTI3N0YzMDQwMDBBNDVGQkIgLyog
WnlkaXNVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBaeWRpc1V0aWxz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDI2Mjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpc0RlY29kZXIuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gWnlk
aXNEZWNvZGVyLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDI3Mjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWRpc1Nob3J0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFp5ZGlzU2hvcnRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMzRDIwMjgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5ZGlzRm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzM0QyMDI5Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRl
ZERlY29kZXJUYWJsZXMuaW5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5wYXNjYWw7IHBhdGggPSBa
eWRpc0dlbmVyYXRlZERlY29kZXJUYWJsZXMuaW5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzNEMjAyQTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5Y29yZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzNEMjAyQjI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNGb3JtYXR0ZXJC
dWZmZXIuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gWnlkaXNGb3JtYXR0ZXJC
dWZmZXIuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMkMyNzdGMzA0MDAw
QTQ1RkJCIC8qIFp5ZGlzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5ZGlz
LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDJEMjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpc0dlbmVyYXRlZEVudW1SZWdpc3Rlci5pbmMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LnBhc2NhbDsgcGF0aCA9IFp5ZGlzR2VuZXJhdGVkRW51bVJlZ2lzdGVyLmluYzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMkUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUFs
bG9jYXRvci5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBaeWNvcmVBbGxvY2F0
b3IuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMzAyNzdGMzA0MDAwQTQ1
RkJCIC8qIFp5ZGlzR2VuZXJhdGVkT3BlcmFuZERlZmluaXRpb25zLmluYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUucGFzY2FsOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRPcGVyYW5kRGVmaW5pdGlvbnMu
aW5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAzMTI3N0YzMDQwMDBBNDVG
QkIgLyogWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTMzRDIwMzIyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzTW5lbW9uaWMu
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gWnlkaXNNbmVtb25pYy5jOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAzMzI3N0YzMDQwMDBBNDVGQkIgLyogWnlj
b3JlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBaeWNvcmVMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0QyMDM0Mjc3RjMwNDAwMEE0NUZCQiAv
KiBaeWRpc0RlY29kZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBa
eWRpc0RlY29kZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjAz
NjI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQml0c2V0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuYzsgcGF0aCA9IFp5Y29yZUJpdHNldC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzNEMjAzNzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNGb3JtYXR0ZXJCYXNlLmMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IFp5ZGlzRm9ybWF0dGVyQmFzZS5jOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzNEMjA4QTI3N0YzMEFBMDBBNDVGQkIgLyogWnljb3Jl
RXhwb3J0Q29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFp5Y29yZUV4
cG9ydENvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNFOEQxQTFCOTAx
M0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3Rk
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYXRpdmVTdGRG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA3MjFCODQyMUMw
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA3MzFCODQyMUMwMDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTMzRjUwNzYxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzM0Y1MDc3MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzRjUwN0UxQjg0MjlB
NDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMzRjUwN0YxQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxQcm9taXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM0MDBFQzAyMkExQ0M3ODAwOURFRDU0IC8qIEZ1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzQ5QTc3RjI0OTFGMTU5MDAxQkEzMzYgLyog
REZHQ29kZU9yaWdpblBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29kZU9yaWdpblBv
b2wuY3BwOyBwYXRoID0gZGZnL0RGR0NvZGVPcmlnaW5Qb29sLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM0OUE3ODAyNDkxRjE1QTAwMUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Q
b29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvZGVPcmlnaW5Qb29sLmg7IHBhdGggPSBkZmcvREZH
Q29kZU9yaWdpblBvb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RTY1NzMy
MDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYXJzZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0RTY1
NzQyMDY2OEU4RTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYXJzZUhhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJhY2Vycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzRGOTMwQjIzMjJEODgxMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW5lcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRGOTMwQzIzMjJEODgxMDAyQjhEQjQgLyog
SlNHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1MDcwODkxREM0OUJCNjAwODlC
Q0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01KSVRTaWduYXR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0Mx
MTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlOYW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxh
eU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEaXNwbGF5TmFt
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTgyNEFBNENCNjAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0MxMTkyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNTNDMTFBMjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERpc3BsYXlO
YW1lc0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1M0Mx
MUIyNEFBNENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU0NjIyQTFCNjA2NUQxMDA1NDUzODYgLyog
Q29uc3RydWN0QWJpbGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25z
dHJ1Y3RBYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTU1Qjg5MURB
RTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU1RDM4RDIyNDQ2ODZCMDA4RjFBRDYgLyogR2xv
YmFsRXhlY3V0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTVEMzhFMjI0NDY4NkMwMDhGMUFENiAvKiBHbG9i
YWxFeGVjdXRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdsb2JhbEV4ZWN1dGFibGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzU2OTg3MTIyODQxMTgzMDA4Q0RDQ0Ig
LyogUGFja2VkQ2VsbFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRDZWxsUHRyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUEwQjlDMjIwQUQ4N0EwMEFDNDQ3NCAvKiBFeGVj
dXRhYmxlQmFzZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhl
Y3V0YWJsZUJhc2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUNB
MTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJ
VEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRB
YnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1Q0ExNTExREJD
M0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzVDQTE1MjFEQkMzQTU2MDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEhlYXBSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzVFODlGQjI1QzUwRjg2MDA3MUVFMUUgLyogQmln
SW50NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaWdJbnQ2NEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNUU4OUZDMjVDNTBGODcwMDcx
RUUxRSAvKiBCaWdVaW50NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCaWdVaW50NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzYzN0VF
NzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5rVGltZUNvbnN0YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtUaW1lQ29uc3RhbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzY1RjMzODI0QUE2MjExMDBDOTkx
QjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NUYzMzkyNEFBNjIxMjAwQzk5MUIyIC8qIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzZCNDgwMTIzRTk1NzM4MDBFNEE2NkUgLyogVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZDQzk0NjIwODYzMTRGMDA1
MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
NkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
NzQxNjZEMjY5MTJCQzcwMEM4MDc4OSAvKiBPYmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0Q29uc3RydWN0b3JJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVs
ZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzN0NGQjJEMjJGMjdD
NTcwMDlBN0IzOCAvKiBXYXNtQ29tcGlsYXRpb25Nb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21Db21waWxhdGlvbk1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVp
bHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0
aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODM1MDA4MjM5MEQ5
MzcwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21HbG9i
YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgzNTAwOTIzOTBEOTM3MDAz
NjMxNkQgLyogV2FzbUdsb2JhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtR2xvYmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdN
aW5pZmllZElESW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElESW5saW5lcy5o
OyBwYXRoID0gZGZnL0RGR01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODZGRDc0MjZFODY3QjcwMEU0QzI4QiAv
KiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzg2RkQ3NTI2RTg2N0I3MDBFNEMyOEIgLyogVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzODZGRDc2MjZFODY3QjcwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODZG
RDc3MjZFODY3QjcwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbFBsYWluVGltZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODZGRDc4MjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3Jh
bFBsYWluVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBs
YWluVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzg2RkQ3OTI2RTg2N0I4
MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4OTNBMUMyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJv
bVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzhEMDYwQjFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRG
ZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDA2MEMx
RjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM4RDA2MEQxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YnNwYWNlQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzOTE1QzA2MjMwOTY4MjkwMENCMjU2MSAvKiBXYXNtQ29udGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzOTJFNkY2MjREMjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNCb3R0b21UdXBsZVZh
bHVlLmNwcDsgcGF0aCA9IGIzL0IzQm90dG9tVHVwbGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzOTJFNkY3MjREMjVGQTYwMEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxl
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCb3R0b21UdXBsZVZh
bHVlLmg7IHBhdGggPSBiMy9CM0JvdHRvbVR1cGxlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM5M0FERDcxRkU3MDJDQzAwMjJENjgxIC8qIFdlYWtNYXBJbXBsSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwSW1wbElubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1
IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzlCRjM5ODIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9sVGFibGVJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFRhYmxlSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOEIyQzIzMDIxRTFFMDAyNjU4NTIgLyogV2Fz
bU9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU9wZXJhdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOEIyRDIzMDIxRTFFMDAyNjU4NTIgLyog
V2FzbU9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9wZXJhdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVy
cHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnBy
ZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUUwMzBEMjJEOUVBM0UwMDQwOEMxOCAvKiBXZWJBc3Nl
bWJseS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFdlYkFzc2VtYmx5LmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzlFNDQ4RTI3NDhFM0Y4MDBFREQyQTUgLyogUmVwYXRjaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBhdGNoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOUU0NDhGMjc0OEUzRjgwMEVERDJBNSAvKiBSZXBhdGNoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcGF0Y2guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlFNDQ5MDI3NDhFM0Y4MDBFREQyQTUgLyogUmVw
YXRjaElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwYXRjaElu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RUVBRjEyMjgxMjQ0QzAw
ODQ3NEY0IC8qIENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlF
RUFGMjIyODEyNDRDMDA4NDc0RjQgLyogQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNwZWNpYWxQcm9wZXJ0eUFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzlGRUJFMTIzMzlDNUQ0MDBCNDBBQjAgLyogSlNBc3luY0dlbmVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0FzeW5jR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM5RkVCRTIyMzM5QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBc3luY0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0EwNTMxNjIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVN0cmVhbWluZ1BhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU3RyZWFtaW5nUGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTA1MzE3MjEzNDJCNjYwMDIyRUMxNCAv
KiBXYXNtU2VjdGlvblBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXYXNtU2VjdGlvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzQTA1MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlvblBhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtU2VjdGlvblBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0EwNTMxOTIxMzQyQjY3MDAyMkVDMTQgLyogV2FzbVN0cmVh
bWluZ1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNt
U3RyZWFtaW5nUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTBF
N0YyNzgwM0UzQjAwRDNBQ0QwIC8qIFp5Y29yZS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7
IHBhdGggPSBaeWNvcmUuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMTBFODAy
NzgwM0UzQjAwRDNBQ0QwIC8qIFp5Y29yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBaeWNvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBMzJCQzUxRkM4
MzEyRDAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYWtNYXBJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNBMzJCQzYxRkM4MzEyRTAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNpc2VKdW1wVGFy
Z2V0c0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRDJCNzUyMkYy
NzUwMjAwMTE3NjVDIC8qIFdhc21Db21waWxhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUNvbXBpbGF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0JGMUJBRDIzOEFBRUQxMDAzQTFDMkIgLyogSXNvSGVhcENlbGxUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElzb0hlYXBDZWxsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0JGM0M0QjIzOTBEMUUyMDA4QkM3NTIgLyogSlNXZWJBc3NlbWJseUdsb2JhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5R2xvYmFsLmg7IHBhdGggPSBqcy9KU1dlYkFz
c2VtYmx5R2xvYmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkYzQzRDMjM5
MEQxRTMwMDhCQzc1MiAvKiBKU1dlYkFzc2VtYmx5R2xvYmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTV2ViQXNzZW1ibHlHbG9iYWwuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseUdsb2Jh
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkYzQzRFMjM5MEQxRkMwMDhC
Qzc1MiAvKiBXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1i
bHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
QkYzQzRGMjM5MEQxRkMwMDhCQzc1MiAvKiBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHA7IHBhdGgg
PSBqcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzQkYzQzUwMjM5MEQxRkMwMDhCQzc1MiAvKiBXZWJBc3NlbWJseUdsb2JhbFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5oOyBw
YXRoID0ganMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNCRjNDNTEyMzkwRDFGQzAwOEJDNzUyIC8qIFdlYkFzc2VtYmx5R2xvYmFs
Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rv
ci5oOyBwYXRoID0ganMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0JGQTVDQjIxRTg1M0EwMDA5QzBFQkEgLyogREZHRGVzaXJl
ZEdsb2JhbFByb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkE1
Q0MyMUU4NTNBMDAwOUMwRUJBIC8qIERGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmg7
IHBhdGggPSBkZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNCRkE1Q0QyMUU4NTNBMTAwOUMwRUJBIC8qIERGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEZXNpcmVk
R2xvYmFsUHJvcGVydHkuaDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8q
IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIEFjY2Vzc0Nhc2VTbmlwcGV0
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc0Nhc2VTbmlw
cGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzI5NURDMUVEMkNC
QUEwMEQzMDE2RiAvKiBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M0NjMwNTI2
REI1REU5MDA4OTYzMzYgLyogVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmx1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzQzQ2MzA2MjZEQjVERTkwMDg5NjMzNiAvKiBUZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0M2OTRCMTIzMDI2
ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT1NS
RW50cnlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzY5NEIyMjMwMjY4
NzQwMDZGQkU0MiAvKiBXYXNtVGllclVwQ291bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bVRpZXJVcENvdW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNDNzNBOEYy
NUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21TdHJlYW1pbmdQbGFuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNDNzNBOTAyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJlYW1p
bmdQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TdHJlYW1pbmdQ
bGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzc5Q0FBMURCOUE0RDYwMEQx
RUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklURWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQzhFRDQxMjNB
MURCQzQwMDEzMTk1OCAvKiBJc29IZWFwQ2VsbFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSXNvSGVhcENlbGxUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0NBM0E0QjI1MjdBQjJF
MDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGVyYXRpb25MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTNDQTNBNEMyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUT3BlcmF0aW9uTGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0Mjgx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlUmV3cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNv
ZGVSZXdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QzNTE1RDI0MUI4
OUNFMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
cmtlZEpTVmFsdWVSZWZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Qz
NTE1RTI0MUI4OUNGMDA4REMxNkUgLyogTWFya2VkSlNWYWx1ZVJlZkFycmF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hcmtlZEpTVmFsdWVSZWZBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDZGNkVGMjVENzkxQjMwMEMyMEVCNCAvKiBUZXN0QVBJLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IFRlc3RBUEkueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzRDg3NzcxMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUR1bXBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDg3NzcyMUU2NUMwODkwMEJFOTQ1QSAvKiBC
eXRlY29kZUR1bXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZUR1bXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0U5RjhENTI1RDc1ODJG
MDBGOUY4NEIgLyogcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5zaDsgcGF0aCA9ICJwcm9jZXNzLWVudGl0bGVtZW50cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRUUxMzc0MjFGQkQ0MzQwMEQ4M0M0QiAvKiBFcnJvclR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJyb3JUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRUUxMzc1MjFGQkQ0MzQwMEQ4M0M0QiAvKiBFcnJvclR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMEZDOTQyNkExMUI0QTAwOTlGRkEwIC8qIFlh
cnJNYXRjaGluZ0NvbnRleHRIb2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gWWFyck1hdGNoaW5nQ29udGV4dEhvbGRlci5oOyBwYXRoID0geWFyci9ZYXJyTWF0Y2hpbmdD
b250ZXh0SG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTJGMjRD
Nzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNGMjE5MzAyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRs
U2VnbWVudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50SXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzIyNEM3ODgyQTAwM0FFNDUzIC8q
IEludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVu
dHNQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzMzI0
Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdt
ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzNDI0Qzc4ODJBMDAz
QUU0NTMgLyogSW50bFNlZ21lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxTZWdtZW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTM1MjRDNzg4MkEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0YyMTkzNjI0Qzc4ODJCMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50c1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0YyM0E3QjFFQ0YxM0U1MDA5NzhEOTkgLyogU25pcHBldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbmlwcGV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRjIzQTdDMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlwcGV0UGFy
YW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNuaXBwZXRQYXJhbXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8q
IFNuaXBwZXRSZWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU25pcHBldFJl
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyM0E3RTFFQ0YxM0U1MDA5NzhE
OTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU25pcHBldFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNGQjg1MzgyMkYzNjY3NDAwOEY5MEVEIC8qIFdhc21DYWxsZWVSZWdpc3RyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtQ2FsbGVlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNGQjg1MzkyMkYzNjY3NDAwOEY5MEVEIC8qIFdhc21DYWxsZWVSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2FsbGVlUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0ZDMjUxMDIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGlj
dGlvbkZ1enplckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvdWJsZVByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRkMyNTExMjI1
NkVDRjQwMDU4MzUxOCAvKiBEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRkNDQjYzMjMxMEE5MEQwMDIzOEU3MiAvKiBDb25zdHJ1Y3RvcktpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0b3JLaW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRkY3NTJGMUQ5Q0VBMTIwMEM3RTE2RCAvKiBET01K
SVRHZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklU
R2V0dGVyU2V0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0OURDMTQ5MTJF
RjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNDlEQzE1MTEyRUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92
aWRlckNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0OURDMTU1MTJFRjI3
NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGMzQ1OUQ3NDIzOTczQUJEMDBEQ0QyN0EgLyogSW5zcGVjdG9yVGFy
Z2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRhcmdldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1QkIyQkM1MDMwRjc3MjEwMUZDRkUxRCAvKiBDb21wbGV0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBsZXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owor
CQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlw
dENvcmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owor
CQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAv
KiBBcnJheVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQXJyYXlQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0
aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OworCQlGNjkyQTg0RTAyNTU1OTdEMDFG
RjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg1MDAyNTU1OTdEMDFGRjYwRjcgLyogQm9v
bGVhbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCb29sZWFuT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hh
c2hfdGFibGUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBw
YXRoID0gY3JlYXRlX2hhc2hfdGFibGU7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgfTsKKwkJRjY5MkE4NTgwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVn
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjky
QTg1OTAyNTU1OTdEMDFGRjYwRjcgLyogRGVidWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg1QzAyNTU1OTdEMDFGRjYwRjcgLyog
RnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAv
KiBGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGdW5jdGlvblByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODVFMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1
bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CisJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg2
MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg2NTAyNTU1OTdEMDFGRjYwRjcgLyogTGV4
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGV4ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CisJCUY2OTJBODY2MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZXhlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODY4MDI1NTU5N0QwMUZGNjBGNyAv
KiBMb29rdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTG9va3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB9OworCQlGNjkyQTg2OTAyNTU1OTdEMDFGRjYwRjcgLyogTG9va3VwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvb2t1cC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODZBMDI1NTU5N0Qw
MUZGNjBGNyAvKiBNYXRoT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODZCMDI1NTU5N0QwMUZGNjBGNyAvKiBN
YXRoT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9OworCQlGNjkyQTg2RDAyNTU1OTdEMDFGRjYwRjcgLyogTm9kZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODZFMDI1NTU5
N0QwMUZGNjBGNyAvKiBOb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07CisJCUY2OTJBODcwMDI1NTU5N0QwMUZGNjBGNyAvKiBOdW1iZXJPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TnVtYmVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OworCQlGNjkyQTg3MTAyNTU1OTdEMDFGRjYwRjcgLyogTnVtYmVyT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE51bWJlck9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODc3MDI1
NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBG
NyAvKiBPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OworCQlGNjkyQTg3QjAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZ0V4cE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKKwkJRjY5MkE4N0MwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNjkyQTg3RDAy
NTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKKwkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8qIFJl
Z0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlG
NjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NKU1ZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlGNkQ2N0QzOTI2Rjkw
MkU1MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY2RDY3RDNBMjZGOTAyRTUwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJbnN0YW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY2RDY3RDNDMjZGOTAyRTcwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkQ2N0Qz
RDI2RjkwMkU3MDA2RTAzNDkgLyogVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RDY3RDNFMjZGOTAyRTgwMDZFMDM0
OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY2RDY3RDQ1MjZGOTEzMEEwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxJ
bnN0YW50Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2
RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsSW5zdGFudFByb3RvdHlw
ZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGMTUwMTgyNjkzRDMzRDAw
NEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFsTm93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2RjE1MDE5MjY5
M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY2RjE1MDFBMjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbE9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNkYxNTAxQjI2OTNEMzNFMDA0Qjk4RUYgLyogVGVtcG9y
YWxOb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxO
b3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkYxNTAyMDI2OTNENDUwMDA0
Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlbXBvcmFsT2JqZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNzM5MjY5MThEQzY0MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU291cmNlQ29kZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFMDAyNjIyMjNGM0FGMzMwMDNBMzU4RiAvKiBXZWJBc3NlbWJs
eS5hc20gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmFzbS5hc207IG5hbWUgPSBXZWJBc3NlbWJseS5hc207IHBhdGggPSBsbGludC9X
ZWJBc3NlbWJseS5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDQxNTUyMjUy
RUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTbG90VmlzaXRvck1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTA4NkJDOTIxMjNERUZBMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRyeUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFMEQ0QTA0MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGlt
aXRUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV4ZWN1dGlv
blRpbWVMaW1pdFRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTBENEEwNTFBQjhERDBBMDAy
RjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBFeGVjdXRpb25UaW1lTGltaXRUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvRXhl
Y3V0aW9uVGltZUxpbWl0VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTBE
NEEwNzFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdsb2JhbENvbnRleHRXaXRo
RmluYWxpemVyVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvR2xvYmFsQ29udGV4dFdpdGhGaW5h
bGl6ZXJUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwRDRBMDgxQUJB
MjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3Qu
aDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwREExMDIyNDI5NDE3RjAwQTg4NEE2IC8qIGdl
bmVyYXRlX3NldHRpbmdzX2V4dHJhY3Rvci5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBnZW5lcmF0ZV9z
ZXR0aW5nc19leHRyYWN0b3IucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBB
QUU5MUY0NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByb2JlU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTEwQUFFQTFGNDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZVN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvYmVDb250ZXh0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvYmVDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxMjIwMjUxQkU3RjU2NDAw
MzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTE0MDkwNjIwNTZGM0ZFMDBDRkUzMTggLyogTmF0aXZlRnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxODc5RkYxQkZCQzczQzAwMzhCQkNB
IC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKSVRNdWxHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTE4N0EwQTFDMDIyOTIzMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVERpdkdlbmVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTg3QTBCMUMwMjI5MjMwMDM4
QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklURGl2R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTg3
QTBDMUMwMkVCQTcwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTbmlwcGV0T3BlcmFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTFCRDAxQjFFNzIwMDIxMDAxMzRCQzkgLyogQ2VsbExpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2VsbExpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTFCRDAxQzFFNzIwMDIxMDAxMzRCQzkgLyogQ2VsbExpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VsbExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFw
VmVyaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZl
cmlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxQkQwMjMxRTcyMDUy
RjAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIZWFwVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxQzBG
RkMxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUx
QzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTFENkQ2QzIzNjI1NDRBMDA3QTVDMjYgLyogUmVnaXN0ZXJJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVySW5saW5lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQ2RTIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0Vk0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUxRDZENzAyMzYyNUFCMDAwN0E1QzI2IC8qIEFycmF5U3RvcmFn
ZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlTdG9yYWdl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQ3NDIzNjI2NDlE
MDA3QTVDMjYgLyogUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByb3RvQ2FsbEZyYW1lSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTFFMkMzQzIyNDBDMUVGMDBGNkI3MjkgLyogSlNDUHRyVGFnLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1B0clRhZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUUyQzNEMjI0MEQyRjYwMEY2QjcyOSAvKiBBUk02NEVB
c3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNNjRFQXNzZW1i
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUUyQzNFMjI0MEQzMEIwMEY2
QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50
L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTIwQ0U5QzE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMjg3RDAxMjUyRkIyRTgwMEQ3MjNGOSAvKiBWZXJpZmll
clNsb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcmlmaWVy
U2xvdFZpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyQTg3NUYxRjAy
MzgxNjAwRUIzMUIyIC8qIE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFMkJENjZFMjVDMERDODIwMDk5OUQzQiAvKiBWZXJpZmllclNsb3RWaXNpdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcmlmaWVyU2xvdFZpc2l0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJDQzkyRjI3NTZCMkI5MDAzRjVBQjgg
LyogSGVhcFN1YnNwYWNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFN1YnNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyRTZB
N0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFMzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ2lsbENyYXNoQW5hbHl6
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMwMjJEMTFFM0Q3Mzk2MDBC
QUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFMzAyMkQ0MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMzNkI1MjI1REI0OTdEMDA5OEYwMzQgLyogTWFy
a2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFya2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTM0RUUyMDI0Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxB
bGl2ZUhlcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3Vy
ZVN0aWxsQWxpdmVIZXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUzNUMyRjAyMUIxRTZDNTAwMEY0Q0E4IC8qIFRlbXBsYXRlLnJiICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucnVieTsgcGF0aCA9IFRlbXBsYXRlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTM1QzJGMTIxQjFFNkM2MDAwRjRDQTggLyogRml0cy5yYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnJ1Ynk7IHBhdGggPSBGaXRzLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTM1QzJGMjIxQjFFNkM2MDAwRjRDQTggLyogR2VuZXJhdGVkRmlsZS5yYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBHZW5lcmF0ZWRGaWxlLnJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTM1QzJGMzIxQjFFNkM2MDAwRjRDQTggLyogQXNzZXJ0aW9uLnJi
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IEFzc2VydGlvbi5yYjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNUMyRjQyMUIxRTZDNjAwMEY0Q0E4IC8qIFNlY3Rp
b24ucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gU2VjdGlvbi5yYjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNUMyRjUyMUIxRTZDNjAwMEY0Q0E4IC8qIERT
TC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBEU0wucmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzVDMkY2MjFCMUU2QzYwMDBGNENBOCAvKiBPcGNvZGUu
cmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gT3Bjb2RlLnJiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTM1QzJGNzIxQjFFNkM3MDAwRjRDQTggLyogQXJndW1l
bnQucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gQXJndW1lbnQucmI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzVDMkY4MjFCMUU2QzcwMDBGNENBOCAvKiBt
YWluLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IG1haW4ucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzVDMkY5MjFCMUU2QzcwMDBGNENBOCAvKiBUeXBl
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IFR5cGUucmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25z
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE9wdGlvbnMucmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzVDMkZCMjFCMUU2QzcwMDBGNENBOCAvKiBPcGNv
ZGVHcm91cC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBPcGNvZGVHcm91
cC5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0
Q0E4IC8qIE1ldGFkYXRhLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IE1l
dGFkYXRhLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM4NDIzMTIzMjRENTFC
MDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uc0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzODRFRTEx
QUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkUzQTA2QTMxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEJpdE9yR2VuZXJhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzQTA2QTQxQzEwQjcwODAwMzkw
RkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpJVEJpdE9yR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
M0EwNkE3MUMxMEJDNzQwMDM5MEZERCAvKiBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTNBMDZBRDFDMTBDQjZGMDAzOTBGREQgLyog
SklUQml0QW5kR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVEJpdEFuZEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFM0EwNkFFMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQml0QW5kR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFM0EwNkFGMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRY
b3JHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklU
Qml0WG9yR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzQTA2
QjAxQzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRCaXRYb3JHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkUzQTA2QjYxQzExMDNEOTAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRMZWZ0
U2hpZnRHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTNBMDZC
NzFDMTEwM0Q5MDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVExlZnRTaGlmdEdlbmVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTNBMDZCODFDMTEwM0Q5MDAzOTBGREQgLyogSklUUmlnaHRT
aGlmdEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUzQTA2QjkxQzExMDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTNCNjQyRTI1RDZGQjRDMDAxQUREQjQgLyog
Um9vdE1hcmtSZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm9vdE1h
cmtSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0MjM4OEYxQkUxOEMx
MjAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRTdWJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTQ3NkZGMzIwN0U4NUQ0MDA5M0NBMkQgLyogSklUQ29kZU1hcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb2RlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NDhCRDQzMjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDQ29uZmlnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0OEU2MzYx
RUIxMTg4RjAwNUQ3QTk2IC8qIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ4RTYzNzFFQjExOEFEMDA1RDdBOTYgLyogT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU0QkZGMjkxQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uT3ZlcnJp
ZGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0QkZGMkExQUQ0NzZFNzAw
MDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZ1bmN0aW9uT3ZlcnJpZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFNEQ1NUI3MUFFNzE2Q0EwMDUyRTQ1OSAvKiBJdGVyYXRpb25TdGF0dXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSXRlcmF0aW9uU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFNTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJj
ZUR1bXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJyZWRTb3VyY2VE
dW1wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTA2ODY2MUFFMjVFMjgwMDA5
REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGVmZXJyZWRTb3VyY2VEdW1wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHRlc3RtYXNtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU1MzNDQUMxRjIxN0RCNDAwMTZBMUZFIC8qIHRlc3RtYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUi
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0bWFzbTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJRkU1NERFRkExRThDNkQ3MjAwQTg5MkM1IC8qIERpc2FsbG93
Vk1FbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhbGxvd1ZNRW50
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NERFRkUxRThENzQyODAwQTg5
MkM1IC8qIERpc2FsbG93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzYWxsb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU2MjhDQjFF
OTk1MTI0MDBDNDlFNDUgLyogQWlyUHJpbnRTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEFpclByaW50U3BlY2lhbC5jcHA7IHBhdGggPSBiMy9haXIvQWly
UHJpbnRTcGVjaWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1NjI4Q0Mx
RTk5NTEyNDAwQzQ5RTQ1IC8qIEFpclByaW50U3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJQcmludFNwZWNpYWwuaDsgcGF0aCA9IGIzL2Fpci9BaXJQcmludFNw
ZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1OTMyQTUxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25FdmVudExvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNjNERDUzMUVBOUI2MEUwMDEw
M0E2OSAvKiBQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2M0RENTUxRUE5QkM1RDAwMTAz
QTY5IC8qIFByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UHJpbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNjQ4NzJEMjE0MUQw
NDgwMEFCMEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9wY29kZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2
NDkxMzYxRDc4RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFNjQ5MTM4MUQ3OEYzQTMwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb25TY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNjVCMTUwMjc0ODYwMUYwMERCNUIxNiAv
KiBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJc29JbmxpbmVkSGVhcENlbGxUeXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJs
ZXJQcmludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNjhD
NjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNkY1NkRDMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNVHJhcHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTZGNTZERDFFNjRFOTIwMDBEMTc4MDEgLyog
Vk1UcmFwcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTVRyYXBzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBK
U0NQdHJUYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDUHRyVGFnLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBDMTk2MUQ3NzVCMjcwMDg1MTBDMCAv
KiBDYXRjaFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhdGNoU2Nv
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEMxOTgxRDc3NUZCNDAwODUx
MEMwIC8qIENhdGNoU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2F0Y2hTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBDMTlB
MUQ3NzY4RkQwMDg1MTBDMCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRThDMDMxMTI2NEE2OTEwMDAxQTQ0QUQgLyog
U2xvd1BhdGhGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbG93
UGF0aEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOERFNTRBMjNB
QzFEQUQwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlYWJsZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU4REU1NEMyM0FDMUU4NjAwNUM5MTQyIC8qIENhY2hlYWJsZUlkZW50aWZp
ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlYWJsZUlk
ZW50aWZpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOERFNTRF
MjNBQzNBOEUwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhY2hlYWJsZUlkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyogVk1JbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTkxMkI0RTI1MzExOTMzMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFNsb3RWaXNpdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOTEyQjUwMjUzMTFBRDEwMEZBQkRERiAv
KiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTkyRTFERDI1RkMwMzFEMDAxOEZDRjAgLyogUm9vdE1hcmtSZWFzb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUm9vdE1hcmtSZWFzb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk4QjVCNjFCQjlBRTExMDA3M0U3QTYg
LyogSklUU3ViR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VFN1YkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk5QjI0NzFD
MjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFOTlCMjQ4MUMyNEI2RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUTmVnR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOUYzRkI4MjYxM0M3ODgwMDY5RTg5RiAvKiBS
ZXNvdXJjZUV4aGF1c3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VFeGhhdXN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOUYzRkJB
MjYxM0M4N0MwMDY5RTg5RiAvKiBSZXNvdXJjZUV4aGF1c3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzb3VyY2VFeGhhdXN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU5RjNGQzYyNjE2M0NBOTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJUZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTlGQTdDNDI3M0M4QjI2MDA1RDlFNzAgLyogRGVmZXJHQ0lu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJHQ0lubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUx
IC8qIEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUEwODYxRjE4MkI3QTA0MDBG
NkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlYnVnZ2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRnJhbWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFQTNCQkFCMjEyQzk3Q0IwMEU5M0FEMSAvKiBERkdDRkcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ0ZHLmg7IHBhdGggPSBkZmcvREZH
Q0ZHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjEzNzU2MUJCMTFFRUUwMENE
NTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUI0MUNDQjFGNzMyODQyMDBDNTQ4MUUgLyogUHJvYmVGcmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFQjUxRjZBMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlZ3Jlc3MxNDE4MDkuaDsgcGF0
aCA9IEFQSS90ZXN0cy9SZWdyZXNzMTQxODA5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVncmVzczE0MTgwOS5tbTsgcGF0aCA9
IEFQSS90ZXN0cy9SZWdyZXNzMTQxODA5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRUI1OEMxMjE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9ySGFuZGxpbmdTY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQjU4QzEzMTg3QjhCMTYwMDk4RUYwQiAv
KiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXJyb3JIYW5kbGluZ1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzE2
MDMxMjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDZWxsU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMz
QTM5RjI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRG9lc0dDQ2hlY2suY3BwOyBwYXRoID0gZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzQTAyNDg3MzVCQzAwMzk1QjU0IC8q
IERGR0RvZXNHQ0NoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0RvZXNHQ0NoZWNrLmg7IHBhdGgg
PSBkZmcvREZHRG9lc0dDQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVD
NTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3RvcklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVDNTc5NzQyMzEwNUY0MjAwQkNBODNGIC8qIEludGVncml0eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlZ3JpdHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyog
SW50ZWdyaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVncml0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUM1Nzk3NzIzMTA5NTRCMDBCQ0E4M0Yg
LyogSW50ZWdyaXR5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRlZ3JpdHlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQ0I4QjI1
MUQyNUJCNkUwMDZGMjQ2MyAvKiBGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9GdW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRUNCOEIyNjFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlk
ZXNUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bmN0aW9uT3ZlcnJp
ZGVzVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUNCOEIyOTFEMjVDQUJCMDA2RjI0NjMgLyogdGVz
dGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IG5hbWUgPSAidGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMiOyBwYXRoID0gIkFQSS90
ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFRDI4N0IxMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9wY29kZS5oOyBwYXRoID0gbGxpbnQv
TExJbnRPcGNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVEOTRGMkIxNzFF
M0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdhdGNoZG9nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVE
OTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhdGNoZG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
REE1MEQ0MUI5N0Y0NDIwMDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxv
d1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYg
LyogUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGlu
Z1BvbmdTdGFja092ZXJmbG93VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBh
dGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3Qu
aDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkVGMzQ3NTIyMDM2MkIxQjAwQjdDMEVGIC8qIHBhcnNlci5yYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBwYXJzZXIucmI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFRjM0NzUzMjAzNjJCMUIwMEI3QzBFRiAvKiByaXNjLnJiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IHJpc2MucmI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFRjM0NzU0MjAzNjJCMUIwMEI3QzBFRiAvKiBzZWxmX2hhc2gucmIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gc2VsZl9oYXNoLnJiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRUYzNDc1NTIwMzYyQjFDMDBCN0MwRUYgLyogYXJtLnJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IGFybS5yYjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkVGMzQ3NTYyMDM2MkIxQzAwQjdDMEVGIC8qIGJhY2tlbmRzLnJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IGJhY2tlbmRzLnJiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRUYzNDc1NzIwMzYyQjFEMDBCN0MwRUYgLyogcmVnaXN0ZXJz
LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IHJlZ2lzdGVycy5yYjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVGMzQ3NTgyMDM2MkIxRDAwQjdDMEVGIC8qIGFz
dC5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBhc3QucmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjM0NzU5MjAzNjJCMUQwMEI3QzBFRiAvKiBhc20ucmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gYXNtLnJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRUYzNDc1QTIwMzYyQjFFMDBCN0MwRUYgLyogY2xvb3AucmIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gY2xvb3AucmI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFRjM0NzVCMjAzNjJCMUUwMEI3QzBFRiAvKiB4ODYucmIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0geDg2LnJiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUYzNDc1QzIwMzYyQjFFMDBCN0MwRUYgLyogbWlwcy5yYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBtaXBzLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUYzNDc1RDIwMzYyQjFGMDBCN0MwRUYgLyogY29uZmlnLnJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IGNvbmZpZy5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVGMzQ3NUUyMDM2MkIxRjAwQjdDMEVGIC8qIGluc3RydWN0aW9ucy5yYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBpbnN0cnVjdGlvbnMucmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjM0NzVGMjAzNjJCMjAwMEI3QzBFRiAvKiBvcHQucmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gb3B0LnJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRUYzNDc2MDIwMzYyQjIxMDBCN0MwRUYgLyogdHJhbnNmb3JtLnJi
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IHRyYW5zZm9ybS5yYjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVGMzQ3NjEyMDM2MkIyMTAwQjdDMEVGIC8qIG9mZnNl
dHMucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gb2Zmc2V0cy5yYjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVGMzQ3NjIyMDM2MkIyMjAwQjdDMEVGIC8qIGFy
bTY0LnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IGFybTY0LnJiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUYzNDc2MzIwMzYyQjIzMDBCN0MwRUYgLyogc2V0
dGluZ3MucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gc2V0dGluZ3MucmI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjM0NzY0MjAzNjJCMjMwMEI3QzBFRiAv
KiBnZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVi
eTsgcGF0aCA9IGdlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFRjQ5QUE5MUVCOTQ3RkUwMDY1M0JEQiAvKiBNdWx0aXRocmVhZGVkTXVs
dGlWTUV4ZWN1dGlvblRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTXVsdGl0aHJlYWRlZE11bHRpVk1FeGVjdXRpb25UZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0
cy9NdWx0aXRocmVhZGVkTXVsdGlWTUV4ZWN1dGlvblRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRUY0OUFBQTFFQjk0N0ZFMDA2NTNCREIgLyogTXVsdGl0aHJlYWRlZE11
bHRpVk1FeGVjdXRpb25UZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE11
bHRpdGhyZWFkZWRNdWx0aVZNRXhlY3V0aW9uVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL011bHRp
dGhyZWFkZWRNdWx0aVZNRXhlY3V0aW9uVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRUY1QjQyMjI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hNYXBJbXBsSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUY1QjQyNDI2MjhBODUwMDAxNkU3NzYgLyogSlNN
YXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFwSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUY1QjQyNjI2MjhBQkQ5MDAxNkU3
NzYgLyogSlNXZWFrTWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYWtNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRjVC
NDI4MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFRjVCNDJCMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTVRyYXBzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRUY1QjQyRjI2MkEzMzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhw
ZWN0YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uRXhw
ZWN0YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjYxODMzQjFDNDVGNjJBMDA3MjQ1MEIgLyogRnJh
bWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNjE4MzNDMUM0
NUY2MkEwMDcyNDUwQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAor
CQkJCTBGNjE4MzNEMUM0NUY2MkEwMDcyNDUwQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKwkJMEY5MzI3NTExQzIwQkNCQTAwQ0Y2NTY0IC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjkzMjc1MjFDMjBCQ0JB
MDBDRjY1NjQgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkw
RjkzMjc1MzFDMjBCQ0JBMDBDRjY1NjQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisJCTBGRUM4NUEyMUJEQjVDRjEwMDgwRkY3NCAvKiBGcmFtZXdvcmtzICov
ID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEZFQzg1QTMxQkRCNUNGMTAwODBG
Rjc0IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMEZFQzg1
QTQxQkRCNUNGMTAwODBGRjc0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworCQkwRkY5MjJDNjE0RjQ2QjEzMDA0MUEyNEUgLyogRnJhbWV3b3JrcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyog
RnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTE0QjhFQzcy
MEE1NjUyMDkwMDYyQkU1NCAvKiBDb3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKKwkJCQkxNDEyMTEzMTBBNDg3OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTE0QkQ1OUJEMEEzRThGOTAwMEJBRjU5QyAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDQ0M0FFMzMx
NkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CisJCQkJMTRCRDU5QzUwQTNFOEY5RjAwQkFGNTlDIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworCQkxNEJENjg4ODIxNTE5MTMxMDA1MERBRkYgLyogRnJhbWV3
b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk1MkNEMEY1QzIyNDJGNTY5
MDA0QTE4QTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCTUyQ0QwRjVEMjI0MkY1NjkwMDRBMThBNSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAorCQkJCTUyQ0QwRjVFMjI0MkY1NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNjUxMTIyRkMxNDA0NkE0QzAwMkIx
MDFEIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2
NTExMjJGRDE0MDQ2QTRDMDAyQjEwMUQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkJNjUxMTIyRkUxNDA0NkE0QzAwMkIxMDFEIC8qIGxpYmVkaXQuZHls
aWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNzkyODFCRDAyMEI2MkIzRTAwMkUyQTYwIC8qIEZyYW1l
d29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk3OTI4MUJEMTIwQjYy
QjNFMDAyRTJBNjAgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQk3OTI4MUJEMjIwQjYyQjNFMDAyRTJBNjAgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisJCTkzMkY1QkQyMDgyMkExQzcwMDczNjk3NSAvKiBGcmFtZXdvcmtz
ICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJOTMyRjVCRDMwODIyQTFDNzAw
NzM2OTc1IC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJ
CUE3MzFCMjVBMTMwMDkzODgwMDQwQTdGQSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAorCQkJCTkzMkY1QkQ3MDgyMkExQzcwMDczNjk3NSAvKiBsaWJpY3Vjb3JlLmR5
bGliIGluIEZyYW1ld29ya3MgKi8sCisJCQkJOTMyRjVCRDYwODIyQTFDNzAwNzM2OTc1IC8qIGxp
Ym9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlBNTA5OEIwNDFDMTZBQTAyMDAwODc3
OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJRERCMDRGNDIy
NzhFNTZBMjAwOEQzNjc4IC8qIGxpYldURi5hIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTkzMkY1QkRF
MDgyMkExQzcwMDczNjk3NSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkJOTMyRjVCRUEwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAv
KiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUZFNTMzQ0E0MUYyMTdEQjMwMDE2
QTFGRSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJ
RkU1MzNDQTUxRjIxN0RCMzAwMTZBMUZFIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJRkU1MzNDQTYxRjIxN0RCMzAwMTZBMUZFIC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkwMzQ3NjhE
RkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTBGOTMyNzU5MUMyMEJDQkEwMENGNjU2NCAvKiBkeW5iZW5j
aCAqLywKKwkJCQk5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAorCQkJCTBGRjky
MkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJ
MTRCRDY4OEUyMTUxOTEzMTAwNTBEQUZGIC8qIEpTQ0xMSW50U2V0dGluZ3NFeHRyYWN0b3IgKi8s
CisJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCisJCQkJMEY2MTgz
NDMxQzQ1RjYyQTAwNzI0NTBCIC8qIHRlc3RhaXIgKi8sCisJCQkJMTRCRDU5QkYwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCisJCQkJMEZFQzg1QUQxQkRCNUNGMTAwODBGRjc0IC8qIHRl
c3RiMyAqLywKKwkJCQk1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLywKKwkJ
CQlGRTUzM0NBQzFGMjE3REI0MDAxNkExRkUgLyogdGVzdG1hc20gKi8sCisJCQkJNzkyODFCREMy
MEI2MkIzRTAwMkUyQTYwIC8qIHRlc3RtZW0gKi8sCisJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIx
MDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQkJdGFiV2lkdGggPSA0OworCQkJdXNlc1RhYnMg
PSAwOworCQl9OworCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogSmF2YVNjcmlwdENvcmUg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUzMEE2MzQx
MUZBM0UzMUQwMDI2QTU0NSAvKiBTb3VyY2VzLnR4dCAqLywKKwkJCQk1MzBBNjM0MDFGQTNFMzFD
MDAyNkE1NDUgLyogU291cmNlc0NvY29hLnR4dCAqLywKKwkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBC
Mjk1RjUgLyogQ2hhbmdlTG9nICovLAorCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBj
b25maWcuaCAqLywKKwkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hf
dGFibGUgKi8sCisJCQkJNTMyNjMxQjMyMTg3NzdBNTAwN0I4MTkxIC8qIEphdmFTY3JpcHRDb3Jl
Lm1vZHVsZW1hcCAqLywKKwkJCQk5MzdCNjNDQzA5RTc2NkQyMDBBNjcxREQgLyogRGVyaXZlZFNv
dXJjZXMubWFrZSAqLywKKwkJCQkwRjkzMjc1QTFDMjBCQ0RGMDBDRjY1NjQgLyogZHluYmVuY2gu
Y3BwICovLAorCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLAorCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAor
CQkJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
ICovLAorCQkJCTc5RDdCMEUxMjExNTJGRDIwMEZFN0M2NCAvKiBlbnRpdGxlbWVudHMucGxpc3Qg
Ki8sCisJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKKwkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAorCQkJCTBGRUM4NEIyMUJEQUNENUUw
MDgwRkY3NCAvKiBiMyAqLywKKwkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGlu
Z3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAorCQkJ
CTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKKwkJCQk3RTM5RDgxRDBF
QzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAorCQkJCTFDOTA1MTNFMEJBOUU4ODMw
MDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCQkxNDgwREI5QTBEREMyMjMxMDAzQ0ZE
RjIgLyogZGVidWdnZXIgKi8sCisJCQkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2
ZWQgU291cmNlcyAqLywKKwkJCQk4NkVDOURCMzEzMjhERjQ0MDAyQjJBRDcgLyogZGZnICovLAor
CQkJCTBGRjQyNzJFMTU4RUJDQ0UwMDRDQjlGRiAvKiBkaXNhc3NlbWJsZXIgKi8sCisJCQkJRTNG
Rjc1MkQxRDlDRTlFQTAwQzdFMTZEIC8qIGRvbWppdCAqLywKKwkJCQkwODY3RDY5QUZFODQwMjhG
QzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMg
LyogZnRsICovLAorCQkJCUZFMzVDMkVGMjFCMUU2NTAwMDBGNENBOCAvKiBnZW5lcmF0b3IgKi8s
CisJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8sCisJCQkJQTVCQTE1REYx
ODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKKwkJCQkxNDI5RDc3QTBFRDIwRDczMDBC
ODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8sCisJCQkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8q
IGppdCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCisJCQkJ
RkVGMzQ3NTEyMDM2MjkxMzAwQjdDMEVGIC8qIG9mZmxpbmVhc20gKi8sCisJCQkJN0UzOUQ4Mzcw
RUMzQTM4ODAwM0FGMTFBIC8qIHBhcnNlciAqLywKKwkJCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlD
OEIgLyogUHJvZHVjdHMgKi8sCisJCQkJOTVBQjgzMUEwREE0MkM2OTAwQkM4M0YzIC8qIHByb2Zp
bGVyICovLAorCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMgKi8sCisJ
CQkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8sCisJCQkJNzkyODFDMDAy
MEI2MkJCRDAwMkUyQTYwIC8qIHRlc3RtZW0gKi8sCisJCQkJOTk1OUU5MjUxQkQxN0YxRTAwMUFB
NDEzIC8qIFNjcmlwdHMgKi8sCisJCQkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3Rz
ICovLAorCQkJCTg2MDNDRUYwMTRDNzUzRUYwMEFFNTlFMyAvKiB0b29scyAqLywKKwkJCQk3Qjk4
RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLywKKwkJCQk4NkVBQzQ4QzBGOTNFOEI5MDA4
RUM5NDggLyogeWFyciAqLywKKwkJCSk7CisJCQluYW1lID0gSmF2YVNjcmlwdENvcmU7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJNjU2MEE0Q0YwNEIzQjNFNzAwOEFFOTUyIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLywKKwkJCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgKi8sCisJCQkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi8s
CisJCQkJOTMyMkEwMDMwNkMzNDFEMzAwOTA2N0JCIC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCisJ
CQkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMuZHlsaWIgKi8sCisJCQkJRERF
OTkzMEUyNzhEMDg2NjAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAorCQkJCTE0
OThDQUQzMjE0NjU2QzQwMDcxMDg3OSAvKiBsaWJXVEYuYSAqLywKKwkJCQkzNzFEODQyQzE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLywKKwkJCQlBNTA5OEIwMzFDMTZBQTAyMDAwODc3
OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovLAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtz
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJCXRhYldpZHRoID0gNDsKKwkJCXVzZXNU
YWJzID0gMDsKKwkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGRTIwQ0U5QjE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8sCisJCQkJRkUyMENFOUMxNUYwNEE5NTAw
REYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJ
bnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmggKi8sCisJCQkJMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5j
cHAgKi8sCisJCQkJMEYzOEIwMTAxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5o
ICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3Bw
ICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAq
LywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmln
LmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi8sCisJCQkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2Rl
LmggKi8sCisJCQkJNzlDRkM2RUYxQzMzQjEwMDAwQzc2OEVBIC8qIExMSW50UENSYW5nZXMuaCAq
LywKKwkJCQkxNEJENjg5QzIxNTE5MUIzMDA1MERBRkYgLyogTExJbnRTZXR0aW5nc0V4dHJhY3Rv
ci5jcHAgKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMu
aCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICov
LAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJ
CTg2QTA1NDQ2MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLywK
KwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLywKKwkJCQk4NkEwNTQ0NzE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbSAqLywKKwkJCQk4NkEwNTQ0ODE1NTY0NTFCMDA0NDUxNTcgLyogTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbSAqLywKKwkJCQlGRTAwMjYyMjIzRjNBRjMzMDAzQTM1OEYgLyogV2Vi
QXNzZW1ibHkuYXNtICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTBGRUEwOUZDMTcwNTEzN0YwMEJCNzIyQyAvKiBmdGwgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGREIyQ0M3MTcz
REE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggKi8sCisJCQkJMEZFQTBBMTcx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgKi8sCisJCQkJMEZFQTBBMTgx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovLAorCQkJCTBGRUEwQTE5MTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQkw
RkVBMEExQTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICov
LAorCQkJCTBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5j
cHAgKi8sCisJCQkJMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292
ZXJ5LmggKi8sCisJCQkJMEZFQTA5RkUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGll
cy5jcHAgKi8sCisJCQkJMEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGll
cy5oICovLAorCQkJCTBGRUEwQTI1MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMu
Y3BwICovLAorCQkJCTBGRUEwQTIxMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMu
aCAqLywKKwkJCQkwRkIzODc5MTFCRkQzMUExMDBFM0FCMUUgLyogRlRMQ29tcGlsZS5jcHAgKi8s
CisJCQkJMEZFQTBBMDExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCAqLywKKwkJCQkw
RjlENEMwQTFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmNwcCAqLywKKwkJ
CQkwRjlENEMwQjFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggKi8sCisJ
CQkJMEYyMzVCQkQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5jcHAgKi8sCisJ
CQkJMEYyMzVCQkUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oICovLAorCQkJ
CTBGMjM1QkJGMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmNw
cCAqLywKKwkJCQkwRjIzNUJDMDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9y
T3BlcmFuZC5oICovLAorCQkJCTBGMkI5Q0VFMTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJv
cGVydHlWYWx1ZS5jcHAgKi8sCisJCQkJMEYyQjlDRUYxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4
aXRQcm9wZXJ0eVZhbHVlLmggKi8sCisJCQkJMEYyQjlDRjAxOUQwQkFDMTAwQjFEMUI1IC8qIEZU
TEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmNwcCAqLywKKwkJCQkwRjJCOUNGMTE5RDBC
QUMxMDBCMUQxQjUgLyogRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24uaCAqLywKKwkJ
CQkwRjIzNUJDNDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmNwcCAqLywKKwkJCQkw
RjIzNUJDNTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggKi8sCisJCQkJQTdGMjk5
NjkxN0EwQkI2NzAwMTA0MTdBIC8qIEZUTEZhaWwuY3BwICovLAorCQkJCUE3RjI5OTZBMTdBMEJC
NjcwMDEwNDE3QSAvKiBGVExGYWlsLmggKi8sCisJCQkJMEZFQTBBMkIxNzBCNjYxOTAwQkI3MjJD
IC8qIEZUTEZvcm1hdHRlZFZhbHVlLmggKi8sCisJCQkJMEZEOEEzMTUxN0Q1MUYyMjAwQ0EyQzQw
IC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5jcHAgKi8sCisJCQkJMEZEOEEzMTYxN0Q1MUYyMjAw
Q0EyQzQwIC8qIEZUTEZvck9TUkVudHJ5SklUQ29kZS5oICovLAorCQkJCUE3OEE5NzdDMTc5NzM4
RDUwMDlERjc0NCAvKiBGVExHZW5lcmF0ZWRGdW5jdGlvbi5oICovLAorCQkJCTBGRUEwQTAyMTcw
NTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmNwcCAqLywKKwkJCQkwRkVBMEEwMzE3MDUxM0RC
MDBCQjcyMkMgLyogRlRMSklUQ29kZS5oICovLAorCQkJCUE3OEE5NzdEMTc5NzM4RDUwMDlERjc0
NCAvKiBGVExKSVRGaW5hbGl6ZXIuY3BwICovLAorCQkJCUE3OEE5NzdFMTc5NzM4RDUwMDlERjc0
NCAvKiBGVExKSVRGaW5hbGl6ZXIuaCAqLywKKwkJCQkwRkI0RkI3MDFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmNwcCAqLywKKwkJCQkwRkI0RkI3MTFCQzg0MzE0MDAyNUNBNUEg
LyogRlRMTGF6eVNsb3dQYXRoLmggKi8sCisJCQkJMEZCNEZCNzIxQkM4NDMxNDAwMjVDQTVBIC8q
IEZUTExhenlTbG93UGF0aENhbGwuaCAqLywKKwkJCQkwRjhGMkI5MzE3MkUwNDlFMDA3REJEQTUg
LyogRlRMTGluay5jcHAgKi8sCisJCQkJMEY4RjJCOTQxNzJFMDQ5RTAwN0RCREE1IC8qIEZUTExp
bmsuaCAqLywKKwkJCQkwRkNFRkFERDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uY3Bw
ICovLAorCQkJCTBGQ0VGQURFMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oICovLAor
CQkJCTBGRUEwQTA0MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvQjMuY3BwICovLAor
CQkJCTBGRUEwQTA1MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvQjMuaCAqLywKKwkJ
CQlBN0Q4OUQwMTE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oICovLAor
CQkJCTBGMkI5Q0YyMTlEMEJBQzEwMEIxRDFCNSAvKiBGVExPcGVyYXRpb25zLmNwcCAqLywKKwkJ
CQkwRjJCOUNGMzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMT3BlcmF0aW9ucy5oICovLAorCQkJCTBG
RDhBMzE3MTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5jcHAgKi8sCisJCQkJMEZEOEEz
MTgxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggKi8sCisJCQkJMEYyMzVCQzYxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuY3BwICovLAorCQkJCTBGMjM1QkM3MTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExPU1JFeGl0LmggKi8sCisJCQkJMEYyMzVCQzkxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTE9TUkV4aXRDb21waWxlci5jcHAgKi8sCisJCQkJMEYyMzVCQ0ExNzE3OEUxQzAwNjkw
QzdGIC8qIEZUTE9TUkV4aXRDb21waWxlci5oICovLAorCQkJCTBGOUIxREI1MUMwRTQyQkQwMEU1
QkZEMiAvKiBGVExPU1JFeGl0SGFuZGxlLmNwcCAqLywKKwkJCQkwRjlCMURCNjFDMEU0MkJEMDBF
NUJGRDIgLyogRlRMT1NSRXhpdEhhbmRsZS5oICovLAorCQkJCTBGOUIxREIzMUMwRTQyQTUwMEU1
QkZEMiAvKiBGVExPdXRwdXQuY3BwICovLAorCQkJCTI2OUQ2MzZEMUJGQkU1RDAwMDEwMUIxRCAv
KiBGVExPdXRwdXQuaCAqLywKKwkJCQkwRjlENEMwRTFDM0UyQzc0MDA2Q0Q5ODQgLyogRlRMUGF0
Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5jcHAgKi8sCisJCQkJMEY5RDRDMEYxQzNFMkM3NDAwNkNE
OTg0IC8qIEZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCAqLywKKwkJCQkwRjQ4NTMyNTE4
N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwICovLAorCQkJCTBGNDg1MzI2
MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oICovLAorCQkJCTBGQ0VGQUE5
MTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5jcHAgKi8sCisJCQkJMEZDRUZBQUEx
ODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmggKi8sCisJCQkJNTMzOEVCQTIyM0FC
MDRBMzAwMzgyNjYyIC8qIEZUTFNlbGVjdFByZWRpY3RhYmlsaXR5LmggKi8sCisJCQkJMEYyNUYx
QUExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgKi8sCisJCQkJMEYyNUYx
QUIxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5oICovLAorCQkJCTBGMjVGMUFD
MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwICovLAorCQkJCTBGMjVG
MUFEMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCAqLywKKwkJCQlFMzIy
RTVBNDFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5jcHAgKi8sCisJCQkJRTMy
MkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCAqLywKKwkJCQkwRjIz
NUJDMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMU3RhY2ttYXBBcmd1bWVudExpc3QuaCAqLywKKwkJ
CQkwRkVBMEExNTE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwICovLAorCQkJCTBGRUEw
QTA3MTcwNTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oICovLAorCQkJCUE3RkNDMjZDMTdBMEI2
QUEwMDc4NkQxQSAvKiBGVExTd2l0Y2hDYXNlLmggKi8sCisJCQkJMEYyMzVCQ0IxNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgKi8sCisJCQkJMEYyMzVCQ0MxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTFRodW5rcy5oICovLAorCQkJCTBGRUEwQTFCMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExU
eXBlZFBvaW50ZXIuaCAqLywKKwkJCQkwRkRCMkNDODE3M0RBNTFFMDA3QjNDMUIgLyogRlRMVmFs
dWVGcm9tQmxvY2suaCAqLywKKwkJCQkwRjVBNjI4MTE4OEM5OEQ0MDA3MkM5REYgLyogRlRMVmFs
dWVSYW5nZS5jcHAgKi8sCisJCQkJMEY1QTYyODIxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVl
UmFuZ2UuaCAqLywKKwkJCQkwRjAzMzJDNTE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0Lmgg
Ki8sCisJCQkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0Lmgg
Ki8sCisJCQkpOworCQkJbmFtZSA9IGZ0bDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTBGRUM4NEIyMUJEQUNENUUwMDgwRkY3NCAvKiBiMyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8q
IGFpciAqLywKKwkJCQkwRkVDODRCNDFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJlZ1Zh
bHVlLmNwcCAqLywKKwkJCQkwRkVDODRCNTFCREFDREFDMDA4MEZGNzQgLyogQjNBcmd1bWVudFJl
Z1ZhbHVlLmggKi8sCisJCQkJMEYyQzYzQjMxRTYzNDNFODAwQzEzODM5IC8qIEIzQXRvbWljVmFs
dWUuY3BwICovLAorCQkJCTBGMkM2M0I0MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0F0b21pY1ZhbHVl
LmggKi8sCisJCQkJMEY1QkYxNjYxRjIzQTA5ODAwMjlEOTFEIC8qIEIzQmFja3dhcmRzQ0ZHLmgg
Ki8sCisJCQkJMEY1QkYxNkExRjIzQTBDMTAwMjlEOTFEIC8qIEIzQmFja3dhcmRzRG9taW5hdG9y
cy5oICovLAorCQkJCTBGMkM2M0FCMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuY3BwICovLAor
CQkJCTBGMkM2M0FDMUU2MEFFM0MwMEMxMzgzOSAvKiBCM0JhbmsuaCAqLywKKwkJCQkwRkVDODRC
NjFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmNwcCAqLywKKwkJCQkwRkVDODRCNzFC
REFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmggKi8sCisJCQkJMEZFQzg0QjgxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQmFzaWNCbG9ja0lubGluZXMuaCAqLywKKwkJCQkwRkVDODRCOTFCREFD
REFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMuaCAqLywKKwkJCQkwRjMzOEUxNzFCRjI4
NkVBMDAxM0M4OEYgLyogQjNCbG9ja0luc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYzMzhFMTgx
QkYyODZFQTAwMTNDODhGIC8qIEIzQmxvY2tJbnNlcnRpb25TZXQuaCAqLywKKwkJCQkwRkVDODRC
QTFCREFDREFDMDA4MEZGNzQgLyogQjNCbG9ja1dvcmtsaXN0LmggKi8sCisJCQkJRENGREZCRDcx
RDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLywKKwkJCQlFMzkyRTZGNjI0
RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCAqLywKKwkJCQlFMzkyRTZG
NzI0RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmggKi8sCisJCQkJMEY2QjhB
REUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcCAqLywKKwkJCQkw
RjZCOEFERjFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuaCAqLywKKwkJ
CQlEQzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5jcHAgKi8sCisJ
CQkJREM5QTBDMUQxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uaCAqLywKKwkJ
CQlEQzlBMEMxRTFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCAq
LywKKwkJCQkwRjMzOERGNzFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmNwcCAqLywK
KwkJCQkwRjMzOERGODFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggKi8sCisJCQkJ
MEYzM0ZDRjkxQzE2MjVCRTAwMzIzRjY3IC8qIEIzQ0ZHLmggKi8sCisJCQkJMEZFQzg0QkIxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ2hlY2tTcGVjaWFsLmNwcCAqLywKKwkJCQkwRkVDODRCQzFCREFD
REFDMDA4MEZGNzQgLyogQjNDaGVja1NwZWNpYWwuaCAqLywKKwkJCQkwRkVDODRCRDFCREFDREFD
MDA4MEZGNzQgLyogQjNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQkwRkVDODRCRTFCREFDREFDMDA4
MEZGNzQgLyogQjNDaGVja1ZhbHVlLmggKi8sCisJCQkJMEZFQzg0QkYxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzQ29tbW9uLmNwcCAqLywKKwkJCQkwRkVDODRDMDFCREFDREFDMDA4MEZGNzQgLyogQjND
b21tb24uaCAqLywKKwkJCQkwRkVDODRDMTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2
aXR5LmNwcCAqLywKKwkJCQkwRkVDODRDMjFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2
aXR5LmggKi8sCisJCQkJNzk1RjA5OUMxRTAzNjAwNTAwQkJFMzdGIC8qIEIzQ29tcGlsZS5jcHAg
Ki8sCisJCQkJNzkxOUI3N0YxRTAzNTU5QzAwNUJFRUQ4IC8qIEIzQ29tcGlsZS5oICovLAorCQkJ
CTBGODZBRTFGMUM1MzExQzUwMDZCRThFQyAvKiBCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmggKi8s
CisJCQkJMEZFQzg0QzMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmNwcCAqLywK
KwkJCQkwRkVDODRDNDFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDMyVmFsdWUuaCAqLywKKwkJ
CQkwRkVDODRDNTFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFsdWUuY3BwICovLAorCQkJ
CTBGRUM4NEM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0NjRWYWx1ZS5oICovLAorCQkJCTBG
RUM4NEM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91YmxlVmFsdWUuY3BwICovLAorCQkJ
CTBGRUM4NEM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91YmxlVmFsdWUuaCAqLywKKwkJ
CQk0MzQyMkE2MDFDMTU4NzFCMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuY3BwICovLAor
CQkJCTQzNDIyQTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oICovLAor
CQkJCTBGRUM4NUIyMUJERUQ5NTcwMDgwRkY3NCAvKiBCM0NvbnN0UHRyVmFsdWUuaCAqLywKKwkJ
CQkwRjMzOERGMzFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmNwcCAqLywK
KwkJCQkwRjMzOERGNDFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmggKi8s
CisJCQkJMEYzMzhFMDExQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uY3BwICovLAor
CQkJCTBGMzM4RTAyMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggKi8sCisJCQkJ
MEYzM0ZDRkExQzE2MjVCRTAwMzIzRjY3IC8qIEIzRG9taW5hdG9ycy5oICovLAorCQkJCTBGNkI4
QUQ2MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0ZVRhaWxzLmNwcCAqLywKKwkJCQkwRjZC
OEFENzFDNEVEREEyMDA5NjkwNTIgLyogQjNEdXBsaWNhdGVUYWlscy5oICovLAorCQkJCTBGRUM4
NUM0MUJFMTZGNUEwMDgwRkY3NCAvKiBCM0VmZmVjdHMuY3BwICovLAorCQkJCTBGRUM4NUJFMUJF
MTY3QTAwMDgwRkY3NCAvKiBCM0VmZmVjdHMuaCAqLywKKwkJCQkwRjcyNUNBMzFDNTAzREVEMDBB
RDk0M0EgLyogQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAgKi8sCisJCQkJMEY3
MjVDQTQxQzUwM0RFRDAwQUQ5NDNBIC8qIEIzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMu
aCAqLywKKwkJCQkzMzk1QzcwNDIyNTU1RjZDMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29k
ZS5jcHAgKi8sCisJCQkJMzM5NUM3MDUyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVh
ZENvZGUuaCAqLywKKwkJCQkwRjVCRjE2RTFGMjNBNUExMDAyOUQ5MUQgLyogQjNFbnN1cmVMb29w
UHJlSGVhZGVycy5jcHAgKi8sCisJCQkJMEY1QkYxNkYxRjIzQTVBMTAwMjlEOTFEIC8qIEIzRW5z
dXJlTG9vcFByZUhlYWRlcnMuaCAqLywKKwkJCQk1MkU2NUExQTI3NjgyNzYwMDAyQjRDMEEgLyog
QjNFc3RpbWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5jcHAgKi8sCisJCQkJNTJFNjVBMUIyNzY4
Mjc2MDAwMkI0QzBBIC8qIEIzRXN0aW1hdGVTdGF0aWNFeGVjdXRpb25Db3VudHMuaCAqLywKKwkJ
CQk1MzE4MDQ1RDIyRUFBRjBGMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuY3BwICovLAorCQkJ
CTUzMTgwNDVCMjJFQUFDNEIwMDRBNzM0MiAvKiBCM0V4dHJhY3RWYWx1ZS5oICovLAorCQkJCTBG
Njk3MUU4MUQ5MkY0MjEwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUuY3BwICovLAorCQkJCTBGNjk3
MUU5MUQ5MkY0MjEwMEJBMDJBNSAvKiBCM0ZlbmNlVmFsdWUuaCAqLywKKwkJCQkwRjZCOEFFMDFD
NEVGRTE3MDA5NjkwNTIgLyogQjNGaXhTU0EuY3BwICovLAorCQkJCTBGNkI4QUUxMUM0RUZFMTcw
MDk2OTA1MiAvKiBCM0ZpeFNTQS5oICovLAorCQkJCTBGNzI1Q0FEMUM1MDZEM0IwMEFEOTQzQSAv
KiBCM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcCAqLywKKwkJCQkwRjcyNUNBRTFDNTA2RDNCMDBBRDk0
M0EgLyogQjNGb2xkUGF0aENvbnN0YW50cy5oICovLAorCQkJCTBGRUM4NENCMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0ZyZXF1ZW5jeUNsYXNzLmNwcCAqLywKKwkJCQkwRkVDODRDQzFCREFDREFDMDA4
MEZGNzQgLyogQjNGcmVxdWVuY3lDbGFzcy5oICovLAorCQkJCTBGRUM4NENEMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0ZyZXF1ZW50ZWRCbG9jay5oICovLAorCQkJCTBGRUM4NENFMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLywKKwkJCQkwRkVDODRDRjFCREFDREFDMDA4MEZGNzQg
LyogQjNHZW5lcmF0ZS5oICovLAorCQkJCTBGMkM2M0I1MUU2MzQzRTgwMEMxMzgzOSAvKiBCM0dl
bmVyaWNCbG9ja0luc2VydGlvblNldC5oICovLAorCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKKwkJCQkwRkVDODVDMDFCRTE2N0Ew
MDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKKwkJCQkwRjVCRjE2MTFGMjMxNzEyMDAyOUQ5
MUQgLyogQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMuY3BwICovLAorCQkJCTBGNUJGMTYyMUYy
MzE3MTIwMDI5RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oICovLAorCQkJCURD
NjlCOTlBMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuY3BwICovLAorCQkJCURD
NjlCOTlCMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuaCAqLywKKwkJCQkwRkVD
ODVCNDFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuY3BwICovLAorCQkJCTBGRUM4
NUI1MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5oICovLAorCQkJCTBGRUM4NUI2
MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldElubGluZXMuaCAqLywKKwkJCQkwRkRG
NjdEMDFEOUM2MDg2MDAxQjk4MjUgLyogQjNLaW5kLmNwcCAqLywKKwkJCQkwRkRGNjdEMTFEOUM2
MDg2MDAxQjk4MjUgLyogQjNLaW5kLmggKi8sCisJCQkJNDM2RTU0NTExQzQ2OEU1RjAwQjVBRjcz
IC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCAqLywKKwkJCQk0MzZFNTQ1MjFDNDY4RTVG
MDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCAqLywKKwkJCQkwRjMzOEUxOTFC
RjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5jcHAgKi8sCisJCQkJMEYzMzhFMUExQkYy
ODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNyb3MuaCAqLywKKwkJCQk0MzE5REEwMTFDMUJFM0Mx
MDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi8sCisJCQkJ
NDMxOURBMDIxQzFCRTNDMTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMuaCAqLywKKwkJCQkwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNw
cCAqLywKKwkJCQkwRkVDODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8s
CisJCQkJNDNBQjI2QzQxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi8sCisJ
CQkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovLAorCQkJCTBG
RUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLywKKwkJCQkwRkVD
ODRENjFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5oICovLAorCQkJCTBGMkM2M0Mz
MUU2OUVGOTIwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovLAorCQkJCTBGMzM4
RTAzMUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuY3BwICovLAorCQkJCTBGMzM4
RTA0MUJGMDI3NkMwMDEzQzg4RiAvKiBCM01vdmVDb25zdGFudHMuaCAqLywKKwkJCQkwRjJDNjND
MTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLywKKwkJCQkwRjVCRjE2ODFG
MjNBMEFBMDAyOUQ5MUQgLyogQjNOYXR1cmFsTG9vcHMuaCAqLywKKwkJCQkwRkVDODRENzFCREFD
REFDMDA4MEZGNzQgLyogQjNPcGNvZGUuY3BwICovLAorCQkJCTBGRUM4NEQ4MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM09wY29kZS5oICovLAorCQkJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBC
M09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovLAorCQkJCTMzNzQzNjRB
MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMu
aCAqLywKKwkJCQkwRkVDODREOTFCREFDREFDMDA4MEZGNzQgLyogQjNPcmlnaW4uY3BwICovLAor
CQkJCTBGRUM4NERBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM09yaWdpbi5oICovLAorCQkJCTBGNERF
MUQwMUM0RDc2NEIwMDRENkMxMSAvKiBCM09yaWdpbkR1bXAuY3BwICovLAorCQkJCTBGNEM5MTY1
MUMyOUY0RjIwMDQzNDFBNiAvKiBCM09yaWdpbkR1bXAuaCAqLywKKwkJCQkwRkVDODREQjFCREFD
REFDMDA4MEZGNzQgLyogQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAgKi8sCisJCQkJMEZFQzg0REMx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFNwZWNpYWwuaCAqLywKKwkJCQkwRkVDODRE
RDFCREFDREFDMDA4MEZGNzQgLyogQjNQYXRjaHBvaW50VmFsdWUuY3BwICovLAorCQkJCTBGRUM4
NERFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRWYWx1ZS5oICovLAorCQkJCTc5OUVG
N0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCAqLywKKwkJCQkwRkVDODRE
RjFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmNwcCAqLywKKwkJCQkwRkVDODRFMDFC
REFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmggKi8sCisJCQkJMEYzNzMwOEExQzBCRDI5
MTAwMDUyQkZBIC8qIEIzUGhpQ2hpbGRyZW4uY3BwICovLAorCQkJCTBGMzczMDhCMUMwQkQyOTEw
MDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVuLmggKi8sCisJCQkJMEZFQzg0RTExQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUHJvY2VkdXJlLmNwcCAqLywKKwkJCQkwRkVDODRFMjFCREFDREFDMDA4MEZGNzQg
LyogQjNQcm9jZWR1cmUuaCAqLywKKwkJCQkwRkVDODRFMzFCREFDREFDMDA4MEZGNzQgLyogQjNQ
cm9jZWR1cmVJbmxpbmVzLmggKi8sCisJCQkJMEY3MjVDQTUxQzUwM0RFRDAwQUQ5NDNBIC8qIEIz
UHVyZUNTRS5jcHAgKi8sCisJCQkJMEY3MjVDQTYxQzUwM0RFRDAwQUQ5NDNBIC8qIEIzUHVyZUNT
RS5oICovLAorCQkJCTQzNDIyQTY0MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRv
RmxvYXQuY3BwICovLAorCQkJCTQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURv
dWJsZVRvRmxvYXQuaCAqLywKKwkJCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1
Y2VMb29wU3RyZW5ndGguY3BwICovLAorCQkJCTczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBC
M1JlZHVjZUxvb3BTdHJlbmd0aC5oICovLAorCQkJCTBGRUM4NUI3MUJFMTQ2MkYwMDgwRkY3NCAv
KiBCM1JlZHVjZVN0cmVuZ3RoLmNwcCAqLywKKwkJCQkwRkVDODVCODFCRTE0NjJGMDA4MEZGNzQg
LyogQjNSZWR1Y2VTdHJlbmd0aC5oICovLAorCQkJCTBGRUM4NEVBMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1Nsb3RCYXNlVmFsdWUuY3BwICovLAorCQkJCTBGRUM4NEVCMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1Nsb3RCYXNlVmFsdWUuaCAqLywKKwkJCQkwRjJCQkQ5MTFDNUZGM0Y1MDAyM0VGMjMgLyog
QjNTcGFyc2VDb2xsZWN0aW9uLmggKi8sCisJCQkJMEY2QjhBREExQzRFRkFDMzAwOTY5MDUyIC8q
IEIzU1NBQ2FsY3VsYXRvci5jcHAgKi8sCisJCQkJMEY2QjhBREIxQzRFRkFDMzAwOTY5MDUyIC8q
IEIzU1NBQ2FsY3VsYXRvci5oICovLAorCQkJCTBGMzNGQ0Y1MUMxMzZFMjUwMDMyM0Y2NyAvKiBC
M1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAgKi8sCisJCQkJMEYzM0ZDRjYxQzEzNkUyNTAw
MzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggKi8sCisJCQkJMEZFQzg0RTYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmNwcCAqLywKKwkJCQkwRkVDODRF
NzFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCAqLywKKwkJCQkwRjMzOERF
RjFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCAqLywKKwkJCQkwRjMzOERG
MDFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmggKi8sCisJCQkJMEZFQzg0RUMx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oICovLAorCQkJCTBGRUM4
NEVEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuY3BwICovLAorCQkJCTBGRUM4NEVF
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCAqLywKKwkJCQkwRkVDODRFRjFCREFD
REFDMDA4MEZGNzQgLyogQjNTd2l0Y2hWYWx1ZS5jcHAgKi8sCisJCQkJMEZFQzg0RjAxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCAqLywKKwkJCQkwRjQ1NzAzRjFCRTU4NENBMDA2
MkE2MjkgLyogQjNUaW1pbmdTY29wZS5oICovLAorCQkJCTBGRUM4NEYxMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1R5cGUuY3BwICovLAorCQkJCTBGRUM4NEYyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1R5
cGUuaCAqLywKKwkJCQlEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8s
CisJCQkJMEZFQzg0RjMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmNwcCAqLywK
KwkJCQkwRkVDODRGNDFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNpbG9uVmFsdWUuaCAqLywKKwkJ
CQkwRkVDODRGNTFCREFDREFDMDA4MEZGNzQgLyogQjNVc2VDb3VudHMuY3BwICovLAorCQkJCTBG
RUM4NEY2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oICovLAorCQkJCTBGRUM4NEY3
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbGlkYXRlLmNwcCAqLywKKwkJCQkwRkVDODRGODFCREFD
REFDMDA4MEZGNzQgLyogQjNWYWxpZGF0ZS5oICovLAorCQkJCTBGRUM4NEY5MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1ZhbHVlLmNwcCAqLywKKwkJCQkwRkVDODRGQTFCREFDREFDMDA4MEZGNzQgLyog
QjNWYWx1ZS5oICovLAorCQkJCTBGRUM4NEZCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbHVlSW5s
aW5lcy5oICovLAorCQkJCTBGMzM4RTA4MUJGMDI3NkMwMDEzQzg4RiAvKiBCM1ZhbHVlS2V5LmNw
cCAqLywKKwkJCQkwRjMzOEUwOTFCRjAyNzZDMDAxM0M4OEYgLyogQjNWYWx1ZUtleS5oICovLAor
CQkJCTBGMzM4RTBBMUJGMDI3NkMwMDEzQzg4RiAvKiBCM1ZhbHVlS2V5SW5saW5lcy5oICovLAor
CQkJCTBGRUM4NEZDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbHVlUmVwLmNwcCAqLywKKwkJCQkw
RkVDODRGRDFCREFDREFDMDA4MEZGNzQgLyogQjNWYWx1ZVJlcC5oICovLAorCQkJCTBGMkJCRDky
MUM1RkYzRjUwMDIzRUYyMyAvKiBCM1ZhcmlhYmxlLmNwcCAqLywKKwkJCQkwRjJCQkQ5MzFDNUZG
M0Y1MDAyM0VGMjMgLyogQjNWYXJpYWJsZS5oICovLAorCQkJCTBGRjRCNEM4MUU4ODlENzgwMERC
QkU4NiAvKiBCM1ZhcmlhYmxlTGl2ZW5lc3MuY3BwICovLAorCQkJCTBGRjRCNEM5MUU4ODlENzgw
MERCQkU4NiAvKiBCM1ZhcmlhYmxlTGl2ZW5lc3MuaCAqLywKKwkJCQkwRjJCQkQ5NDFDNUZGM0Y1
MDAyM0VGMjMgLyogQjNWYXJpYWJsZVZhbHVlLmNwcCAqLywKKwkJCQkwRjJCQkQ5NTFDNUZGM0Y1
MDAyM0VGMjMgLyogQjNWYXJpYWJsZVZhbHVlLmggKi8sCisJCQkJNTNENDQ0REQxREFGMDlBMDAw
QjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5jcHAgKi8sCisJCQkJNTNENDQ0REIxREFGMDhB
QjAwQjkyNzg0IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oICovLAorCQkJCTUzNDFGQzZGMURBQzMz
RTUwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAqLywKKwkJCQk1MzQxRkM3
MTFEQUMzNDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovLAorCQkJCTBG
MkM2M0FEMUU2MEFFM0MwMEMxMzgzOSAvKiBCM1dpZHRoLmNwcCAqLywKKwkJCQkwRjJDNjNBRTFF
NjBBRTNEMDBDMTM4MzkgLyogQjNXaWR0aC5oICovLAorCQkJCTVDM0E3N0JCMjJGMjQ4OTAwMDM4
MjdGRiAvKiB0ZXN0YjMuaCAqLywKKwkJCQkwRkVDODVBRTFCREI1RDVFMDA4MEZGNzQgLyogdGVz
dGIzXzEuY3BwICovLAorCQkJCTVDM0E3N0IyMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfMi5j
cHAgKi8sCisJCQkJNUMzQTc3QjEyMkYyNDdDQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCAqLywK
KwkJCQk1QzNBNzdBRTIyRjI0N0NBMDAzODI3RkYgLyogdGVzdGIzXzQuY3BwICovLAorCQkJCTVD
M0E3N0IwMjJGMjQ3Q0IwMDM4MjdGRiAvKiB0ZXN0YjNfNS5jcHAgKi8sCisJCQkJNUMzQTc3QUYy
MkYyNDdDQTAwMzgyN0ZGIC8qIHRlc3RiM182LmNwcCAqLywKKwkJCQk1QzNBNzdBRDIyRjI0N0M5
MDAzODI3RkYgLyogdGVzdGIzXzcuY3BwICovLAorCQkJCTVDM0E3N0IzMjJGMjQ3Q0IwMDM4MjdG
RiAvKiB0ZXN0YjNfOC5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGIzOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMEZFQzg0QjMxQkRBQ0Q4ODAwODBGRjc0IC8qIGFpciAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTI0RTlENzEy
MjA5MkI0NTAwQTZCRUVFIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0
ZUNvZGUuY3BwICovLAorCQkJCTUyNEU5RDcyMjIwOTJCNDYwMEE2QkVFRSAvKiBBaXJBbGxvY2F0
ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmggKi8sCisJCQkJMEYyQUM1NjgxRThB
MEJEMTAwMDFFRTNGIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4u
Y3BwICovLAorCQkJCTBGMkFDNTY5MUU4QTBCRDEwMDAxRUUzRiAvKiBBaXJBbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmggKi8sCisJCQkJNzk2NUMyMTQxRTVENzk5NjAwQjc1
OTFEIC8qIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcCAqLywKKwkJCQk3
OTY1QzIxNTFFNUQ3OTk2MDBCNzU5MUQgLyogQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29s
b3JpbmcuaCAqLywKKwkJCQkwRkVDODU0ODFCREFDREM3MDA4MEZGNzQgLyogQWlyQWxsb2NhdGVT
dGFja0J5R3JhcGhDb2xvcmluZy5jcHAgKi8sCisJCQkJMEZFQzg1NDkxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuaCAqLywKKwkJCQkwRkVDODU0QTFC
REFDREM3MDA4MEZGNzQgLyogQWlyQXJnLmNwcCAqLywKKwkJCQkwRkVDODU0QjFCREFDREM3MDA4
MEZGNzQgLyogQWlyQXJnLmggKi8sCisJCQkJMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8qIEFp
ckFyZ0lubGluZXMuaCAqLywKKwkJCQkwRkVDODU0QzFCREFDREM3MDA4MEZGNzQgLyogQWlyQmFz
aWNCbG9jay5jcHAgKi8sCisJCQkJMEZFQzg1NEQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2lj
QmxvY2suaCAqLywKKwkJCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNl
cnRpb25TZXQuY3BwICovLAorCQkJCTBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9j
a0luc2VydGlvblNldC5oICovLAorCQkJCTBGQjM4NzhCMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJC
bG9ja1dvcmtsaXN0LmggKi8sCisJCQkJMEY3OUM3QzUxRTc0QzkzNjAwRUIzNEQxIC8qIEFpckJy
ZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCisJCQkJMEY3OUM3QzYxRTc0QzkzNjAwRUIzNEQxIC8q
IEFpckJyZWFrQ3JpdGljYWxFZGdlcy5oICovLAorCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAorCQkJCTBGNjE4MzIxMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQkwRkVDODU0RTFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCAqLywKKwkJCQkwRkVDODU0RjFCREFD
REM3MDA4MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmggKi8sCisJCQkJMEZGNEI0QzYxRTg4OTNC
RjAwREJCRTg2IC8qIEFpckNGRy5oICovLAorCQkJCTBGRUM4NTUwMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJDb2RlLmNwcCAqLywKKwkJCQkwRkVDODU1MTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29k
ZS5oICovLAorCQkJCTBGNjE4MzIyMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDdXN0b20uY3BwICov
LAorCQkJCTBGMTBGMUEyMUM0MjBCRjAwMDFDMDdEMiAvKiBBaXJDdXN0b20uaCAqLywKKwkJCQk3
OUFCQjE3QjFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmNwcCAqLywKKwkJCQk3
OUFCQjE3QzFFNUNDQjU3MDA0NUI5QTYgLyogQWlyRGlzYXNzZW1ibGVyLmggKi8sCisJCQkJMEY0
NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLywKKwkJ
CQkwRjQ1NzAzNzFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCAqLywK
KwkJCQkwRjYxODMyMzFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuY3BwICovLAor
CQkJCTBGNjE4MzI0MUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJFbWl0U2h1ZmZsZS5oICovLAorCQkJ
CTBGNERFMUNDMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCAqLywK
KwkJCQkwRjRERTFDRDFDNEMxQjU0MDA0RDZDMTEgLyogQWlyRml4T2J2aW91c1NwaWxscy5oICov
LAorCQkJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJT
dGFsbHMuY3BwICovLAorCQkJCTI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0
aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLywKKwkJCQkwRjJBQzU2NDFFOEEwQjc2MDAwMUVFM0YgLyog
QWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuY3BwICovLAorCQkJCTBGMkFDNTY1MUU4QTBCNzYw
MDAxRUUzRiAvKiBBaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oICovLAorCQkJCTBGMkFDNTcw
MUU4RUU0NTIwMDAxRUUzRiAvKiBBaXJGb3JtVGFibGUuaCAqLywKKwkJCQkwRkVDODU1MjFCREFD
REM3MDA4MEZGNzQgLyogQWlyRnJlcXVlbnRlZEJsb2NrLmggKi8sCisJCQkJMEZFQzg1NTMxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmNwcCAqLywKKwkJCQkwRkVDODU1NDFCREFDREM3
MDA4MEZGNzQgLyogQWlyR2VuZXJhdGUuaCAqLywKKwkJCQkwRkVDODU5MjFCREIxRTEwMDA4MEZG
NzQgLyogQWlyR2VuZXJhdGVkLmNwcCAqLywKKwkJCQkwRkVDODU1NTFCREFDREM3MDA4MEZGNzQg
LyogQWlyR2VuZXJhdGlvbkNvbnRleHQuaCAqLywKKwkJCQkwRkVDODU1NjFCREFDREM3MDA4MEZG
NzQgLyogQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwICovLAorCQkJCTBGRUM4NTU3MUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJIYW5kbGVDYWxsZWVTYXZlcy5oICovLAorCQkJCTUzQzJDRTlCMjJGQ0Mz
RDYwMDhCMjg1MyAvKiBBaXJIZWxwZXJzLmggKi8sCisJCQkJMEZFQzg1NTgxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpckluc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEZFQzg1NTkxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpckluc2VydGlvblNldC5oICovLAorCQkJCTBGRUM4NTVBMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJJbnN0LmNwcCAqLywKKwkJCQkwRkVDODU1QjFCREFDREM3MDA4MEZGNzQgLyogQWly
SW5zdC5oICovLAorCQkJCTBGRUM4NTVDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5l
cy5oICovLAorCQkJCTBGREY2N0Q0MUQ5REM0M0UwMDFCOTgyNSAvKiBBaXJLaW5kLmNwcCAqLywK
KwkJCQkwRkRGNjdENTFEOURDNDNFMDAxQjk4MjUgLyogQWlyS2luZC5oICovLAorCQkJCTI2ODRE
NDM3MUMwMDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oICovLAorCQkJCTBGMTgyOTY4MUU5
MkVFNTEwMDVCMUVBOCAvKiBBaXJMaXZlbmVzc0FkYXB0ZXIuaCAqLywKKwkJCQkwRkUzNEMxNzFD
NEIzOUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5jcHAgKi8sCisJCQkJMEZF
MzRDMTgxQzRCMzlBRTAwMDNBNTEyIC8qIEFpckxvZ1JlZ2lzdGVyUHJlc3N1cmUuaCAqLywKKwkJ
CQkwRjYxODMyNTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCAq
LywKKwkJCQkwRjYxODMyNjFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJBZnRlclJlZ0FsbG9j
LmggKi8sCisJCQkJMEZERjcwODMxRDNGMkMxRjAwOTI3NDQ5IC8qIEFpckxvd2VyRW50cnlTd2l0
Y2guY3BwICovLAorCQkJCTBGREY3MDg0MUQzRjJDMUYwMDkyNzQ0OSAvKiBBaXJMb3dlckVudHJ5
U3dpdGNoLmggKi8sCisJCQkJMEY2MTgzMjcxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyTWFj
cm9zLmNwcCAqLywKKwkJCQkwRjYxODMyODFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyTG93ZXJNYWNy
b3MuaCAqLywKKwkJCQkwRjVDRjk4MjFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0Fy
Z3MuY3BwICovLAorCQkJCTBGNUNGOTgzMUU5RDUzNzUwMEMxODY5MiAvKiBBaXJMb3dlclN0YWNr
QXJncy5oICovLAorCQkJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bj
b2RlcyAqLywKKwkJCQkwRkIzODc4QzFCRkJDNDREMDBFM0FCMUUgLyogQWlyT3B0aW1pemVCbG9j
a09yZGVyLmNwcCAqLywKKwkJCQkwRkIzODc4RDFCRkJDNDREMDBFM0FCMUUgLyogQWlyT3B0aW1p
emVCbG9ja09yZGVyLmggKi8sCisJCQkJMEY5Q0FCQzYxREI1NEE3NjAwMDhFODNCIC8qIEFpclBh
ZEludGVyZmVyZW5jZS5jcHAgKi8sCisJCQkJMEY5Q0FCQzcxREI1NEE3NjAwMDhFODNCIC8qIEFp
clBhZEludGVyZmVyZW5jZS5oICovLAorCQkJCTBGMkFDNTZDMUU4RDdBRkYwMDAxRUUzRiAvKiBB
aXJQaGFzZUluc2VydGlvblNldC5jcHAgKi8sCisJCQkJMEYyQUM1NkQxRThEN0FGRjAwMDFFRTNG
IC8qIEFpclBoYXNlSW5zZXJ0aW9uU2V0LmggKi8sCisJCQkJMEZFQzg1NUUxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclBoYXNlU2NvcGUuY3BwICovLAorCQkJCTBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJQaGFzZVNjb3BlLmggKi8sCisJCQkJRkU1NjI4Q0IxRTk5NTEyNDAwQzQ5RTQ1IC8q
IEFpclByaW50U3BlY2lhbC5jcHAgKi8sCisJCQkJRkU1NjI4Q0MxRTk5NTEyNDAwQzQ5RTQ1IC8q
IEFpclByaW50U3BlY2lhbC5oICovLAorCQkJCTBGRjRCNEJBMUU4ODQ0OTUwMERCQkU4NiAvKiBB
aXJSZWdMaXZlbmVzcy5jcHAgKi8sCisJCQkJMEZGNEI0QkIxRTg4NDQ5NTAwREJCRTg2IC8qIEFp
clJlZ0xpdmVuZXNzLmggKi8sCisJCQkJMEY0NTcwM0ExQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJl
cG9ydFVzZWRSZWdpc3RlcnMuY3BwICovLAorCQkJCTBGNDU3MDNCMUJFNDVGMEEwMDYyQTYyOSAv
KiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggKi8sCisJCQkJMEYzMzhERkIxQkVENTEyNzAwMTND
ODhGIC8qIEFpclNpbXBsaWZ5Q0ZHLmNwcCAqLywKKwkJCQkwRjMzOERGQzFCRUQ1MTI3MDAxM0M4
OEYgLyogQWlyU2ltcGxpZnlDRkcuaCAqLywKKwkJCQkwRkVDODU2MjFCREFDREM3MDA4MEZGNzQg
LyogQWlyU3BlY2lhbC5jcHAgKi8sCisJCQkJMEZFQzg1NjMxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clNwZWNpYWwuaCAqLywKKwkJCQkwRjVDRjk4NjFFOUVENjRFMDBDMTg2OTIgLyogQWlyU3RhY2tB
bGxvY2F0aW9uLmNwcCAqLywKKwkJCQkwRjVDRjk4NzFFOUVENjRFMDBDMTg2OTIgLyogQWlyU3Rh
Y2tBbGxvY2F0aW9uLmggKi8sCisJCQkJMEZFQzg1NjYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0
YWNrU2xvdC5jcHAgKi8sCisJCQkJMEZFQzg1NjcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNr
U2xvdC5oICovLAorCQkJCTBGMkJCRDlCMUM1RkY0MDUwMDIzRUYyMyAvKiBBaXJTdGFja1Nsb3RL
aW5kLmNwcCAqLywKKwkJCQkwRjJCQkQ5QzFDNUZGNDA1MDAyM0VGMjMgLyogQWlyU3RhY2tTbG90
S2luZC5oICovLAorCQkJCTBGRUM4NTY4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuY3BwICov
LAorCQkJCTBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCAqLywKKwkJCQkwRkVD
ODU2QTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wSW5saW5lcy5oICovLAorCQkJCTBGNUNGOTgw
MUU5NkYxN0QwMEMxODY5MiAvKiBBaXJUbXBNYXAuaCAqLywKKwkJCQkwRjlDMDNENDFFOTQ3NkYw
MDBDRDkxMjUgLyogQWlyVG1wU2V0LmggKi8sCisJCQkJMEZFMEU0QUIxQzI0Qzk0QTAwMkUxN0I2
IC8qIEFpclRtcFdpZHRoLmNwcCAqLywKKwkJCQkwRkUwRTRBQzFDMjRDOTRBMDAyRTE3QjYgLyog
QWlyVG1wV2lkdGguaCAqLywKKwkJCQkwRkVDODU4RjJCREFDREM3MDA4MEZGNzQgLyogQWlyVG1w
V2lkdGhJbmxpbmVzLmggKi8sCisJCQkJMEYzNzMwOTIxQzBENjdFRTAwMDUyQkZBIC8qIEFpclVz
ZUNvdW50cy5oICovLAorCQkJCTBGRUM4NTZCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0
ZS5jcHAgKi8sCisJCQkJMEZFQzg1NkMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmgg
Ki8sCisJCQkJMEY2MTgzNDQxQzQ1RjY2MDAwNzI0NTBCIC8qIHRlc3RhaXIuY3BwICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBhaXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkw
RkY0MjcyRTE1OEVCQ0NFMDA0Q0I5RkYgLyogZGlzYXNzZW1ibGVyICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2NTJBM0ExQTE2NTFBOTI0MDBBODBBRkUg
LyogQVJNNjQgKi8sCisJCQkJRTMzRDFGRTcyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlzICovLAor
CQkJCTY1MkEzQTIwMTY1MUM2NjEwMEE4MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi8s
CisJCQkJMEY5RDMzNkUxNjVEQkI4RDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgKi8sCisJ
CQkJMEZGNDI3MkYxNThFQkQ0NDAwNENCOUZGIC8qIERpc2Fzc2VtYmxlci5oICovLAorCQkJCUE3
RTVBQjM2MTc5OUU0QjIwMEQyODMzRCAvKiBYODZEaXNhc3NlbWJsZXIuY3BwICovLAorCQkJKTsK
KwkJCW5hbWUgPSBkaXNhc3NlbWJsZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTE0NDAwNTE3MEE1MzFDQjUwMDA1RjA2MSAv
KiBtaW5pZG9tICovLAorCQkJCTUzQzNENUUzMjFFQ0U2OEUwMDg3RkRGQyAvKiB0ZXN0YXBpU2Ny
aXB0cyAqLywKKwkJCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCAqLywKKwkJCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3
YXBUZXN0LmggKi8sCisJCQkJQzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlz
SW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCisJCQkJQzI5RUNCMDExODA0RDBFRDAwRDJDQkI0
IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tICovLAorCQkJCUMyMDMyODFF
MTk4MTk3OUQwMDg4QjQ5OSAvKiBDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuYyAqLywKKwkJ
CQlDMjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0
LmggKi8sCisJCQkJQzI4OEIyREMxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5oICovLAor
CQkJCUMyODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi8sCisJCQkJRkUw
RDRBMDQxQUI4REQwQTAwMkY1NEJGIC8qIEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwICovLAor
CQkJCUZFMEQ0QTA1MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0Lmgg
Ki8sCisJCQkJRkVDQjhCMjUxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVz
dC5jcHAgKi8sCisJCQkJRkVDQjhCMjYxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJp
ZGVzVGVzdC5oICovLAorCQkJCUZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250
ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovLAorCQkJCUZFMEQ0QTA4MUFCQTI0MzcwMDJGNTRC
RiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaCAqLywKKwkJCQlDMjE4MUZDMDE4
QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5oICovLAorCQkJCUMyMTgxRkMxMThBOTQ4
RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3RzLm1tICovLAorCQkJCTBGRjQ3QzU4MUVCRkU4MzUw
MEYyODBCNyAvKiBKU09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5jcHAgKi8sCisJCQkJMEZGNDdD
NTkxRUJGRTgzNTAwRjI4MEI3IC8qIEpTT2JqZWN0R2V0UHJveHlUYXJnZXRUZXN0LmggKi8sCisJ
CQkJNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICovLAorCQkJ
CTVDNEU4RTk1MURCRUJEQTIwMDM2RjFGQyAvKiBKU09OUGFyc2VUZXN0LmggKi8sCisJCQkJMTQ3
MTQ4MkUyMEQzMjM2NDAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLmggKi8sCisJCQkJMTQ3
MTQ4MkYyMEQzMjM2NTAwOTBFNjMwIC8qIEpTV3JhcHBlck1hcFRlc3RzLm1tICovLAorCQkJCUZF
RjQ5QUE5MUVCOTQ3RkUwMDY1M0JEQiAvKiBNdWx0aXRocmVhZGVkTXVsdGlWTUV4ZWN1dGlvblRl
c3QuY3BwICovLAorCQkJCUZFRjQ5QUFBMUVCOTQ3RkUwMDY1M0JEQiAvKiBNdWx0aXRocmVhZGVk
TXVsdGlWTUV4ZWN1dGlvblRlc3QuaCAqLywKKwkJCQlGRURBNTBENDFCOTdGNDQyMDA5QTNCNEYg
LyogUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAgKi8sCisJCQkJRkVEQTUwRDUxQjk3RjRE
OTAwOUEzQjRGIC8qIFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuaCAqLywKKwkJCQk2NTU3MEY1
ODFBQTRDMDBBMDA5QjNDMjMgLyogUmVncmVzczE0MTI3NS5oICovLAorCQkJCTY1NTcwRjU5MUFB
NEMwMEEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1tICovLAorCQkJCUZFQjUxRjZBMUE5N0I2
ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5LmggKi8sCisJCQkJRkVCNTFGNkIxQTk3QjY4ODAw
MUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8sCisJCQkJRkVDQjhCMjkxRDI1Q0FCQjAwNkYy
NDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovLAorCQkJCTE0QkQ1QTJEMEEz
RTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCisJCQkJNTMxRDRFMTkxRjU5Q0REMjAwRUM4
MzZDIC8qIHRlc3RhcGkuY3BwICovLAorCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0
ZXN0YXBpLmpzICovLAorCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1t
ICovLAorCQkJCTUzMEZERTczMjFGQUFGQzYwMDA1OUQ2NSAvKiB0ZXN0SW5jbHVkZXMubSAqLywK
KwkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCisJCQkJ
NTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8sCisJCQkJ
NTM0OTAyODMxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICovLAorCQkJKTsK
KwkJCW5hbWUgPSB0ZXN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCQl0YWJXaWR0
aCA9IDQ7CisJCQl1c2VzVGFicyA9IDA7CisJCX07CisJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYx
OSAvKiBpbnRlcnByZXRlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAor
CQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCisJCQkJQTdG
ODY5MEUwRjk1ODRBMTAwNTU4Njk3IC8qIENhY2hlZENhbGwuaCAqLywKKwkJCQk3OTZEQUEyQTFF
ODlDQ0Q2MDA1REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAorCQkJCTE0MjlEOERCMEVEMjIwNUIw
MEI4OTYxOSAvKiBDYWxsRnJhbWUuY3BwICovLAorCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4OTYx
OSAvKiBDYWxsRnJhbWUuaCAqLywKKwkJCQlBN0Y4NjlFQzBGOTVDMkVDMDA1NTg2OTcgLyogQ2Fs
bEZyYW1lQ2xvc3VyZS5oICovLAorCQkJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxs
RnJhbWVJbmxpbmVzLmggKi8sCisJCQkJNTMzOEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi8sCisJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5
IC8qIENMb29wU3RhY2suY3BwICovLAorCQkJCTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBD
TG9vcFN0YWNrLmggKi8sCisJCQkJQTdDMUVBRUIxNzk4N0FCNjAwMjk5REIyIC8qIENMb29wU3Rh
Y2tJbmxpbmVzLmggKi8sCisJCQkJRkUwODZCQzkyMTIzREVGQTAwM0YyOTI5IC8qIEVudHJ5RnJh
bWUuaCAqLywKKwkJCQlFMzRFREJGNjFEQjVGRkMxMDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmgg
Ki8sCisJCQkJMTQyOUQ3RDMwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCAqLywK
KwkJCQkxNDI5RDc3QjBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQlF
MzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCisJCQkJ
NjVGQjUxMTUxODRFRThGODAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1lLmggKi8sCisJCQkJRkUx
RDZENzQyMzYyNjQ5RDAwN0E1QzI2IC8qIFByb3RvQ2FsbEZyYW1lSW5saW5lcy5oICovLAorCQkJ
CTE0OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAorCQkJCUZFMUQ2RDZD
MjM2MjU0NEEwMDdBNUMyNiAvKiBSZWdpc3RlcklubGluZXMuaCAqLywKKwkJCQlEQzE3RTgxMzFD
OUM3RkQ0MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5jcHAgKi8sCisJCQkJREMxN0U4MTQxQzlD
N0ZENDAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW4uaCAqLywKKwkJCQlEQzE3RTgxNTFDOUM3RkQ0
MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCAqLywKKwkJCQlBN0MxRUFFQzE3OTg3
QUI2MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmNwcCAqLywKKwkJCQlBN0MxRUFFRDE3OTg3QUI2
MDAyOTlEQjIgLyogU3RhY2tWaXNpdG9yLmggKi8sCisJCQkJNjU4RDNBNTUxOTYzODI2ODAwM0M0
NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW50ZXJwcmV0ZXI7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDI5RDkyQzBFRDIyRDcwMDBC
ODk2MTkgLyogaml0ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkwRjI0RTUzQjE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCAqLywK
KwkJCQkwRjI0RTUzQzE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggKi8sCisJ
CQkJNkI3NjdFN0EyNjc5MUYyNzAwMTdGOEQxIC8qIEFzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgg
Ki8sCisJCQkJNTJERDAwMDcyNkUwMzlCNDAwNTRFNDA4IC8qIEJhc2VsaW5lSklUQ29kZS5jcHAg
Ki8sCisJCQkJNTJERDAwMDYyNkUwMzlCMzAwNTRFNDA4IC8qIEJhc2VsaW5lSklUQ29kZS5oICov
LAorCQkJCTcyMzk5OEY2MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICov
LAorCQkJCTcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLywK
KwkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKKwkJ
CQkwRjY0QjI3MDFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggKi8sCisJCQkJNjVC
ODM5MkQxQkFDQTlEMzAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmNwcCAqLywKKwkJCQk2NUI4
MzkyQzFCQUNBOTJBMDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCAqLywKKwkJCQk2MkVDOUJC
NDFCN0VCMDdDMDAzMDNBRDEgLyogQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwICovLAorCQkJCTYy
RUM5QkI1MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oICovLAorCQkJ
CTYyRDc1NUQwMUI4NEZCMzkwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5jcHAgKi8sCisJ
CQkJNjJENzU1RDExQjg0RkIzOTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyLmggKi8sCisJ
CQkJNjJENzU1RDIxQjg0RkIzOTAwMTgwMUZBIC8qIENhbGxGcmFtZVNodWZmbGVyMzJfNjQuY3Bw
ICovLAorCQkJCTYyRDc1NUQzMUI4NEZCMzkwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlcjY0
LmNwcCAqLywKKwkJCQlEQzE3RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNw
cCAqLywKKwkJCQkwRjI0RTUzRDE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggKi8s
CisJCQkJMEZGMDU0RjcxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6
ei5jcHAgKi8sCisJCQkJMEZGMDU0RjgxQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxv
Y2F0aW9uRnV6ei5oICovLAorCQkJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCAqLywKKwkJCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhl
Y3V0YWJsZUFsbG9jYXRvci5oICovLAorCQkJCTBGNTE5M0Y2MjY2QzQzMkQwMDQ4M0EyQyAvKiBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlLmggKi8sCisJCQkJMEYyNEU1M0UxN0VBOUY1OTAwQUJCMjE3
IC8qIEZQUkluZm8uaCAqLywKKwkJCQkwRjc2NkQyRDE1QThEQ0REMDA4RjM2M0UgLyogR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjc2NkQyRTE1QThEQ0REMDA4RjM2M0UgLyog
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmggKi8sCisJCQkJMEY5MzI3NEMxQzFGNjZBQTAwQ0Y2NTY0
IC8qIEdQUkluZm8uY3BwICovLAorCQkJCTBGMjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJ
bmZvLmggKi8sCisJCQkJMEZCNTcwNjgyNjdBNjQyRTAwODBGQThCIC8qIEhhc2hhYmxlUmVnaXN0
ZXJTZXQuaCAqLywKKwkJCQlEQzIxNDMwNTFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5jcHAg
Ki8sCisJCQkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLywKKwkJCQlE
RTVBMDlGRjFCQTNBQzNFMDAzRDQ0MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgKi8sCisJCQkJ
MTQyOUQ5MkQwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5jcHAgKi8sCisJCQkJMTQyOUQ5MkUwRUQy
MkQ3MDAwQjg5NjE5IC8qIEpJVC5oICovLAorCQkJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuY3BwICovLAorCQkJCUZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAv
KiBKSVRBZGRHZW5lcmF0b3IuaCAqLywKKwkJCQkwRjc1QTA2NTIwMTNFNEVGMDAzOEUyQ0YgLyog
SklUQWxsb2NhdG9yLmggKi8sCisJCQkJODZBOTBFQ0YwRUU3RDUxRjAwQUIzNTBEIC8qIEpJVEFy
aXRobWV0aWMuY3BwICovLAorCQkJCUZFM0EwNkFEMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRB
bmRHZW5lcmF0b3IuY3BwICovLAorCQkJCUZFM0EwNkFFMUMxMENCNkYwMDM5MEZERCAvKiBKSVRC
aXRBbmRHZW5lcmF0b3IuaCAqLywKKwkJCQlGRTNBMDZBNzFDMTBCQzc0MDAzOTBGREQgLyogSklU
Qml0QmluYXJ5T3BHZW5lcmF0b3IuaCAqLywKKwkJCQlGRTNBMDZBMzFDMTBCNzA4MDAzOTBGREQg
LyogSklUQml0T3JHZW5lcmF0b3IuY3BwICovLAorCQkJCUZFM0EwNkE0MUMxMEI3MDgwMDM5MEZE
RCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovLAorCQkJCUZFM0EwNkFGMUMxMENCNkYwMDM5MEZE
RCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuY3BwICovLAorCQkJCUZFM0EwNkIwMUMxMENCNkYwMDM5
MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuaCAqLywKKwkJCQk4NkNDODVBMjBFRTc5Qjc0MDAy
ODg2ODIgLyogSklUQ2FsbC5jcHAgKi8sCisJCQkJMEY4Rjk0NDMxNjY3NjM1MjAwRDYxOTcxIC8q
IEpJVENvZGUuY3BwICovLAorCQkJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2Rl
LmggKi8sCisJCQkJMEZGQjgwQkIyMEE3OTQ3MDAwMDZBQUY2IC8qIEpJVENvZGVJbmxpbmVzLmgg
Ki8sCisJCQkJRkU0NzZGRjMyMDdFODVENDAwOTNDQTJEIC8qIEpJVENvZGVNYXAuaCAqLywKKwkJ
CQk4NkQ0NDZFODI1QjIxMjQ4MDBFQ0FFNzUgLyogSklUQ29tcGlsYXRpb24uY3BwICovLAorCQkJ
CTg2RDQ0NkU3MjVCMjEyNDgwMEVDQUU3NSAvKiBKSVRDb21waWxhdGlvbi5oICovLAorCQkJCTBG
MDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovLAorCQkJ
CTcyNkI5MUI5MjY1ODI2M0MwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbktleS5jcHAgKi8sCisJ
CQkJNzI2QjkxQjgyNjU4MjYzQzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmggKi8sCisJ
CQkJNzI2QjkxQUUyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5jcHAgKi8s
CisJCQkJNzI2QjkxQUIyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oICov
LAorCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3BwICov
LAorCQkJCTBGQUY3RUZCMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLywK
KwkJCQlGRTE4N0EwQTFDMDIyOTIzMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCAqLywK
KwkJCQlGRTE4N0EwQjFDMDIyOTIzMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggKi8sCisJ
CQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAorCQkJ
CTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCisJCQkJMEZC
MTRFMUMxODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCAqLywK
KwkJCQkwRkIxNEUxRDE4MTI0QUNFMDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aCAqLywKKwkJCQk4NkNDODVBMDBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oICovLAor
CQkJCUZFM0EwNkI2MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3Bw
ICovLAorCQkJCUZFM0EwNkI3MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0
b3IuaCAqLywKKwkJCQk3OTIzM0MyOTFEMzQ3MTU3MDBDNUE4MzQgLyogSklUTWF0aElDLmggKi8s
CisJCQkJNzlBODk5RkUxRDM4NjEyRTAwRDE4QzczIC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggKi8s
CisJCQkJNzlBRjBCRTMxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5o
ICovLAorCQkJCUZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3Bw
ICovLAorCQkJCUZFMTg3QTAwMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCAq
LywKKwkJCQlGRTk5QjI0NzFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNwcCAq
LywKKwkJCQlGRTk5QjI0ODFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggKi8s
CisJCQkJODZENDQ2RTUyNUIyMTI0NzAwRUNBRTc1IC8qIEpJVE9wYXF1ZUJ5cHJvZHVjdC5oICov
LAorCQkJCTg2RDQ0NkU5MjVCMjEyNDgwMEVDQUU3NSAvKiBKSVRPcGFxdWVCeXByb2R1Y3RzLmNw
cCAqLywKKwkJCQk4NkQ0NDZFNjI1QjIxMjQ4MDBFQ0FFNzUgLyogSklUT3BhcXVlQnlwcm9kdWN0
cy5oICovLAorCQkJCUJDREQ1MUU5MEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCAq
LywKKwkJCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAq
LywKKwkJCQkwRjI0RTU0NTE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgKi8s
CisJCQkJMEYyNEU1NDYxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuaCAqLywKKwkJ
CQk3MjZCOTFBQTI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxhbi5jcHAgKi8sCisJCQkJNzI2Qjkx
QUYyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCAqLywKKwkJCQk3MjEzMUJGNjI2NTg3RUYy
MDA3MTE0Q0YgLyogSklUUGxhblN0YWdlLmggKi8sCisJCQkJODZDQzg1QzMwRUU3QTg5NDAwMjg4
NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCAqLywKKwkJCQlGRTNBMDZCODFDMTEwM0Q5MDAz
OTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgKi8sCisJCQkJRkUzQTA2QjkxQzEx
MDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCAqLywKKwkJCQk3MjEzMUJG
MzI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBvaW50LmNwcCAqLywKKwkJCQk3MjEzMUJGNTI2
NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBvaW50LmggKi8sCisJCQkJNzIxMzFCRjQyNjU4N0VG
MjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oICovLAorCQkJCTUyQjUxMDBDMjY1RUZDRDQwMDg5
NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5jcHAgKi8sCisJCQkJNTJCNTEwMEIyNjVFRkNENDAw
ODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNzLmggKi8sCisJCQkJMEY3NjZEMjYxNUE4Q0MxQjAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjc2NkQxQzE1QTUwMjhEMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCAqLywKKwkJCQlGRTQyMzg4RjFCRTE4QzEyMDA1MTQ3
MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCAqLywKKwkJCQlGRTk4QjVCNjFCQjlBRTExMDA3M0U3
QTYgLyogSklUU3ViR2VuZXJhdG9yLmggKi8sCisJCQkJMEY1RUY5MUIxNjg3OEY3ODAwM0U1QzI1
IC8qIEpJVFRodW5rcy5jcHAgKi8sCisJCQkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5oICovLAorCQkJCTBGQzcxMkUwMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8sCisJCQkJMEZDNzEyRTExN0NEODc4RjAw
OENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJ
REMwMTg0MTcxRDEwQzE4NzAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmNwcCAqLywKKwkJCQlEQzAx
ODQxODFEMTBDMTg3MDA1N0IwNTMgLyogSklUV29ya2xpc3QuaCAqLywKKwkJCQk3MjEzMUJGQjI2
NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi8sCisJCQkJNzI2QjkxQUMy
NjU4MTY1MzAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmNwcCAqLywKKwkJCQk3MjZCOTFB
ODI2NTgxNjUyMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQuaCAqLywKKwkJCQlBNzZDNTE3
NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLywKKwkJCQk3OTJDQjM0NzFD
NEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmlnaW5NYXAuY3BwICovLAorCQkJCTc5MkNCMzQ4
MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oICovLAorCQkJCTBGRTgzNDE1
MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgKi8sCisJ
CQkJMEZFODM0MTYxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmggKi8sCisJCQkJMEZBN0E4RTkxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAgKi8sCisJCQkJ
MEZBN0E4RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovLAorCQkJCTY1NDBDNzlFMUI4MkQ5
Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNwcCAqLywKKwkJCQk2NTQwQzc5RjFCODJE
OUNFMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5oICovLAorCQkJCTY1NDBDNzlDMUI4MkQ5
OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAgKi8sCisJCQkJNjU0MEM3OUQx
QjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggKi8sCisJCQkJNjIzQTM3
RUIxQjg3QTdCRDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggKi8sCisJCQkJMEZDMzE0MTQxODE0
NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCAqLywKKwkJCQkwRkMzMTQxMDE4MTQ1NTkx
MDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLywKKwkJCQkwRkE3QThFRDE4Q0U0RkQ4MDA1MjM3
MUQgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCAqLywKKwkJCQkwRjI0RTU0QjE3RUUy
NzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggKi8sCisJCQkJMEZFRTk4
NDIxQTg5MjI3NTAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmNwcCAqLywKKwkJCQkwRkVF
OTg0MDFBODg2NUI2MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCAqLywKKwkJCQk2Qjcz
MUNDMDI2NDdBODM3MDAxNDY0NkYgLyogU2xvd1BhdGhDYWxsLmNwcCAqLywKKwkJCQlBNzA5RjJF
RjE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggKi8sCisJCQkJRTNGMjNBN0IxRUNG
MTNFNTAwOTc4RDk5IC8qIFNuaXBwZXQuaCAqLywKKwkJCQlGRTE4N0EwQzFDMDJFQkE3MDAzOEJC
Q0EgLyogU25pcHBldE9wZXJhbmQuaCAqLywKKwkJCQlFM0YyM0E3QzFFQ0YxM0U1MDA5NzhEOTkg
LyogU25pcHBldFBhcmFtcy5oICovLAorCQkJCUUzRjIzQTdEMUVDRjEzRTUwMDk3OEQ5OSAvKiBT
bmlwcGV0UmVnLmggKi8sCisJCQkJRTNGMjNBN0UxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRT
bG93UGF0aENhbGxzLmggKi8sCisJCQkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNp
YWxpemVkVGh1bmtKSVQuaCAqLywKKwkJCQlBN0ZGNjQ3QTE4QzUyRTg1MDBCNTUzMDcgLyogU3Bp
bGxSZWdpc3RlcnNNb2RlLmggKi8sCisJCQkJREM3OTk3ODExQ0RFOUY5RTAwNEQ0QTA5IC8qIFRh
Z1JlZ2lzdGVyc01vZGUuY3BwICovLAorCQkJCURDNzk5NzgyMUNERTlGOUUwMDRENEEwOSAvKiBU
YWdSZWdpc3RlcnNNb2RlLmggKi8sCisJCQkJMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRl
bXBSZWdpc3RlclNldC5jcHAgKi8sCisJCQkJMEYyNEU1NDgxN0VFMjc0OTAwQUJCMjE3IC8qIFRl
bXBSZWdpc3RlclNldC5oICovLAorCQkJCTBGNTcyRDREMTY4NzlGREIwMEU1N0ZCRCAvKiBUaHVu
a0dlbmVyYXRvci5oICovLAorCQkJCUE3Mzg2NTUyMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dl
bmVyYXRvcnMuY3BwICovLAorCQkJCUE3Mzg2NTUzMTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dl
bmVyYXRvcnMuaCAqLywKKwkJCQk2NTk4N0YyRjE2ODI4QTdFMDAzQzJGOEQgLyogVW51c2VkUG9p
bnRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBqaXQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRkU5MTJCNEUyNTMxMTkzMzAw
RkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3IuaCAqLywKKwkJCQlGRTkxMkI1MDI1MzExQUQx
MDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCAqLywKKwkJCQkwRkVDM0M1
MDFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8sCisJCQkJ
MEZFQzNDNTExRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLywK
KwkJCQkwRkE3NjIwQTFEQjk1OUY2MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmggKi8sCisJ
CQkJMEZEQ0UxMUIxRkFFNjFGNDAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oICov
LAorCQkJCTBGNDJCM0MwMjAxRUI1MDkwMDM1NzAzMSAvKiBBbGxvY2F0b3IuY3BwICovLAorCQkJ
CTBGNzVBMDU0MjAwRDI1RUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCAqLywKKwkJCQkwRjMwQ0I1
RDFGQ0U0NkI0MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oICovLAorCQkJCTBGNzVBMDVE
MjAwRDI1RjEwMDM4RTJDRiAvKiBBbGxvY2F0b3JJbmxpbmVzLmggKi8sCisJCQkJMEZCNDY3N0Ux
RkREQTZFNTAwM0ZDQjA5IC8qIEF0b21JbmRpY2VzLmggKi8sCisJCQkJQzJCOTE2QzQxNERBMDQw
QzAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5LmNwcCAqLywKKwkJCQlDMkI5MTZDMTE0REEwMTRF
MDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCAqLywKKwkJCQlFMzg2NTJFMjIzN0NBMEM4MDBF
MUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmggKi8sCisJCQkJMEY3REYxNDUxRTJCRUY2ODAw
OTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovLAorCQkJCTBGOTYzMDM1MUQ0MTky
QzMwMDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5jcHAgKi8sCisJCQkJMEY5NjMwMzYxRDQxOTJD
MzAwNTYwOUQ5IC8qIENlbGxBdHRyaWJ1dGVzLmggKi8sCisJCQkJMEZERTg3RjgxREZEMEM2RDAw
NjRDMzkwIC8qIENlbGxDb250YWluZXIuY3BwICovLAorCQkJCTBGMDcwQTQyMUQ1NDNBODkwMDZF
NzIzMiAvKiBDZWxsQ29udGFpbmVyLmggKi8sCisJCQkJMEYwNzBBNDMxRDU0M0E4OTAwNkU3MjMy
IC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggKi8sCisJCQkJMEYxQzNERDkxQkJDRTA5RTAwRTUy
M0U0IC8qIENlbGxTdGF0ZS5oICovLAorCQkJCTBGRDhBMzExMTdENDMyNkMwMENBMkM0MCAvKiBD
b2RlQmxvY2tTZXQuY3BwICovLAorCQkJCTBGRDhBMzEyMTdENDMyNkMwMENBMkM0MCAvKiBDb2Rl
QmxvY2tTZXQuaCAqLywKKwkJCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29kZUJsb2Nr
U2V0SW5saW5lcy5oICovLAorCQkJCTBGRDBFNUYxMUU0NkM4QUQwMDA2QUIwOCAvKiBDb2xsZWN0
aW5nU2NvcGUuaCAqLywKKwkJCQkwRkE3NjIwMDFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlv
blNjb3BlLmNwcCAqLywKKwkJCQkwRkE3NjIwMTFEQjkyNDIzMDBCN0EyRkQgLyogQ29sbGVjdGlv
blNjb3BlLmggKi8sCisJCQkJMEZEMEU1RTUxRTQzRDM0NzAwMDZBQjA4IC8qIENvbGxlY3RvclBo
YXNlLmNwcCAqLywKKwkJCQkwRkQwRTVFNjFFNDNEMzQ3MDAwNkFCMDggLyogQ29sbGVjdG9yUGhh
c2UuaCAqLywKKwkJCQkwRkRDRTEyNzFGQUZBODU5MDA2RjM5MDEgLyogQ29tcGxldGVTdWJzcGFj
ZS5jcHAgKi8sCisJCQkJMEZEQ0UxMjgxRkFGQTg1OTAwNkYzOTAxIC8qIENvbXBsZXRlU3Vic3Bh
Y2UuaCAqLywKKwkJCQkwRkQyRkQ5MzIwQjUyQkREMDBGMDk0NDEgLyogQ29tcGxldGVTdWJzcGFj
ZUlubGluZXMuaCAqLywKKwkJCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0
aXZlUm9vdHMuY3BwICovLAorCQkJCTE0OURBQUYyMTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2
YXRpdmVSb290cy5oICovLAorCQkJCTBGNDE1NDVBMUZEMjBCMUYwMDFCNThGNiAvKiBDb25zdHJh
aW50Q29uY3VycmVuY3kuaCAqLywKKwkJCQkwRjREOEM3MzFGQzdBOTc0MDAxRDMyQUMgLyogQ29u
c3RyYWludFBhcmFsbGVsaXNtLmggKi8sCisJCQkJMEY3REYxMkYxRTI5NzBENTAwOTU5NTFCIC8q
IENvbnN0cmFpbnRWb2xhdGlsaXR5LmggKi8sCisJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3
IC8qIERlZmVyR0MuY3BwICovLAorCQkJCTBGMTM2RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZl
ckdDLmggKi8sCisJCQkJRkU5RkE3QzQyNzNDOEIyNjAwNUQ5RTcwIC8qIERlZmVyR0NJbmxpbmVz
LmggKi8sCisJCQkJMEZCQjczQkExREVGODY0NDAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZv
cnQuaCAqLywKKwkJCQkwRjk2MzAzNzFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2Rl
LmNwcCAqLywKKwkJCQkwRjk2MzAzODFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2Rl
LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmggKi8sCisJCQkJMEZFQzNDNTQxRjMzQTQ1MzAwRjU5QjZDIC8qIEZhc3RN
YWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCAqLywKKwkJCQkwRkVDM0M1NTFGMzNBNDUz
MDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLywKKwkJCQkw
RjU1MTNBNzFENUE2OENCMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwICovLAorCQkJCTBGNTUxM0E1
MUQ1QTY4MkEwMEMzMkJEOCAvKiBGcmVlTGlzdC5oICovLAorCQkJCTBGNjU4NUUwMUVFMDgwNTcw
MDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCAqLywKKwkJCQkyQTgzNjM4NzE4RDdEMEZFMDAw
MEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8sCisJCQkJMkE4MzYzODgxOEQ3
RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLywKKwkJCQkyQUFDRTYz
QTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKKwkJCQkyQUFD
RTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJQkNC
RTJDQUQxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oICovLAorCQkJCTBGRDBFNUU3
MUU0M0QzNDcwMDA2QUIwOCAvKiBHQ0NvbmR1Y3Rvci5jcHAgKi8sCisJCQkJMEZEMEU1RTgxRTQz
RDM0NzAwMDZBQjA4IC8qIEdDQ29uZHVjdG9yLmggKi8sCisJCQkJMEZCNDc2N0MxRDk5QUVBNzAw
OEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0LmggKi8sCisJCQkJMEZCNDc2N0QxRDk5QUVBNzAw
OEVBNkNCIC8qIEdDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oICovLAorCQkJCTBGMkI2NkE4MTdC
NkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZC5oICovLAorCQkJCTBGMkI2NkE5
MTdCNkI1M0QwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRlZElubGluZXMuaCAqLywKKwkJ
CQkwRjJCNjZBQTE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCAq
LywKKwkJCQkwRjJCNjZBQjE3QjZCNTNEMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRT
ZXRJbmxpbmVzLmggKi8sCisJCQkJMkFERkEyNjIxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2lu
Zy5jcHAgKi8sCisJCQkJMkFBQkNERTYxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oICov
LAorCQkJCTUyNzI5ODdCMjM1RkM4QkEwMDVDOTgyQyAvKiBHQ01lbW9yeU9wZXJhdGlvbnMuaCAq
LywKKwkJCQkwRjk3MTUyRTFFQjI4QkU5MDBBMTY0NUQgLyogR0NSZXF1ZXN0LmNwcCAqLywKKwkJ
CQkwRjk3MTUyRjFFQjI4QkU5MDBBMTY0NUQgLyogR0NSZXF1ZXN0LmggKi8sCisJCQkJMEZBNkYz
OEMyMENDMkM5NTAwQTAzRENEIC8qIEdDU2VnbWVudGVkQXJyYXkuY3BwICovLAorCQkJCTJBMzQz
Rjc0MThBMTc0OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi8sCisJCQkJMkEzNDNG
NzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi8sCisJCQkJ
MEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovLAorCQkJCTBGRUMzQzU4
MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwICov
LAorCQkJCTBGRUMzQzU5MUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCAqLywKKwkJCQkxNDJFMzEyQjEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlLmgg
Ki8sCisJCQkJQzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi8sCisJ
CQkJQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovLAor
CQkJCUNEMUY5QjQ4MjcwQ0ZEQ0MwMDYxN0VCNiAvKiBIYW5kbGVGb3J3YXJkLmggKi8sCisJCQkJ
MTQyRTMxMkMxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5jcHAgKi8sCisJCQkJMTQyRTMx
MkQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5oICovLAorCQkJCTE0NkZBNUE4MTM3OEY2
QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovLAorCQkJCTE0QkE3QTk1MTNBQURGRjgwMDVC
N0MyQyAvKiBIZWFwLmNwcCAqLywKKwkJCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVh
cC5oICovLAorCQkJCTkxNzdBMURCMjJGOTU4RDMwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCAq
LywKKwkJCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAorCQkJ
CURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovLAorCQkJCTBGMDcwQTQ0
MUQ1NDNBODkwMDZFNzIzMiAvKiBIZWFwQ2VsbElubGluZXMuaCAqLywKKwkJCQkwRkRDRTEyMDFG
QUU4NTg3MDA2RjM5MDEgLyogSGVhcENlbGxUeXBlLmNwcCAqLywKKwkJCQkwRkRDRTExRjFGQUU4
NTg3MDA2RjM5MDEgLyogSGVhcENlbGxUeXBlLmggKi8sCisJCQkJMEYwQ0FFRkQxRUM0REE4NTAw
OTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5jcHAgKi8sCisJCQkJMEYwQ0FFRkUxRUM0
REE4NTAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oICovLAorCQkJCTBGMzJCRDBF
MUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi8sCisJCQkJMEYzMkJEMEYx
QkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggKi8sCisJCQkJQzJEQTc3ODIxOEUy
NTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggKi8sCisJCQkJMkFEODkzMjkxN0UzODY4RjAw
NjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovLAorCQkJCUE1MzM5RUM4MUJCNEI0NTEw
MDU0RjAwNSAvKiBIZWFwT2JzZXJ2ZXIuaCAqLywKKwkJCQlBNTM5OEZBOTFDNzUwRDk1MDA2MEE5
NjMgLyogSGVhcFByb2ZpbGVyLmNwcCAqLywKKwkJCQlBNTM5OEZBQTFDNzUwRDk1MDA2MEE5NjMg
LyogSGVhcFByb2ZpbGVyLmggKi8sCisJCQkJQTU0QzJBQUUxQzY1NDREMTAwQTE4RDc4IC8qIEhl
YXBTbmFwc2hvdC5jcHAgKi8sCisJCQkJQTU0QzJBQUYxQzY1NDREMTAwQTE4RDc4IC8qIEhlYXBT
bmFwc2hvdC5oICovLAorCQkJCUE1MzExQzM0MUM3N0NFQUMwMEU2QjFCNiAvKiBIZWFwU25hcHNo
b3RCdWlsZGVyLmNwcCAqLywKKwkJCQlBNTMxMUMzNTFDNzdDRUFDMDBFNkIxQjYgLyogSGVhcFNu
YXBzaG90QnVpbGRlci5oICovLAorCQkJCUZFMkNDOTJGMjc1NkIyQjkwMDNGNUFCOCAvKiBIZWFw
U3Vic3BhY2VUeXBlcy5oICovLAorCQkJCTBGQURFNjcyMUQ0RDIzQkMwMDc2ODQ1NyAvKiBIZWFw
VXRpbC5oICovLAorCQkJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuY3BwICovLAorCQkJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRh
bFN3ZWVwZXIuaCAqLywKKwkJCQkwRkRDRTEyRjFGQjExRDlEMDA2RjM5MDEgLyogSXNvQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEZEQ0UxMzAxRkIxMUQ5RDAwNkYzOTAxIC8q
IElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLywKKwkJCQkwRkI0Njc3QzFGRERBNkQ5MDAz
RkNCMDkgLyogSXNvQ2VsbFNldC5jcHAgKi8sCisJCQkJMEZCNDY3N0QxRkREQTZEOTAwM0ZDQjA5
IC8qIElzb0NlbGxTZXQuaCAqLywKKwkJCQkwRkI0Njc3QjFGRERBNkQ4MDAzRkNCMDkgLyogSXNv
Q2VsbFNldElubGluZXMuaCAqLywKKwkJCQlFM0M4RUQ0MTIzQTFEQkM0MDAxMzE5NTggLyogSXNv
SGVhcENlbGxUeXBlLmNwcCAqLywKKwkJCQlFM0JGMUJBRDIzOEFBRUQxMDAzQTFDMkIgLyogSXNv
SGVhcENlbGxUeXBlLmggKi8sCisJCQkJRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lu
bGluZWRIZWFwQ2VsbFR5cGUuaCAqLywKKwkJCQlGRTY1QjE1MDI3NDg2MDFGMDBEQjVCMTYgLyog
SXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCAqLywKKwkJCQkwRkRDRTEyQzFGQUZCNERF
MDA2RjM5MDEgLyogSXNvU3Vic3BhY2UuY3BwICovLAorCQkJCTBGRENFMTJCMUZBRkI0REUwMDZG
MzkwMSAvKiBJc29TdWJzcGFjZS5oICovLAorCQkJCTBGRDJGRDkyMjBCNTJCREMwMEYwOTQ0MSAv
KiBJc29TdWJzcGFjZUlubGluZXMuaCAqLywKKwkJCQkwRjVFMEZFNjIwODZBRDQ3MDA5N0YwREUg
LyogSXNvU3Vic3BhY2VQZXJWTS5jcHAgKi8sCisJCQkJMEY1RTBGRTUyMDg2QUQ0NjAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCAqLywKKwkJCQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0Ug
LyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovLAorCQkJCTBGNzY2RDJBMTVBOENDMzQwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZVNldC5oICovLAorCQkJCTBGNzVBMDU5MjAwRDI1RjAwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvci5jcHAgKi8sCisJCQkJMEY3NUEwNTcyMDBEMjVGMDAwMzhFMkNG
IC8qIExvY2FsQWxsb2NhdG9yLmggKi8sCisJCQkJMEY3NUEwNUEyMDBEMjVGMDAwMzhFMkNGIC8q
IExvY2FsQWxsb2NhdG9ySW5saW5lcy5oICovLAorCQkJCTE0QjcyMzNGMTJEN0QwREEwMDNCRDVF
RCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwICovLAorCQkJCTE0QjcyMzQwMTJEN0QwREEwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuaCAqLywKKwkJCQkxNDJENkYwNjEzNTM5QTI4MDBC
MDJFODYgLyogTWFya2VkQmxvY2suY3BwICovLAorCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4
NiAvKiBNYXJrZWRCbG9jay5oICovLAorCQkJCTBGN0M1RkI3MUQ4ODhBMDEwMDQ0RjVFMiAvKiBN
YXJrZWRCbG9ja0lubGluZXMuaCAqLywKKwkJCQkxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEgLyog
TWFya2VkQmxvY2tTZXQuaCAqLywKKwkJCQkzM0IyQTU0NTIyNjUxRDUzMDA1QTBGNzkgLyogTWFy
a2VkU3BhY2UuY3BwICovLAorCQkJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRT
cGFjZS5oICovLAorCQkJCTBGN0RGMTMwMUUyOTcwRDUwMDk1OTUxQiAvKiBNYXJrZWRTcGFjZUlu
bGluZXMuaCAqLywKKwkJCQkwRjY2MEUzMzFFMDUxN0I3MDAzMTQ2MkMgLyogTWFya2luZ0NvbnN0
cmFpbnQuY3BwICovLAorCQkJCTBGNjYwRTM0MUUwNTE3QjcwMDMxNDYyQyAvKiBNYXJraW5nQ29u
c3RyYWludC5oICovLAorCQkJCUZFMzM2QjUyMjVEQjQ5N0QwMDk4RjAzNCAvKiBNYXJraW5nQ29u
c3RyYWludEV4ZWN1dG9yUGFpci5oICovLAorCQkJCTBGNjYwRTM1MUUwNTE3QjcwMDMxNDYyQyAv
KiBNYXJraW5nQ29uc3RyYWludFNldC5jcHAgKi8sCisJCQkJMEY2NjBFMzYxRTA1MTdCODAwMzE0
NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50U2V0LmggKi8sCisJCQkJMEY5REFBMDYxRkQxQzNDODAw
NzlDNUIyIC8qIE1hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcCAqLywKKwkJCQkwRjlEQUEwNzFG
RDFDM0M4MDA3OUM1QjIgLyogTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuaCAqLywKKwkJCQkxNDJE
NkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKKwkJCQkxNDJENkYwRjEz
NTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggKi8sCisJCQkJMEY2NDUzMTYxRkQyNDZBMDAw
MjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50LmNwcCAqLywKKwkJCQkwRjY0NTMx
NTFGRDI0NkEwMDAyNDMyQTEgLyogTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQuaCAqLywKKwkJ
CQkwRjFGQjM4QzFFMTczQTYyMDBBOUJFNTAgLyogTXV0YXRvclNjaGVkdWxlci5jcHAgKi8sCisJ
CQkJMEYxRkIzOTgxRTFGNjVGOTAwQTlCRTUwIC8qIE11dGF0b3JTY2hlZHVsZXIuaCAqLywKKwkJ
CQkwRkE3NjIwMjFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmNwcCAqLywKKwkJCQkw
RkE3NjIwMzFEQjkyNDIzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggKi8sCisJCQkJRTM1Njk4
NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQdHIuaCAqLywKKwkJCQkwRjlEQUEwODFG
RDFDM0M4MDA3OUM1QjIgLyogUGFyYWxsZWxTb3VyY2VBZGFwdGVyLmggKi8sCisJCQkJMEYwNzBB
NDUxRDU0M0E4OTAwNkU3MjMyIC8qIFByZWNpc2VBbGxvY2F0aW9uLmNwcCAqLywKKwkJCQkwRjA3
MEE0NjFENTQzQTg5MDA2RTcyMzIgLyogUHJlY2lzZUFsbG9jYXRpb24uaCAqLywKKwkJCQkwRkJC
NzNCNjFERUYzQUFDMDAyQzAwOUUgLyogUHJldmVudENvbGxlY3Rpb25TY29wZS5oICovLAorCQkJ
CTBGRDBFNUVGMUU0NkJGMjMwMDA2QUIwOCAvKiBSZWdpc3RlclN0YXRlLmggKi8sCisJCQkJMEY3
Q0Y5NEUxREJFRUU4NjAwOThDQzEyIC8qIFJlbGVhc2VIZWFwQWNjZXNzU2NvcGUuaCAqLywKKwkJ
CQlGRTkyRTFERDI1RkMwMzFEMDAxOEZDRjAgLyogUm9vdE1hcmtSZWFzb24uY3BwICovLAorCQkJ
CUZFM0I2NDJFMjVENkZCNEMwMDFBRERCNCAvKiBSb290TWFya1JlYXNvbi5oICovLAorCQkJCTBG
MkM2M0E5MUU0RkE0MkMwMEMxMzgzOSAvKiBSdW5uaW5nU2NvcGUuaCAqLywKKwkJCQkwRjREOEM3
NjFGQ0EzQ0YyMDAxRDMyQUMgLyogU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQuY3BwICovLAorCQkJ
CTBGNEQ4Qzc3MUZDQTNDRjMwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oICov
LAorCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCisJ
CQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCisJCQkJMEZD
QjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovLAorCQkJCUZF
MDQxNTUyMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oICovLAorCQkJCTBG
REU4N0ZBMURGRTZFNTAwMDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmNwcCAq
LywKKwkJCQkwRkRFODdGQjFERkU2RTUwMDA2NEMzOTAgLyogU3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlci5oICovLAorCQkJCTBGNEY4Mjg5MUUzMUI5NzEwMDc1MTg0QyAvKiBTdG9jaGFzdGljU3Bh
Y2VUaW1lTXV0YXRvclNjaGVkdWxlci5jcHAgKi8sCisJCQkJMEY0RjgyOEExRTMxQjk3MTAwNzUx
ODRDIC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggKi8sCisJCQkJMEY3
Q0Y5NTAxREMwMjdENzAwOThDQzEyIC8qIFN0b3BJZk5lY2Vzc2FyeVRpbWVyLmNwcCAqLywKKwkJ
CQkwRjdDRjk1MTFEQzAyN0Q3MDA5OENDMTIgLyogU3RvcElmTmVjZXNzYXJ5VGltZXIuaCAqLywK
KwkJCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggKi8sCisJCQkJQ0QxRjlC
NEEyNzBDRkUwRjAwNjE3RUI2IC8qIFN0cm9uZ0ZvcndhcmQuaCAqLywKKwkJCQkxNDU3MjI4NTE0
MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCTBGN0RGMTMxMUUyOTcw
RDUwMDk1OTUxQiAvKiBTdWJzcGFjZS5jcHAgKi8sCisJCQkJMEY3REYxMzIxRTI5NzBENTAwOTU5
NTFCIC8qIFN1YnNwYWNlLmggKi8sCisJCQkJMEY3REYxMzMxRTI5NzBENTAwOTU5NTFCIC8qIFN1
YnNwYWNlSW5saW5lcy5oICovLAorCQkJCTBGRDBFNUVEMUU0NjhBNTQwMDA2QUIwOCAvKiBTd2Vl
cGluZ1Njb3BlLmggKi8sCisJCQkJMEZENzlBMkIxRUJCQkRCMjAwREE4OEQzIC8qIFN5bmNocm9u
b3VzbmVzcy5jcHAgKi8sCisJCQkJMEZENzlBMkMxRUJCQkRCMjAwREE4OEQzIC8qIFN5bmNocm9u
b3VzbmVzcy5oICovLAorCQkJCTBGMUZCMzhBMUUxNzNBNjIwMEE5QkU1MCAvKiBTeW5jaHJvbm91
c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuY3BwICovLAorCQkJCTBGMUZCMzhCMUUxNzNB
NjIwMEE5QkU1MCAvKiBTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCAq
LywKKwkJCQkxNDE0NDhDQzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggKi8s
CisJCQkJRkUyQkQ2NkUyNUMwREM4MjAwOTk5RDNCIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3IuY3Bw
ICovLAorCQkJCUZFMjg3RDAxMjUyRkIyRTgwMEQ3MjNGOSAvKiBWZXJpZmllclNsb3RWaXNpdG9y
LmggKi8sCisJCQkJNkJDQ0VDMDMyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0
b3JJbmxpbmVzLmggKi8sCisJCQkJMEY0RDhDNzIxRkM3QTk3MzAwMUQzMkFDIC8qIFZpc2l0Q291
bnRlci5oICovLAorCQkJCTBGOTUyQTlGMURGNzg2MDcwMEUwNkZCRCAvKiBWaXNpdFJhY2VLZXku
Y3BwICovLAorCQkJCTBGOTUyQUEwMURGNzg2MDcwMEUwNkZCRCAvKiBWaXNpdFJhY2VLZXkuaCAq
LywKKwkJCQkxQUNGNzM3NjE3MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi8sCisJCQkJMTQy
RTMxMzMxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCAqLywKKwkJCQkxNEU4NEY5OTE0RUUxQUND
MDBENkQ1RDQgLyogV2Vha0Jsb2NrLmNwcCAqLywKKwkJCQkxNEU4NEY5QTE0RUUxQUNDMDBENkQ1
RDQgLyogV2Vha0Jsb2NrLmggKi8sCisJCQkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdl
YWtIYW5kbGVPd25lci5jcHAgKi8sCisJCQkJMTRGNzI1NjQxNEVFMjY1RTAwQjE2NTJCIC8qIFdl
YWtIYW5kbGVPd25lci5oICovLAorCQkJCTE0RTg0RjlEMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFr
SW1wbC5oICovLAorCQkJCTE0QkU3RDMyMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5o
ICovLAorCQkJCTE0RTg0RjlCMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNwcCAqLywKKwkJ
CQkxNEU4NEY5QzE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5oICovLAorCQkJCTE0MTUwMTMy
MTU0QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5saW5lcy5oICovLAorCQkJCTBGQzgxNTA4MTQw
NDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKKwkJCQkwRkM4MTUw
OTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBoZWFwOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMTQzMkVC
RDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQzIxMUI1NzQxNzZBMjI0RDAwMEUyQTIzIC8qIEFQSUNhbGxiYWNr
RnVuY3Rpb24uaCAqLywKKwkJCQkxNDgyQjc4QTBBNDMwNUFCMDA1MTdDRkMgLyogQVBJQ2FzdC5o
ICovLAorCQkJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5oICovLAorCQkJ
CTFDQUE4QjRBMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0LmggKi8sCisJCQkJMUNBQThC
NEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8sCisJCQkJNTNDM0Q1RTYy
MUVEMUMwNTAwODdGREZDIC8qIEpTQVBJR2xvYmFsT2JqZWN0LmNwcCAqLywKKwkJCQk1M0M0RjY2
QTIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCAqLywKKwkJCQk1M0M0RjY2
QzIxQjFBN0NBMDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QubW0gKi8sCisJCQkJQkMwODk0
RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAqLywKKwkJCQlCQzA4
OTRENjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLywKKwkJCQlDMkNG
MzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8sCisJCQkJQzJD
RjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLywKKwkJCQkx
NDIxMzU5QTBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCAqLywKKwkJCQkxNDI3MTEzODBB
NDYwQkJCMDA4MEVFRUEgLyogSlNCYXNlLmggKi8sCisJCQkJNzk4NzJDNDcyMjFCQkFFRDAwOEM2
OTY5IC8qIEpTQmFzZUludGVybmFsLmggKi8sCisJCQkJMTQwRDE3RDYwRThBRDRBOTAwMENEMTdE
IC8qIEpTQmFzZVByaXZhdGUuaCAqLywKKwkJCQkxNDQwRjhBRDBBNTA4RDIwMDAwNUYwNjEgLyog
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQkxNDQwRjhBQzBBNTA4RDIwMDAwNUYw
NjEgLyogSlNDYWxsYmFja0NvbnN0cnVjdG9yLmggKi8sCisJCQkJMTQ0MEY4OTAwQTUwOEIxMDAw
MDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi8sCisJCQkJMTQ0MEY4OEYwQTUwOEIx
MDAwMDVGMDYxIC8qIEpTQ2FsbGJhY2tGdW5jdGlvbi5oICovLAorCQkJCTE0QUJERjVFMEE0MzdG
RUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNrT2JqZWN0LmNwcCAqLywKKwkJCQkxNEFCREY1RDBBNDM3
RkVGMDBFQ0NBMDEgLyogSlNDYWxsYmFja09iamVjdC5oICovLAorCQkJCUE4RTg5NDMxMENEMDYw
MjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8sCisJCQkJMTQ0MEZD
RTIwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuY3BwICovLAorCQkJCTE0NDBGQ0UxMEE1
MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVmLmggKi8sCisJCQkJODZFM0M2MDcxNjdCQUI4NzAw
NkQ3NjBBIC8qIEpTQ29udGV4dC5oICovLAorCQkJCTg2RTNDNjA4MTY3QkFCODcwMDZENzYwQSAv
KiBKU0NvbnRleHQubW0gKi8sCisJCQkJODZFM0M2MDkxNjdCQUI4NzAwNkQ3NjBBIC8qIEpTQ29u
dGV4dEludGVybmFsLmggKi8sCisJCQkJQTU4QzAyNDExOEU0QTQxQTAwMDMyQkM1IC8qIEpTQ29u
dGV4dFByaXZhdGUuaCAqLywKKwkJCQkxNEJENUEyOTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250
ZXh0UmVmLmNwcCAqLywKKwkJCQkxNEJENUEyQTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0
UmVmLmggKi8sCisJCQkJQTVFQTcwRUQxOUY1QjVDNDAwOThGNUVDIC8qIEpTQ29udGV4dFJlZklu
c3BlY3RvclN1cHBvcnQuaCAqLywKKwkJCQlBNUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlND
b250ZXh0UmVmSW50ZXJuYWwuaCAqLywKKwkJCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyog
SlNDb250ZXh0UmVmUHJpdmF0ZS5oICovLAorCQkJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovLAorCQkJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLywKKwkJCQk4NkUzQzYwQTE2N0JBQjg3MDA2RDc2
MEEgLyogSlNFeHBvcnQuaCAqLywKKwkJCQkwRjBDQUVGOTFFQzREQTYyMDA5NzBEMTIgLyogSlNI
ZWFwRmluYWxpemVyUHJpdmF0ZS5jcHAgKi8sCisJCQkJMEYwQ0FFRkExRUM0REE2MjAwOTcwRDEy
IC8qIEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCAqLywKKwkJCQkxNDg2QThCRTI0QUJFRDNCMDA3
MzkyMkQgLyogSlNMb2NrUmVmLmNwcCAqLywKKwkJCQkxNDg2QThCRjI0QUJFRDNDMDA3MzkyMkQg
LyogSlNMb2NrUmVmUHJpdmF0ZS5oICovLAorCQkJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAv
KiBKU01hbmFnZWRWYWx1ZS5oICovLAorCQkJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSAqLywKKwkJCQkyQTRCQjdGMjE4QTQxMTc5MDA4QTBGQ0QgLyogSlNN
YW5hZ2VkVmFsdWVJbnRlcm5hbC5oICovLAorCQkJCTBGMEIyODY3MUVCOEU2Q0QwMDBFQjVEMiAv
KiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgKi8sCisJCQkJMEYwQjI4NjgxRUI4RTZD
RDAwMEVCNUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmggKi8sCisJCQkJMTQ4MkI3
RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCAqLywKKwkJCQkxNDgyQjdFMTBB
NDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuaCAqLywKKwkJCQlBNzlFREIwODExNTMxQ0Q2
MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRlLmggKi8sCisJCQkJQTU1MkMzN0QxQUREQjhG
RTAwMTM5NzI2IC8qIEpTUmVtb3RlSW5zcGVjdG9yLmNwcCAqLywKKwkJCQlBNTUyQzM3RTFBRERC
OEZFMDAxMzk3MjYgLyogSlNSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQk5NUMxOEQzRTBDOTBF
N0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIuaCAqLywKKwkJCQk1M0VFMDFCNTIxOEY2OTBGMDBB
RDFGOEQgLyogSlNTY3JpcHQuaCAqLywKKwkJCQk1M0VFMDFCNDIxOEY2OTBFMDBBRDFGOEQgLyog
SlNTY3JpcHQubW0gKi8sCisJCQkJNTNFRTAxQjcyMThGN0VGRjAwQUQxRjhEIC8qIEpTU2NyaXB0
SW50ZXJuYWwuaCAqLywKKwkJCQlBN0MwQzRBQTE2N0MwOENEMDAxNzAxMUQgLyogSlNTY3JpcHRS
ZWYuY3BwICovLAorCQkJCUE3QzBDNEFCMTY3QzA4Q0QwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlBy
aXZhdGUuaCAqLywKKwkJCQkxNEQwMUE3NjIxRkIzNTAzMDBCQzU0RTkgLyogSlNTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oICovLAorCQkJCTE0RDAxQTc1MjFGQjM1MDMwMEJDNTRFOSAvKiBKU1Njcmlw
dFNvdXJjZVByb3ZpZGVyLm1tICovLAorCQkJCTE0ODJCNzRDMEE0MzAzMjgwMDUxN0NGQyAvKiBK
U1N0cmluZ1JlZi5jcHAgKi8sCisJCQkJMTQ4MkI3NEIwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3Ry
aW5nUmVmLmggKi8sCisJCQkJMTQ2QUFCMzcwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVm
Q0YuY3BwICovLAorCQkJCTE0NkFBQjJBMEI2NkE4NDkwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNG
LmggKi8sCisJCQkJMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0
ZS5oICovLAorCQkJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3Bw
ICovLAorCQkJCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLywK
KwkJCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1ZS5oICovLAorCQkJCTg2RTND
NjBEMTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLm1tICovLAorCQkJCTg2RTNDNjBFMTY3QkFC
ODcwMDZENzYwQSAvKiBKU1ZhbHVlSW50ZXJuYWwuaCAqLywKKwkJCQk1M0UxRjhGNzIxNTQ3MTQ5
MDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCAqLywKKwkJCQkxNEJENUEyQjBBM0U5MUY2MDBC
QUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi8sCisJCQkJMTQ4MkI2RUEwQTQzMDBCMzAwNTE3Q0ZD
IC8qIEpTVmFsdWVSZWYuaCAqLywKKwkJCQk4NkUzQzYwRjE2N0JBQjg3MDA2RDc2MEEgLyogSlNW
aXJ0dWFsTWFjaGluZS5oICovLAorCQkJCTg2RTNDNjEwMTY3QkFCODcwMDZENzYwQSAvKiBKU1Zp
cnR1YWxNYWNoaW5lLm1tICovLAorCQkJCTg2RTNDNjExMTY3QkFCODcwMDZENzYwQSAvKiBKU1Zp
cnR1YWxNYWNoaW5lSW50ZXJuYWwuaCAqLywKKwkJCQk3OTVBQzYxNzIwQTIzNTRCMDA1MkM3NkMg
LyogSlNWaXJ0dWFsTWFjaGluZVByaXZhdGUuaCAqLywKKwkJCQlBNzQ4MkUzNzExNkE2OTdCMDAz
QjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCAqLywKKwkJCQlBNzQ4MkI3QTEx
NjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgKi8sCisJCQkJ
QTc0ODJCNzkxMTY2Q0RFQTAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCAq
LywKKwkJCQkwRjBCMjg2OTFFQjhFNkNEMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5jcHAgKi8s
CisJCQkJMEYwQjI4NkExRUI4RTZDRDAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCAqLywKKwkJ
CQk3QTk3NzRBNjIwNkI4MjhDMDA4RDAzRDAgLyogSlNXZWFrVmFsdWUuY3BwICovLAorCQkJCTdB
OTc3NEE3MjA2QjgyQzkwMDhEMDNEMCAvKiBKU1dlYWtWYWx1ZS5oICovLAorCQkJCTg2RTNDNjBD
MTY3QkFCODcwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCAqLywKKwkJCQk4NkUzQzYwQjE2N0JB
Qjg3MDA2RDc2MEEgLyogSlNXcmFwcGVyTWFwLm1tICovLAorCQkJCUUzRDM1MTVFMjQxQjg5Q0Yw
MDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuY3BwICovLAorCQkJCUUzRDM1MTVEMjQx
Qjg5Q0UwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLywKKwkJCQk4NkYzRUVC
OTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCAqLywKKwkJCQk4NkYz
RUVCQTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gKi8sCisJCQkJ
ODZGM0VFQjYxNjg1NUE1QjAwNzdCOTJBIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8sCisJCQkJ
RTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKKwkJCQlF
MTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKKwkJCQk1REUz
RDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCisJCQkpOwor
CQkJcGF0aCA9IEFQSTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCQl0YWJXaWR0aCA9
IDQ7CisJCQl1c2VzVGFicyA9IDA7CisJCX07CisJCTE0NDAwNTE3MEE1MzFDQjUwMDA1RjA2MSAv
KiBtaW5pZG9tICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkxNDQwRjY0MjBBNEY4QjZBMDAwNUYwNjEgLyogSlNOb2RlLmMgKi8sCisJCQkJMTQ0MEY2NDEw
QTRGOEI2QTAwMDVGMDYxIC8qIEpTTm9kZS5oICovLAorCQkJCTE0NDAwNzU2MEE1MzcwRDIwMDA1
RjA2MSAvKiBKU05vZGVMaXN0LmMgKi8sCisJCQkJMTQ0MDA3NTUwQTUzNzBEMjAwMDVGMDYxIC8q
IEpTTm9kZUxpc3QuaCAqLywKKwkJCQkxNDEyMTEwMjBBNDg3ODA5MDA0ODAyNTUgLyogbWluaWRv
bS5jICovLAorCQkJCTE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovLAor
CQkJCTE0NDAwNTIwMEE1MzFEM0IwMDA1RjA2MSAvKiBOb2RlLmMgKi8sCisJCQkJMTQ0MDA1MUYw
QTUzMUQzQjAwMDVGMDYxIC8qIE5vZGUuaCAqLywKKwkJCQkxNDQwMDc0OTBBNTM2Q0MyMDAwNUYw
NjEgLyogTm9kZUxpc3QuYyAqLywKKwkJCQkxNDQwMDc0ODBBNTM2Q0MyMDAwNUYwNjEgLyogTm9k
ZUxpc3QuaCAqLywKKwkJCSk7CisJCQluYW1lID0gbWluaWRvbTsKKwkJCXBhdGggPSBBUEk7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxNDgwREI5QTBEREMyMjMxMDAzQ0ZE
RjIgLyogZGVidWdnZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBCcmVha3BvaW50LmNwcCAqLywKKwkJ
CQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovLAorCQkJCUY2OTJB
ODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAgKi8sCisJCQkJRjY5MkE4NTkwMjU1
NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCisJCQkJMTQ5NTU5RUQwRERDRERGNzAwNjQ4
MDg3IC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmNwcCAqLywKKwkJCQkxNDgwREI5QjBEREMyMjdGMDAz
Q0ZERjIgLyogRGVidWdnZXJDYWxsRnJhbWUuaCAqLywKKwkJCQk2QUQyQ0I0QzE5QjkxNDAxMDAw
NjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oICovLAorCQkJCUE1RkM4NEIwMUQxRERBQzgw
MDZCNUM0NiAvKiBEZWJ1Z2dlckxvY2F0aW9uLmNwcCAqLywKKwkJCQlBNUZDODRCMTFEMUREQUM4
MDA2QjVDNDYgLyogRGVidWdnZXJMb2NhdGlvbi5oICovLAorCQkJCUE1QTFBMDkzMUQ4Q0IzMzcw
MDRDMkVCOCAvKiBEZWJ1Z2dlclBhcnNlRGF0YS5jcHAgKi8sCisJCQkJQTVBMUEwOTIxRDhDQjEy
RjAwNEMyRUI4IC8qIERlYnVnZ2VyUGFyc2VEYXRhLmggKi8sCisJCQkJRkVBMDg2MUYxODJCN0Ew
NDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovLAorCQkJCTBGMkQ0RERCMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmNwcCAqLywKKwkJCQkwRjJENEREQzE5ODMyRDM0
MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oICovLAorCQkJCUE1NTE2NUQ0MUJERjEzNEQwMDNC
NzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBkZWJ1
Z2dlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDOTA1MTNFMEJBOUU4
ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMUM5MDUxNDUwQkE5RThBNzAwODFFOUQwIC8qIEJhc2UueGNj
b25maWcgKi8sCisJCQkJMUM5MDUxNDQwQkE5RThBNzAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54
Y2NvbmZpZyAqLywKKwkJCQkxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENv
cmUueGNjb25maWcgKi8sCisJCQkJNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2Nv
bmZpZyAqLywKKwkJCQlBMUI4OUI4ODIyMUUwMDJBMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2Nv
bmZpZyAqLywKKwkJCQlFM0Q2RjZFRjI1RDc5MUIzMDBDMjBFQjQgLyogVGVzdEFQSS54Y2NvbmZp
ZyAqLywKKwkJCQlCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNj
b25maWcgKi8sCisJCQkJMUM5MDUxNDIwQkE5RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25m
aWcgKi8sCisJCQkJMzcxMTlBNzcyMENDQjVEQzAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRp
dGlvbmFscy54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQkJdGFiV2lkdGggPSA0OworCQkJdXNlc1RhYnMg
PSAwOworCQl9OworCQk1MzRFMDM1MjFFNTNCQkE5MDAyMTNGNjQgLyogYWNjZXNzQ2FzZSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTM0RTAzNEYxRTRE
OTVFRDAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuY3BwICovLAorCQkJCTUzNEUwMzREMUU0RDRCMTYw
MDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmggKi8sCisJCQkJNTNCMEJFMzMxRTU2MUFDOTAwQThGQzI5
IC8qIEdldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwICovLAorCQkJCTUzNEUwMzU3MUU1M0JGMkYw
MDIxM0Y2NCAvKiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggKi8sCisJCQkJMEY0OUU5QTcyMEFC
NENGQjAwMUNBMEFBIC8qIEluc3RhbmNlT2ZBY2Nlc3NDYXNlLmNwcCAqLywKKwkJCQkwRjQ5RTlB
ODIwQUI0Q0ZCMDAxQ0EwQUEgLyogSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCAqLywKKwkJCQk1M0Iw
QkUzNzFFNTYxQjI0MDBBOEZDMjkgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5jcHAgKi8s
CisJCQkJNTM0RTAzNTMxRTUzQkQyOTAwMjEzRjY0IC8qIEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2UuaCAqLywKKwkJCQk1M0IwQkUzNTFFNTYxQjA5MDBBOEZDMjkgLyogUHJveHlhYmxlQWNjZXNz
Q2FzZS5jcHAgKi8sCisJCQkJNTM0RTAzNTUxRTUzQkVERTAwMjEzRjY0IC8qIFByb3h5YWJsZUFj
Y2Vzc0Nhc2UuaCAqLywKKwkJCSk7CisJCQluYW1lID0gYWNjZXNzQ2FzZTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUzNUMyNDY1MUY3ODkzODkwMDZFQzQwRSAvKiBpbnNw
ZWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1
RUE3MTBEMTlGNkRGODEwMDk4RjVFQyAvKiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaCAqLywKKwkJCQlBNTMyNDM5NjE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzICovLAorCQkJCUE1MzI0MzgxMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICovLAorCQkJCUE1MzI0MzgyMTg1NjgzMTcwMDJF
RDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywKKwkJCQlBNTMyNDM4MzE4
NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgKi8sCisJ
CQkJQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hl
cnMuaCAqLywKKwkJCQlBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmNwcCAqLywKKwkJCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVj
dG9yUHJvdG9jb2xPYmplY3RzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGluc3BlY3RvcjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUzNUMyNDY3MUY3ODk0QTIwMDZFQzQw
RSAvKiB5YXJyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk2NUE5NDYxNDFDOEU5RjZGMDBBNzIwOUEgLyogWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGUuY3Bw
ICovLAorCQkJKTsKKwkJCXBhdGggPSB5YXJyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJNTM2QjMwODYxRjcxQzUzODAwMzdGQzMzIC8qIHVuaWZpZWQtc291cmNlcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTM2QjMxOTgxRjcz
NUU1QzAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tICovLAorCQkJCTUzNkIzMERBMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMS5jcHAgKi8sCisJCQkJNTM2QjMxOTYxRjcz
NUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyLW1tLm1tICovLAorCQkJCTUzNkIzMEQyMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgKi8sCisJCQkJNTMwQTY2QjExRkEz
RTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tICovLAorCQkJCTUzNkIzMEQzMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMy5jcHAgKi8sCisJCQkJNTMwQTY2QjgxRkEz
RTc3RTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U0LW1tLm1tICovLAorCQkJCTUzNkIzMEUxMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNC5jcHAgKi8sCisJCQkJNTMwQTY2QjUxRkEz
RTc3RDAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2U1LW1tLm1tICovLAorCQkJCTUzNkIzMEUyMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAgKi8sCisJCQkJNTM2QjMwRUExRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2LmNwcCAqLywKKwkJCQk1MzZCMzBFOTFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcuY3BwICovLAorCQkJCTUzNkIzMEI3MUY3MUM1
MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOC5jcHAgKi8sCisJCQkJNTM2QjMwQjgxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5LmNwcCAqLywKKwkJCQk1MzZCMzEwMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwLmNwcCAqLywKKwkJCQk1MzZCMzBGRTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExLmNwcCAqLywKKwkJCQk1MzZCMzEwNzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyLmNwcCAqLywKKwkJCQk1MzZCMzEwODFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEzLmNwcCAqLywKKwkJCQk1MzZCMzBGNzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE0LmNwcCAqLywKKwkJCQk1MzZCMzBGODFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE1LmNwcCAqLywKKwkJCQk1MzZCMzBGMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE2LmNwcCAqLywKKwkJCQk1MzZCMzBGMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE3LmNwcCAqLywKKwkJCQk1MzZCMzA5QzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE4LmNwcCAqLywKKwkJCQk1MzZCMzA5RDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE5LmNwcCAqLywKKwkJCQk1MzZCMzA5NTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIwLmNwcCAqLywKKwkJCQk1MzZCMzA5NDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIxLmNwcCAqLywKKwkJCQk1MzZCMzA4QTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIyLmNwcCAqLywKKwkJCQk1MzZCMzA4RDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIzLmNwcCAqLywKKwkJCQk1MzZCMzA5QjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI0LmNwcCAqLywKKwkJCQk1MzZCMzA5RTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI1LmNwcCAqLywKKwkJCQk1MzZCMzBBNjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI2LmNwcCAqLywKKwkJCQk1MzZCMzBBMzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI3LmNwcCAqLywKKwkJCQk1MzZCMzBGNjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI4LmNwcCAqLywKKwkJCQk1MzZCMzBGOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI5LmNwcCAqLywKKwkJCQk1MzZCMzA5QTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMwLmNwcCAqLywKKwkJCQk1MzZCMzA5RjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMxLmNwcCAqLywKKwkJCQk1MzZCMzBBNTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMyLmNwcCAqLywKKwkJCQk1MzZCMzBBNDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMzLmNwcCAqLywKKwkJCQk1MzZCMzA5NjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM0LmNwcCAqLywKKwkJCQk1MzZCMzA5MzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM1LmNwcCAqLywKKwkJCQk1MzZCMzA4QjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM2LmNwcCAqLywKKwkJCQk1MzZCMzA4QzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM3LmNwcCAqLywKKwkJCQk1MzZCMzEwMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM4LmNwcCAqLywKKwkJCQk1MzZCMzBGRjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM5LmNwcCAqLywKKwkJCQk1MzZCMzBBRjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQwLmNwcCAqLywKKwkJCQk1MzZCMzBBQzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQxLmNwcCAqLywKKwkJCQk1MzZCMzBCNjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQyLmNwcCAqLywKKwkJCQk1MzZCMzBCOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQzLmNwcCAqLywKKwkJCQk1MzZCMzBDNzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ0LmNwcCAqLywKKwkJCQk1MzZCMzBDQzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ1LmNwcCAqLywKKwkJCQk1MzZCMzBDMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ2LmNwcCAqLywKKwkJCQk1MzZCMzBDMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ3LmNwcCAqLywKKwkJCQk1MzZCMzBDRjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ4LmNwcCAqLywKKwkJCQk1MzZCMzBENjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ5LmNwcCAqLywKKwkJCQk1MzZCMzBDODFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUwLmNwcCAqLywKKwkJCQk1MzZCMzBDQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUxLmNwcCAqLywKKwkJCQk1MzZCMzBDMjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUyLmNwcCAqLywKKwkJCQk1MzZCMzBCRjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUzLmNwcCAqLywKKwkJCQk1MzZCMzBBRTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU0LmNwcCAqLywKKwkJCQk1MzZCMzBBRDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU1LmNwcCAqLywKKwkJCQk1MzZCMzBCNTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU2LmNwcCAqLywKKwkJCQk1MzZCMzBCQTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU3LmNwcCAqLywKKwkJCQk1MzZCMzBFQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU4LmNwcCAqLywKKwkJCQk1MzZCMzBFODFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU5LmNwcCAqLywKKwkJCQk1MzZCMzBEMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYwLmNwcCAqLywKKwkJCQk1MzZCMzBENTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYxLmNwcCAqLywKKwkJCQk1MzZCMzBEQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYyLmNwcCAqLywKKwkJCQk1MzZCMzBEOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYzLmNwcCAqLywKKwkJCQk1MzZCMzBFRDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY0LmNwcCAqLywKKwkJCQk1MzZCMzBFNjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY1LmNwcCAqLywKKwkJCQk1MzZCMzBFMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY2LmNwcCAqLywKKwkJCQk1MzZCMzBFMzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY3LmNwcCAqLywKKwkJCQk1MzZCMzBCMDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY4LmNwcCAqLywKKwkJCQk1MzZCMzBBQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY5LmNwcCAqLywKKwkJCQk1MzZCMzBFQzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcwLmNwcCAqLywKKwkJCQk1MzZCMzBFNzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcxLmNwcCAqLywKKwkJCQk1MzZCMzBERjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcyLmNwcCAqLywKKwkJCQk1MzZCMzBFNDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTczLmNwcCAqLywKKwkJCQk1MzZCMzBEMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc0LmNwcCAqLywKKwkJCQk1MzZCMzBENDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc1LmNwcCAqLywKKwkJCQk1MzZCMzBEQzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc2LmNwcCAqLywKKwkJCQk1MzZCMzBEODFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc3LmNwcCAqLywKKwkJCQk1MzZCMzBDOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc4LmNwcCAqLywKKwkJCQk1MzZCMzBDQTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc5LmNwcCAqLywKKwkJCQk1MzZCMzBCQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgwLmNwcCAqLywKKwkJCQk1MzZCMzBCNDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgxLmNwcCAqLywKKwkJCQk1MzZCMzBBOTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgyLmNwcCAqLywKKwkJCQk1MzZCMzBCMjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgzLmNwcCAqLywKKwkJCQk1MzZCMzBCRTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg0LmNwcCAqLywKKwkJCQk1MzZCMzBDMzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg1LmNwcCAqLywKKwkJCQk1MzZCMzBDRTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg2LmNwcCAqLywKKwkJCQk1MzZCMzBDNTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg3LmNwcCAqLywKKwkJCQk1MzZCMzBENzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg4LmNwcCAqLywKKwkJCQk1MzZCMzBERDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg5LmNwcCAqLywKKwkJCQk1MzZCMzBCRDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkwLmNwcCAqLywKKwkJCQk1MzZCMzBDNDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkxLmNwcCAqLywKKwkJCQk1MzZCMzBDRDFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkyLmNwcCAqLywKKwkJCQk1MzZCMzBDNjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkzLmNwcCAqLywKKwkJCQk1MzZCMzBCQzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk0LmNwcCAqLywKKwkJCQk1MzZCMzBCMzFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk1LmNwcCAqLywKKwkJCQk1MzZCMzBBQTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk2LmNwcCAqLywKKwkJCQk1MzZCMzBCMTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk3LmNwcCAqLywKKwkJCQk1MzZCMzBFNTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCAqLywKKwkJCQk1MzZCMzBERTFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk5LmNwcCAqLywKKwkJCQk1MzZCMzEwQjFGNzFDNTM4
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMC5jcHAgKi8sCisJCQkJNTM2QjMxMDQxRjcxQzUz
ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDEuY3BwICovLAorCQkJCTUzNkIzMEZEMUY3MUM1
MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTAyLmNwcCAqLywKKwkJCQk1MzZCMzEwMjFGNzFD
NTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwMy5jcHAgKi8sCisJCQkJNTM2QjMwRUUxRjcx
QzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDQuY3BwICovLAorCQkJCTUzNkIzMEYzMUY3
MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA1LmNwcCAqLywKKwkJCQk1MzZCMzBGQTFG
NzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwNi5jcHAgKi8sCisJCQkJNTM2QjMwRjUx
RjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3BwICovLAorCQkJCTUzNkIzMEEy
MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTA4LmNwcCAqLywKKwkJCQk1MzZCMzBB
NzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEwOS5jcHAgKi8sCisJCQkJNTM2QjMw
RUYxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTAuY3BwICovLAorCQkJCTUzNkIz
MEYyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTExLmNwcCAqLywKKwkJCQk1MzZC
MzBGQjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExMi5jcHAgKi8sCisJCQkJNTM2
QjMwRjQxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTMuY3BwICovLAorCQkJCTUz
NkIzMTBBMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTE0LmNwcCAqLywKKwkJCQk1
MzZCMzEwNTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExNS5jcHAgKi8sCisJCQkJ
NTM2QjMwRkMxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwICovLAorCQkJ
CTUzNkIzMTAzMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTE3LmNwcCAqLywKKwkJ
CQk1MzZCMzA5MDFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExOC5jcHAgKi8sCisJ
CQkJNTM2QjMwODcxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTkuY3BwICovLAor
CQkJCTUzNkIzMEExMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTIwLmNwcCAqLywK
KwkJCQk1MzZCMzBBODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyMS5jcHAgKi8s
CisJCQkJNTM2QjMwQTAxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjIuY3BwICov
LAorCQkJCTUzNkIzMDk5MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTIzLmNwcCAq
LywKKwkJCQk1MzZCMzA4RjFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNC5jcHAg
Ki8sCisJCQkJNTM2QjMwODgxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjUuY3Bw
ICovLAorCQkJCTUzNkIzMDkyMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTI2LmNw
cCAqLywKKwkJCQk1MzZCMzA5NzFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEyNy5j
cHAgKi8sCisJCQkJNTM2QjMxMDkxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjgu
Y3BwICovLAorCQkJCTUzNkIzMTA2MUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTI5
LmNwcCAqLywKKwkJCQk1MzZCMzA4RTFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTEz
MC5jcHAgKi8sCisJCQkJNTM2QjMwODkxRjcxQzUzODAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Ux
MzEuY3BwICovLAorCQkJCTUzNkIzMDkxMUY3MUM1MzgwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
MTMyLmNwcCAqLywKKwkJCQk1MzZCMzA5ODFGNzFDNTM4MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTEzMy5jcHAgKi8sCisJCQkJNTM2QjMxOTcxRjczNUU1QjAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMzQuY3BwICovLAorCQkJCTUzNkIzMTk5MUY3MzVFNUQwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlMTM1LmNwcCAqLywKKwkJCQk1MzVDMjQ2QjFGN0ExNzc3MDA2RUM0MEUgLyogVW5pZmllZFNv
dXJjZTEzNi5jcHAgKi8sCisJCQkJNTMwQTY2QjIxRkEzRTc3QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxMzcuY3BwICovLAorCQkJCTUzMEE2NkI0MUZBM0U3N0MwMDI2QTU0NSAvKiBVbmlmaWVk
U291cmNlMTM4LmNwcCAqLywKKwkJCQk1MzBBNjZBRTFGQTNFNzc4MDAyNkE1NDUgLyogVW5pZmll
ZFNvdXJjZTEzOS5jcHAgKi8sCisJCQkJNTMwQTY2QjMxRkEzRTc3QzAwMjZBNTQ1IC8qIFVuaWZp
ZWRTb3VyY2UxNDAuY3BwICovLAorCQkJCTUzMEE2NkFGMUZBM0U3NzkwMDI2QTU0NSAvKiBVbmlm
aWVkU291cmNlMTQxLmNwcCAqLywKKwkJCQk1MzBBNjZCNjFGQTNFNzdEMDAyNkE1NDUgLyogVW5p
ZmllZFNvdXJjZTE0Mi5jcHAgKi8sCisJCQkJNTMwQTY2QjcxRkEzRTc3RDAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2UxNDMuY3BwICovLAorCQkJCTUzMEE2NkFEMUZBM0U3NzcwMDI2QTU0NSAvKiBV
bmlmaWVkU291cmNlMTQ0LmNwcCAqLywKKwkJCQk1MzBBNjZCMDFGQTNFNzdBMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTE0NS5jcHAgKi8sCisJCQkJNTM4RjE1RjEyNjhGQkM3QjAwRDYwMUM0IC8q
IFVuaWZpZWRTb3VyY2UxNDYuY3BwICovLAorCQkJCTUzOEYxNUU0MjY4RkJCQjUwMEQ2MDFDNCAv
KiBVbmlmaWVkU291cmNlMTQ3LmNwcCAqLywKKwkJCQk1MzhGMTVERDI2OEZCQkIzMDBENjAxQzQg
LyogVW5pZmllZFNvdXJjZTE0OC5jcHAgKi8sCisJCQkJNTM4RjE1RTYyNjhGQkJCNjAwRDYwMUM0
IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwICovLAorCQkJCTUzOEYxNUUxMjY4RkJCQjQwMEQ2MDFD
NCAvKiBVbmlmaWVkU291cmNlMTUwLmNwcCAqLywKKwkJCQk1MzhGMTVERTI2OEZCQkIzMDBENjAx
QzQgLyogVW5pZmllZFNvdXJjZTE1MS5jcHAgKi8sCisJCQkJNTM4RjE1REYyNjhGQkJCMzAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNTIuY3BwICovLAorCQkJCTUzOEYxNUUzMjY4RkJCQjUwMEQ2
MDFDNCAvKiBVbmlmaWVkU291cmNlMTUzLmNwcCAqLywKKwkJCQk1MzhGMTVFMDI2OEZCQkI0MDBE
NjAxQzQgLyogVW5pZmllZFNvdXJjZTE1NC5jcHAgKi8sCisJCQkJNTM4RjE1RTUyNjhGQkJCNTAw
RDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSAidW5p
ZmllZC1zb3VyY2VzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTUzQzNE
NUUzMjFFQ0U2OEUwMDg3RkRGQyAvKiB0ZXN0YXBpU2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTNDM0Q1RTQyMUVDRTZDRTAwODdGREZDIC8q
IGJhc2ljLmpzICovLAorCQkJCTUyRDEzMDhGMjIxQ0UwM0EwMDlDODM2QyAvKiBmb28uanMgKi8s
CisJCQkpOworCQkJbmFtZSA9IHRlc3RhcGlTY3JpcHRzOworCQkJcGF0aCA9IEFQSS90ZXN0cy90
ZXN0YXBpU2NyaXB0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTY1MEZE
RjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUzNUMyNDY1MUY3ODkzODkwMDZFQzQwRSAv
KiBpbnNwZWN0b3IgKi8sCisJCQkJNTM2QjMwODYxRjcxQzUzODAwMzdGQzMzIC8qIHVuaWZpZWQt
c291cmNlcyAqLywKKwkJCQk1MzVDMjQ2NzFGNzg5NEEyMDA2RUM0MEUgLyogeWFyciAqLywKKwkJ
CQkwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyogQWlyT3Bjb2RlLmggKi8sCisJCQkJMEY2MTgz
MzQxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oICovLAorCQkJCTBGNjE4
MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5oICovLAorCQkJCTk5NkI3MzE1
MUJEQTA1QUEwMDMzMUI4NCAvKiBBcnJheUNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUUzODkz
QTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0
LmggKi8sCisJCQkJOEIzQkY1RTMxRTNEMzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJv
dG90eXBlLmx1dC5oICovLAorCQkJCTk5NkI3MzA3MUJEOUZBMkMwMDMzMUI4NCAvKiBCb29sZWFu
UHJvdG90eXBlLmx1dC5oICovLAorCQkJCTY1MTRGMjE3MThCM0UxNjcwMDk4RkY4QiAvKiBCeXRl
Y29kZXMuaCAqLywKKwkJCQk1MzY5NkU1NzIwQTNBNzAyMDBEN0UwMUUgLyogQnl0ZWNvZGVTdHJ1
Y3RzLmggKi8sCisJCQkJQTUzMjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIENvbWJpbmVkRG9tYWlu
cy5qc29uICovLAorCQkJCTk5NkI3MzA4MUJEOUZBMkMwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0
b3IubHV0LmggKi8sCisJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5
cGUubHV0LmggKi8sCisJCQkJOTk2QjczMDkxQkQ5RkEyQzAwMzMxQjg0IC8qIEVycm9yUHJvdG90
eXBlLmx1dC5oICovLAorCQkJCTcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFFMiAvKiBHZW5lcmF0b3JQ
cm90b3R5cGUubHV0LmggKi8sCisJCQkJNjUxNEYyMTgxOEIzRTE2NzAwOThGRjhCIC8qIEluaXRC
eXRlY29kZXMuYXNtICovLAorCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oICovLAorCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEw
MjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUExNTg3RDczMUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJ
CQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oICovLAorCQkJCUUzNjVGMzM5MjRBQTYyMTIwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTM2NUYzMzgyNEFBNjIxMTAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQTEyNTg0NkMxQjQ1QTM2
MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlB
MTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQu
aCAqLywKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
LAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAorCQkJ
CTk5NkI3MzBBMUJEOUZBMkMwMDMzMUI4NCAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oICov
LAorCQkJCTk5NkI3MzBCMUJEOUZBMkMwMDMzMUI4NCAvKiBKU0dsb2JhbE9iamVjdC5sdXQuaCAq
LywKKwkJCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQk5OTZCNzMwQzFCRDlGQTJDMDAzMzFCODQgLyogSlNNb2R1
bGVMb2FkZXIubHV0LmggKi8sCisJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05P
YmplY3QubHV0LmggKi8sCisJCQkJN0MxODRFMjQxN0JGRkEzNjAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCTdDMTg0RTI1MTdCRkZBMzYwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQTdDMjI1Q0QxMzk5ODQ5QzAwRkYxNjYy
IC8qIEtleXdvcmRMb29rdXAuaCAqLywKKwkJCQlCQzE4QzUyRDBFMTZGQ0UxMDBCMzQ0NjAgLyog
TGV4ZXIubHV0LmggKi8sCisJCQkJNzBERTlBMDgxQkU3RDY3MDAwNUQ4OUQ5IC8qIExMSW50QXNz
ZW1ibHkuaCAqLywKKwkJCQk3MDM1NTg3RTFDNDE4NDU4MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBl
Lmx1dC5oICovLAorCQkJCUJDMjY4MEU2MEUxNkQ1MjMwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1
Y3Rvci5sdXQuaCAqLywKKwkJCQk5OTZCNzMwRDFCRDlGQTJDMDAzMzFCODQgLyogTnVtYmVyUHJv
dG90eXBlLmx1dC5oICovLAorCQkJCTk5NkI3MzBFMUJEOUZBMkMwMDMzMUI4NCAvKiBPYmplY3RD
b25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQk5OTZCNzMwRjFCRDlGQTJDMDAzMzFCODQgLyogUmVm
bGVjdE9iamVjdC5sdXQuaCAqLywKKwkJCQlCQ0QyMDJENTBFMTcwNzA4MDAyQzdFODIgLyogUmVn
RXhwQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8q
IFJlZ0V4cEppdFRhYmxlcy5oICovLAorCQkJCTcwMzU1ODdGMUM0MTg0NTgwMDRCRDdCRiAvKiBT
ZXRQcm90b3R5cGUubHV0LmggKi8sCisJCQkJOTk2QjczMTExQkQ5RkEyQzAwMzMxQjg0IC8qIFN0
cmluZ0NvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCTk5NkI3MzEzMUJEOUZBMkMwMDMzMUI4NCAv
KiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQk5OTZCNzMxNDFCRDlGQTJDMDAzMzFC
ODQgLyogU3ltYm9sUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUUzQzQ2MzA1MjZEQjVERTkwMDg5
NjMzNiAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJRTNDNDYz
MDYyNkRCNURFOTAwODk2MzM2IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggKi8s
CisJCQkJRjZENjdENDUyNkY5MTMwQTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVj
dG9yLmx1dC5oICovLAorCQkJCUY2RDY3RDQ2MjZGOTEzMEIwMDZFMDM0OSAvKiBUZW1wb3JhbElu
c3RhbnRQcm90b3R5cGUubHV0LmggKi8sCisJCQkJRjZGMTUwMjAyNjkzRDQ1MDAwNEI5OEVGIC8q
IFRlbXBvcmFsT2JqZWN0Lmx1dC5oICovLAorCQkJCTUzM0IxNURFMURDN0Y0NjMwMDRENTAwQSAv
KiBXYXNtT3BzLmggKi8sCisJCQkJQUQyRkNDMEExREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMEIxREI1OUM1
OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oICovLAor
CQkJCUFEMkZDQzBDMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkNDMEQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQUQyRkNDMEUxREI1OUM1OTAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQUQyRkND
MEYxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oICov
LAorCQkJCUFEMkZDQzEwMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmx1dC5oICovLAorCQkJCUFEMkZDQzExMURCNTlDNTkwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxMjFEQjU5QzU5MDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlB
RDJGQ0MxMzFEQjU5QzU5MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUubHV0LmggKi8sCisJCQkJQUQyRkNDMTQxREI1OUM1OTAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
VGFibGVDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBRDJGQ0MxNTFEQjU5QzU5MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CisJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmU7CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQkJdGFiV2lkdGggPSA0
OworCQkJdXNlc1RhYnMgPSAwOworCQl9OworCQk2NTJBM0ExQTE2NTFBOTI0MDBBODBBRkUgLyog
QVJNNjQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTY1
MkEzQTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmNwcCAqLywKKwkJCQk2NTJBM0Ey
MzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBB
Uk02NDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTc5MjgxQzAwMjBCNjJC
QkQwMDJFMkE2MCAvKiB0ZXN0bWVtICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk3OTU0QkUwQTIwQjYyRDYzMDA5QkM4M0EgLyogdGVzdG1lbS5tbSAqLywK
KwkJCSk7CisJCQluYW1lID0gdGVzdG1lbTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTkyRjU2QjMxRTRFODQ3RDAwMzU5NTNC
IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tICovLAorCQkJCTk5MkY1NkIwMUU0
RTg0NzkwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSAqLywKKwkJCQk5OTJGNTZC
MTFFNEU4NDc5MDAzNTk1M0IgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5oICovLAor
CQkJCTk5MkY1NkIyMUU0RTg0NzkwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBRDJGQ0I4QTFEQjU4NDAw
MDBCM0U3MzYgLyoganMgKi8sCisJCQkJNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21B
aXJJUkdlbmVyYXRvci5jcHAgKi8sCisJCQkJNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdh
c21BaXJJUkdlbmVyYXRvci5oICovLAorCQkJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBX
YXNtQjNJUkdlbmVyYXRvci5jcHAgKi8sCisJCQkJNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8q
IFdhc21CM0lSR2VuZXJhdG9yLmggKi8sCisJCQkJNTNDQTczMDcxRUE1MzNEODAwNzYwNDlEIC8q
IFdhc21CQlFQbGFuLmNwcCAqLywKKwkJCQk1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2Fz
bUJCUVBsYW4uaCAqLywKKwkJCQlBRDRCMURGNzFERjI0NEQ3MDA3MUFFMzIgLyogV2FzbUJpbmRp
bmcuY3BwICovLAorCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5o
ICovLAorCQkJCTUyNUMwREQ3MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmNwcCAqLywK
KwkJCQk1MjVDMEREODFFOTM1ODQ3MDAyMTg0Q0QgLyogV2FzbUNhbGxlZS5oICovLAorCQkJCTUy
NkFDNEI0MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ2FsbGVlR3JvdXAuY3BwICovLAorCQkJCTUy
NkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ2FsbGVlR3JvdXAuaCAqLywKKwkJCQlFM0ZC
ODUzOTIyRjM2Njc0MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlF
M0ZCODUzODIyRjM2Njc0MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmggKi8sCisJCQkJ
NTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8s
CisJCQkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5o
ICovLAorCQkJCUUzMzdCOTY2MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmgg
Ki8sCisJCQkJRTM3Q0ZCMkQyMkYyN0M1NzAwOUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUu
Y3BwICovLAorCQkJCUUzQkQyQjc1MjJGMjc1MDIwMDExNzY1QyAvKiBXYXNtQ29tcGlsYXRpb25N
b2RlLmggKi8sCisJCQkJRTM5MTVDMDYyMzA5NjgyOTAwQ0IyNTYxIC8qIFdhc21Db250ZXh0LmNw
cCAqLywKKwkJCQlBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywK
KwkJCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi8s
CisJCQkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLywK
KwkJCQlBRDVDMzZEQzFGNjg4QjVGMDAwQkNBQUYgLyogV2FzbUVtYmVkZGVyLmggKi8sCisJCQkJ
MTRBQjBDOTEyMzE3NDdCNjAwMDI1MEJDIC8qIFdhc21FbnRyeVBsYW4uY3BwICovLAorCQkJCTE0
QUIwQzk0MjMxNzQ3QjcwMDAyNTBCQyAvKiBXYXNtRW50cnlQbGFuLmggKi8sCisJCQkJNzlEQUUy
NzkxRTAzQzgyMjAwQjUyNkFBIC8qIFdhc21FeGNlcHRpb25UeXBlLmggKi8sCisJCQkJNTM4MUI5
MzYxRTYwRTk2NjAwOTBGNzk0IC8qIFdhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwICovLAorCQkJ
CTUzODFCOTM4MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmggKi8s
CisJCQkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovLAorCQkJ
CTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi8sCisJCQkJMTRDNUFE
NjcyMkYzM0ZCRjAwRjFGQjgzIC8qIFdhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAg
Ki8sCisJCQkJMTRDNUFENkIyMkYzM0ZDMDAwRjFGQjgzIC8qIFdhc21GdW5jdGlvbkNvZGVCbG9j
a0dlbmVyYXRvci5oICovLAorCQkJCTUzRjQwRThBMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVu
Y3Rpb25QYXJzZXIuaCAqLywKKwkJCQkxNDg3Q0UxNjIzNzc0MTAwMDA0NDQyOUMgLyogV2FzbUdl
bmVyYXRvclRyYWl0cy5oICovLAorCQkJCUUzODM1MDA4MjM5MEQ5MzcwMDM2MzE2RCAvKiBXYXNt
R2xvYmFsLmNwcCAqLywKKwkJCQlFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2Jh
bC5oICovLAorCQkJCTE0ODUyMUQ1MjZFQUVCREYwMENDMUQxQSAvKiBXYXNtSGFuZGxlckluZm8u
Y3BwICovLAorCQkJCTE0ODUyMUQ3MjZFQUVCRkUwMENDMUQxQSAvKiBXYXNtSGFuZGxlckluZm8u
aCAqLywKKwkJCQk1MkZEQUJDMjI3ODgwNzY5MDBDMTVCNTkgLyogV2FzbUlSR2VuZXJhdG9ySGVs
cGVycy5oICovLAorCQkJCUFEOEZGMzk2MUVCNUJEODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5h
bWUuY3BwICovLAorCQkJCUFEOEZGMzk1MUVCNUJEODUwMDg3RkY4MiAvKiBXYXNtSW5kZXhPck5h
bWUuaCAqLywKKwkJCQlBRDVDMzZERTFGNjk5RUI2MDAwQkNBQUYgLyogV2FzbUluc3RhbmNlLmNw
cCAqLywKKwkJCQlBRDVDMzZERjFGNjk5RUI2MDAwQkNBQUYgLyogV2FzbUluc3RhbmNlLmggKi8s
CisJCQkJQUQwMDY1OUQxRUNBQzdGRTAwMENBOTI2IC8qIFdhc21MaW1pdHMuaCAqLywKKwkJCQkx
NEM1QUQ2ODIyRjMzRkJGMDBGMUZCODMgLyogV2FzbUxMSW50R2VuZXJhdG9yLmNwcCAqLywKKwkJ
CQkxNEM1QUQ2OTIyRjMzRkJGMDBGMUZCODMgLyogV2FzbUxMSW50R2VuZXJhdG9yLmggKi8sCisJ
CQkJMTRDNUFENkEyMkYzM0ZCRjAwRjFGQjgzIC8qIFdhc21MTEludFBsYW4uY3BwICovLAorCQkJ
CTE0QzVBRDZDMjJGMzNGQzAwMEYxRkI4MyAvKiBXYXNtTExJbnRQbGFuLmggKi8sCisJCQkJMTQ1
MEZBMUQyMzU3QkVDNDAwOTNDRDREIC8qIFdhc21MTEludFRpZXJVcENvdW50ZXIuY3BwICovLAor
CQkJCTE0NTBGQTFFMjM1N0JFQzQwMDkzQ0Q0RCAvKiBXYXNtTExJbnRUaWVyVXBDb3VudGVyLmgg
Ki8sCisJCQkJNTNFOUUwQTkxRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5j
cHAgKi8sCisJCQkJNTNFOUUwQUExRUFFODNERTAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFk
cy5oICovLAorCQkJCTUzNTU1NzE1MUQ5REZBMzIwMDZENTgzQiAvKiBXYXNtTWVtb3J5LmNwcCAq
LywKKwkJCQk1MzU1NTcxMzFEOUQ5RUE1MDA2RDU4M0IgLyogV2FzbU1lbW9yeS5oICovLAorCQkJ
CTc5Qjc1OTcxMURGQTRDNjAwMDUyMTc0QyAvKiBXYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwICov
LAorCQkJCTc5Qjc1OTcyMURGQTRDNjAwMDUyMTc0QyAvKiBXYXNtTWVtb3J5SW5mb3JtYXRpb24u
aCAqLywKKwkJCQlBRDVDMzZGMDFGN0EyNkJGMDAwQkNBQUYgLyogV2FzbU1lbW9yeU1vZGUuY3Bw
ICovLAorCQkJCUFENUMzNkVFMUY3QTI2MjkwMDBCQ0FBRiAvKiBXYXNtTWVtb3J5TW9kZS5oICov
LAorCQkJCTc5MDA4MTM2MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmNwcCAqLywKKwkJ
CQk3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovLAorCQkJCTUzRTc3
N0UxMUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwICovLAorCQkJ
CTUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLywK
KwkJCQlBRDVCNDE2RTFFQkFGQjY1MDA4RUZBNDMgLyogV2FzbU5hbWUuaCAqLywKKwkJCQlBRDdC
NEIyRDFGQTNFMjg2MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggKi8sCisJCQkJQUREOEZB
NDQxRUIzMDc3MTAwREY1NDJGIC8qIFdhc21OYW1lU2VjdGlvblBhcnNlci5jcHAgKi8sCisJCQkJ
QUREOEZBNDMxRUIzMDc3MTAwREY1NDJGIC8qIFdhc21OYW1lU2VjdGlvblBhcnNlci5oICovLAor
CQkJCTUzMTFCRDQ4MUVBNTgxRTUwMDUyNTI4MSAvKiBXYXNtT01HUGxhbi5jcHAgKi8sCisJCQkJ
NTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi8sCisJCQkJNTNDNkZF
RjAxRThBRkUwQzAwQjE4NDI1IC8qIFdhc21PcGNvZGVPcmlnaW4uY3BwICovLAorCQkJCTUzQzZG
RUVFMUU4QURGQTkwMEIxODQyNSAvKiBXYXNtT3Bjb2RlT3JpZ2luLmggKi8sCisJCQkJRTM5RDhC
MkMyMzAyMUUxRTAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmNwcCAqLywKKwkJCQlFMzlEOEIy
RDIzMDIxRTFFMDAyNjU4NTIgLyogV2FzbU9wZXJhdGlvbnMuaCAqLywKKwkJCQlFM0M2OTRCMTIz
MDI2ODczMDA2RkJFNDIgLyogV2FzbU9TUkVudHJ5RGF0YS5oICovLAorCQkJCTUyN0U2Q0VBMjc3
MkI5QzUwMDVFMDc4MiAvKiBXYXNtT1NSRW50cnlQbGFuLmNwcCAqLywKKwkJCQk1MjdFNkNFQjI3
NzJCOUM1MDA1RTA3ODIgLyogV2FzbU9TUkVudHJ5UGxhbi5oICovLAorCQkJCUFEQjZGNjdDMUUx
NUQ3NTAwMDgyRjM4NCAvKiBXYXNtUGFnZUNvdW50LmNwcCAqLywKKwkJCQk3OUI3NTk3MzFERkE0
QzYwMDA1MjE3NEMgLyogV2FzbVBhZ2VDb3VudC5oICovLAorCQkJCTUzRjQwRThDMUQ1OTAxRjIw
MDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggKi8sCisJCQkJNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBC
IC8qIFdhc21QbGFuLmNwcCAqLywKKwkJCQk1MzEzNzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV2Fz
bVBsYW4uaCAqLywKKwkJCQlFM0EwNTMxNzIxMzQyQjY2MDAyMkVDMTQgLyogV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwICovLAorCQkJCUUzQTA1MzE4MjEzNDJCNjcwMDIyRUMxNCAvKiBXYXNtU2VjdGlv
blBhcnNlci5oICovLAorCQkJCTUzRjQwRTg0MUQ1OEY5NzcwMDk5QTFCNiAvKiBXYXNtU2VjdGlv
bnMuaCAqLywKKwkJCQlBRDc0MzhCRTFFMDQ1NzkyMDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5j
cHAgKi8sCisJCQkJQUQ3NDM4QkYxRTA0NTc5MjAwRkQwQzJBIC8qIFdhc21TaWduYXR1cmUuaCAq
LywKKwkJCQkzMEE1RjQwM0YxMUM0RjU5OUNENTk2RDUgLyogV2FzbVNpZ25hdHVyZUlubGluZXMu
aCAqLywKKwkJCQkxNEFCMEM5MjIzMTc0N0I3MDAwMjUwQkMgLyogV2FzbVNsb3dQYXRocy5jcHAg
Ki8sCisJCQkJMTRBQjBDOTMyMzE3NDdCNzAwMDI1MEJDIC8qIFdhc21TbG93UGF0aHMuaCAqLywK
KwkJCQlFMzNCQkUwNzI1QkZBMDNDMDA1MzY5MEYgLyogV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmNw
cCAqLywKKwkJCQlFMzNCQkUwODI1QkZBMDNDMDA1MzY5MEYgLyogV2FzbVN0cmVhbWluZ0NvbXBp
bGVyLmggKi8sCisJCQkJRTNBMDUzMTkyMTM0MkI2NzAwMjJFQzE0IC8qIFdhc21TdHJlYW1pbmdQ
YXJzZXIuY3BwICovLAorCQkJCUUzQTA1MzE2MjEzNDJCNjYwMDIyRUMxNCAvKiBXYXNtU3RyZWFt
aW5nUGFyc2VyLmggKi8sCisJCQkJRTNDNzNBOEYyNUJGQTczNDAwRUZFMzAzIC8qIFdhc21TdHJl
YW1pbmdQbGFuLmNwcCAqLywKKwkJCQlFM0M3M0E5MDI1QkZBNzM0MDBFRkUzMDMgLyogV2FzbVN0
cmVhbWluZ1BsYW4uaCAqLywKKwkJCQlBRDVDMzZFMzFGNjlFQzhCMDAwQkNBQUYgLyogV2FzbVRh
YmxlLmNwcCAqLywKKwkJCQlBRDVDMzZFNDFGNjlFQzhCMDAwQkNBQUYgLyogV2FzbVRhYmxlLmgg
Ki8sCisJCQkJMTREMDFCRjIyNkRFRUY1MjAwQ0FFMEQwIC8qIFdhc21UYWcuY3BwICovLAorCQkJ
CTE0RDAxQkYzMjZERUVGNTIwMENBRTBEMCAvKiBXYXNtVGFnLmggKi8sCisJCQkJNTI1MEQyQ0Yx
RThEQTA1QTAwMjlBOTMyIC8qIFdhc21UaHVua3MuY3BwICovLAorCQkJCTUyNTBEMkQwMUU4REEw
NUEwMDI5QTkzMiAvKiBXYXNtVGh1bmtzLmggKi8sCisJCQkJRTNDNjk0QjIyMzAyNjg3NDAwNkZC
RTQyIC8qIFdhc21UaWVyVXBDb3VudC5jcHAgKi8sCisJCQkJNTNFOUUwQUUxRUFFQzQ1NzAwRkVF
MjUxIC8qIFdhc21UaWVyVXBDb3VudC5oICovLAorCQkJCTg2M0ZCQzU3MjVCMDkzQjgwMEY2Qzkz
MCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5jcHAgKi8sCisJCQkJODYzRkJDNTgyNUIwOTNCOTAwRjZD
OTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi8sCisJCQkJNTMwRkIzMDMxRTdBMTE0NjAwM0Mx
OUREIC8qIFdhc21Xb3JrbGlzdC5jcHAgKi8sCisJCQkJNTMwRkIzMDExRTdBMEI2RTAwM0MxOURE
IC8qIFdhc21Xb3JrbGlzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSB3YXNtOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5
dGVjb21waWxlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTY5QTA3MjAwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmNwcCAqLywK
KwkJCQk5NjlBMDcyMTBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCAqLywK
KwkJCQkxNEM1QUQ2NTIyRjE4NjZDMDBGMUZCODMgLyogQnl0ZWNvZGVHZW5lcmF0b3JCYXNlLmgg
Ki8sCisJCQkJMTRDNUFENjYyMkYxODY2QzAwRjFGQjgzIC8qIEJ5dGVjb2RlR2VuZXJhdG9yQmFz
ZUlubGluZXMuaCAqLywKKwkJCQk5NjlBMDcyNzBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCAq
LywKKwkJCQk5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovLAorCQkJ
CTY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovLAorCQkJCTE0
Nzg4RUUyMjE1MDFBRjcwMEE1NjFDOCAvKiBQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5jcHAgKi8s
CisJCQkJMTRCQTc3NTIyMTFBOEU1RjAwOEQwQjA1IC8qIFByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFn
LmggKi8sCisJCQkJOTY5QTA3MjgwRUQxQ0U2OTAwRjFGNjgxIC8qIFJlZ2lzdGVySUQuaCAqLywK
KwkJCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3RhdGljUHJvcGVydHlBbmFseXNpcy5o
ICovLAorCQkJCTE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmggKi8sCisJCQkJNTMwQTY2Q0MxRkIxMzQ2RDAwMjZBNTQ1IC8qIFN1cGVyU2FtcGxlckJ5
dGVjb2RlU2NvcGUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnl0ZWNvbXBpbGVyOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0UzOUQ4MzcwRUMzQTM4ODAwM0FGMTFBIC8q
IHBhcnNlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdBN0VFNzQxMUI5OEI4RDAwNjVBMTRGIC8qIEFTVEJ1aWxkZXIuaCAqLywKKwkJCQk5M0YxOTgx
QTA4MjQ1QUFFMDAxRTlBQkMgLyogS2V5d29yZHMudGFibGUgKi8sCisJCQkJRjY5MkE4NjUwMjU1
NTk3RDAxRkY2MEY3IC8qIExleGVyLmNwcCAqLywKKwkJCQlGNjkyQTg2NjAyNTU1OTdEMDFGRjYw
RjcgLyogTGV4ZXIuaCAqLywKKwkJCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwICovLAorCQkJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oICovLAorCQkJCTAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4QyAvKiBNb2R1bGVTY29w
ZURhdGEuaCAqLywKKwkJCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNvbnN0cnVj
dG9ycy5oICovLAorCQkJCUY2OTJBODZEMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5jcHAgKi8s
CisJCQkJRjY5MkE4NkUwMjU1NTk3RDAxRkY2MEY3IC8qIE5vZGVzLmggKi8sCisJCQkJRTM5NjND
RUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8sCisJCQkJOTNG
MEIzQTkwOUJCNERDMDAwNjhGQ0UzIC8qIFBhcnNlci5jcHAgKi8sCisJCQkJOTNGMEIzQUEwOUJC
NERDMDAwNjhGQ0UzIC8qIFBhcnNlci5oICovLAorCQkJCTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRD
MyAvKiBQYXJzZXJBcmVuYS5jcHAgKi8sCisJCQkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8q
IFBhcnNlckFyZW5hLmggKi8sCisJCQkJMEZDQ0FFNDMxNkQwQ0Y2RTAwRDBDNjVCIC8qIFBhcnNl
ckVycm9yLmggKi8sCisJCQkJOUI0OTU0RTgxQTY2NDBEQjAwMjgxNUE2IC8qIFBhcnNlckZ1bmN0
aW9uSW5mby5oICovLAorCQkJCUE3N0YxODI0MTY0MTkyNTQwMDY0MEE0NyAvKiBQYXJzZXJNb2Rl
cy5oICovLAorCQkJCTY1MzAzRDYzMTQ0N0I5RTEwMEQzRjkwNCAvKiBQYXJzZXJUb2tlbnMuaCAq
LywKKwkJCQk4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovLAorCQkJ
CTE0MjAxRDU4MURFQ0YyNkEwMDkwNEJEMyAvKiBTb3VyY2VDb2RlLmggKi8sCisJCQkJNzBCNzkx
OEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLywKKwkJCQkwRjQ5M0FGODE2
RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovLAorCQkJCTY1RTg2NkVEMERE
NTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQcm92aWRlci5oICovLAorCQkJCUU0OURDMTU1MTJFRjI3
NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLywKKwkJCQlFNDlEQzE1MTEy
RUYyNzIyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oICovLAorCQkJCUU0OURDMTQ5
MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovLAorCQkJCUE3
QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhDaGVja2VyLmggKi8sCisJCQkJMEY4RjJC
OUQxNzMwNkM4QjAwN0RCREE1IC8qIFVubGlua2VkU291cmNlQ29kZS5jcHAgKi8sCisJCQkJMTRB
QjY2NzUxREVDRjQwOTAwQTU2QzI2IC8qIFVubGlua2VkU291cmNlQ29kZS5oICovLAorCQkJCTc5
RUUwQkZEMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLywKKwkJ
CQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovLAor
CQkJKTsKKwkJCXBhdGggPSBwYXJzZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQUQ0OTM3QzExRERCRTYwQTAwNzdDODA3
IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLywKKwkJCQlBRDQ5MzdDMjFEREJFNjBBMDA3
N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCAqLywKKwkJCQk5MTY4QkQ4NDI0NDdCQTRD
MDA4MEZGQjQgLyogQWdncmVnYXRlRXJyb3IuY3BwICovLAorCQkJCTkxNjhCRDg1MjQ0N0JBNEQw
MDgwRkZCNCAvKiBBZ2dyZWdhdGVFcnJvci5oICovLAorCQkJCTkxOEUxNUJDMjQ0N0IyMjYwMDQ0
N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk5MThFMTVCRjI0
NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAorCQkJCTkx
OEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgKi8s
CisJCQkJOTE4RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBl
LmggKi8sCisJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAor
CQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCisJCQkJMEZFMDUw
MEMxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01vZGUuaCAqLywKKwkJCQkwRjZCMUNCNzE4
NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCAqLywKKwkJCQlBN0E4QUYyNTE3QURC
NUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovLAorCQkJCUE3QThBRjI2MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAorCQkJCTBGMzBGQjYwMURDMkRFOTYwMDMxMjRG
MiAvKiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggKi8sCisJCQkJQTdBOEFGMjcxN0FEQjVGMzAw
NUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5jcHAgKi8sCisJCQkJQTdBOEFGMjgxN0FEQjVGMzAw
NUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oICovLAorCQkJCUJDNzk1MjA2MEUxNUU4QTgwMEE4
OThBQiAvKiBBcnJheUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlCQzc5NTIwNzBFMTVFOEE4MDBB
ODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5oICovLAorCQkJCTBGQjQxNTgzMUQ3OEY5ODIwMERG
OEQwOSAvKiBBcnJheUNvbnZlbnRpb25zLmNwcCAqLywKKwkJCQkwRkI3RjM4OTE1RUQ4RTM4MDBG
MTY3QjIgLyogQXJyYXlDb252ZW50aW9ucy5oICovLAorCQkJCUE3QkRBRUMyMTdGNEVBMTQwMEY2
MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBN0JEQUVDMzE3RjRF
QTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAorCQkJCUY2OTJBODRE
MDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjY5MkE4NEUw
MjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCisJCQkJMEZCN0YzOEExNUVE
OEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oICovLAorCQkJCUZFMUQ2RDcwMjM2MjVBQjAw
MDdBNUMyNiAvKiBBcnJheVN0b3JhZ2VJbmxpbmVzLmggKi8sCisJCQkJOEI2MDE2RjMxRjNFM0ND
MDAwRjlERTZBIC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJ
OEI2MDE2RjQxRjNFM0NDMDAwRjlERTZBIC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlw
ZS5oICovLAorCQkJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwICovLAorCQkJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyog
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJNUI3MENGREExREI2OUU1QzAwRUMy
M0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJCQk4QkMwNjQ4MzFFMUE0RkQw
MDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKKwkJ
CQk4QkMwNjQ4NDFFMUE0RkQxMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggKi8sCisJCQkJOEJDMDY0ODUxRTFBNEZEMTAwQjJCOENBIC8qIEFzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCThCQzA2NDg2MUUxQTRGRDEwMEIyQjhD
QSAvKiBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJOEJDMDY0OEYx
RTFBRDZBQzAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQk4
QkMwNjQ5MDFFMUFENkFDMDBCMkI4Q0EgLyogQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaCAqLywK
KwkJCQk4QkMwNjQ5MzFFMUQ4MjhCMDBCMkI4Q0EgLyogQXN5bmNJdGVyYXRvclByb3RvdHlwZS5j
cHAgKi8sCisJCQkJOEJDMDY0OTQxRTFEODI4QjAwQjJCOENBIC8qIEFzeW5jSXRlcmF0b3JQcm90
b3R5cGUuaCAqLywKKwkJCQkwRjdDRjk1NDFEQzEyNThCMDA5OENDMTIgLyogQXRvbWljc09iamVj
dC5jcHAgKi8sCisJCQkJMEY3Q0Y5NTUxREMxMjU4QjAwOThDQzEyIC8qIEF0b21pY3NPYmplY3Qu
aCAqLywKKwkJCQkwRjM4RDJBMDFENDQxOTY2MDA2ODA0OTkgLyogQXV4aWxpYXJ5QmFycmllci5o
ICovLAorCQkJCTBGMzhEMkExMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVySW5s
aW5lcy5oICovLAorCQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9j
YXRpb24uY3BwICovLAorCQkJCTUyNjc4RjhEMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2Nr
TG9jYXRpb24uaCAqLywKKwkJCQkxNDdCODNBQTBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXIuaCAqLywKKwkJCQlFMzVFODlGQjI1QzUwRjg2MDA3MUVFMUUgLyog
QmlnSW50NjRBcnJheS5oICovLAorCQkJCTg2OTc2RTU4MUZBMzc1NkQwMEU3QzRFMSAvKiBCaWdJ
bnRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJODY5NzZFNTcxRkEzNzU0MDAwRTdDNEUxIC8qIEJp
Z0ludENvbnN0cnVjdG9yLmggKi8sCisJCQkJODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJp
Z0ludGVnZXIuaCAqLywKKwkJCQk4NjE4MTY3ODFGQjc5MzEzMDBFQ0M0RUMgLyogQmlnSW50T2Jq
ZWN0LmNwcCAqLywKKwkJCQk4NjE4MTY3NjFGQjc5MjJGMDBFQ0M0RUMgLyogQmlnSW50T2JqZWN0
LmggKi8sCisJCQkJODY5NzZFNUIxRkEzNzVBODAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5j
cHAgKi8sCisJCQkJODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5o
ICovLAorCQkJCUUzNUU4OUZDMjVDNTBGODcwMDcxRUUxRSAvKiBCaWdVaW50NjRBcnJheS5oICov
LAorCQkJCUJDNzk1MjMyMEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUJDNzk1MjMzMEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlGNjkyQTg1MDAyNTU1OTdEMDFGRjYwRjcgLyogQm9vbGVhbk9iamVjdC5jcHAg
Ki8sCisJCQkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLywK
KwkJCQlCQzc5NTIzNDBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhblByb3RvdHlwZS5jcHAgKi8s
CisJCQkJQkM3OTUyMzUwRTE1RUI1NjAwQTg5OEFCIC8qIEJvb2xlYW5Qcm90b3R5cGUuaCAqLywK
KwkJCQk4NjY0OTY3QTI1RDFERDEyMDA1MTZCMzYgLyogQnJhbmRlZFN0cnVjdHVyZS5jcHAgKi8s
CisJCQkJODYxQUY2MDYyNUQxOEM5RDAwMEI2M0UxIC8qIEJyYW5kZWRTdHJ1Y3R1cmUuaCAqLywK
KwkJCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovLAorCQkJCTlF
NzI5NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovLAorCQkJCTBGQjdGMzhC
MTVFRDhFMzgwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCAqLywKKwkJCQkwRkI3RjM4QzE1RUQ4RTM4
MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oICovLAorCQkJCTE0MzU5NTIwMjJBNTIxQ0Ew
MEU4MDg2RCAvKiBCeXRlY29kZUNhY2hlRXJyb3IuY3BwICovLAorCQkJCTE0MzU5NTFGMjJBNTIx
Q0EwMEU4MDg2RCAvKiBCeXRlY29kZUNhY2hlRXJyb3IuaCAqLywKKwkJCQlGRThERTU0RTIzQUMz
QThFMDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllci5jcHAgKi8sCisJCQkJRkU4REU1NEEy
M0FDMURBRDAwNUM5MTQyIC8qIENhY2hlYWJsZUlkZW50aWZpZXIuaCAqLywKKwkJCQlGRThERTU0
QzIzQUMxRTg2MDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCAqLywKKwkJ
CQkxNDhCMTQxOTIyNUREMUU5MDBENkU5OTggLyogQ2FjaGVkQnl0ZWNvZGUuY3BwICovLAorCQkJ
CTE0NENBMzRGMjIxRjAzNzkwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oICovLAorCQkJCUUz
OUVFQUYxMjI4MTI0NEMwMDg0NzRGNCAvKiBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAorCQkJCUUzOUVFQUYyMjI4MTI0NEMwMDg0NzRGNCAv
KiBDYWNoZWRTcGVjaWFsUHJvcGVydHlBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywK
KwkJCQkxNERBRkE0NTIxRTNCODcxMDA0QjY4RjcgLyogQ2FjaGVkVHlwZXMuY3BwICovLAorCQkJ
CTE0M0JFMjY1MjFDODU3NzcwMDIwQ0QxNyAvKiBDYWNoZWRUeXBlcy5oICovLAorCQkJCTE0OEIx
NDFCMjI1REQxRUEwMEQ2RTk5OCAvKiBDYWNoZVBheWxvYWQuY3BwICovLAorCQkJCTE0OEIxNDE2
MjI1REQxRDcwMEQ2RTk5OCAvKiBDYWNoZVBheWxvYWQuaCAqLywKKwkJCQkxNDhCMTQxQTIyNURE
MUU5MDBENkU5OTggLyogQ2FjaGVVcGRhdGUuY3BwICovLAorCQkJCTE0OEIxNDE4MjI1REQxRDcw
MEQ2RTk5OCAvKiBDYWNoZVVwZGF0ZS5oICovLAorCQkJCTBGRUMzQzVGMUYzNzlGNTMwMEY1OUI2
QyAvKiBDYWdlZEJhcnJpZXJQdHIuaCAqLywKKwkJCQlCQ0E2MkRGRTBFMjgyNjIzMDAwNEYzMEQg
LyogQ2FsbERhdGEuY3BwICovLAorCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxs
RGF0YS5oICovLAorCQkJCUZFODBDMTk4MUQ3NzVGQjQwMDg1MTBDMCAvKiBDYXRjaFNjb3BlLmNw
cCAqLywKKwkJCQlGRTgwQzE5NjFENzc1QjI3MDA4NTEwQzAgLyogQ2F0Y2hTY29wZS5oICovLAor
CQkJCUZFQzE2MDMxMjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oICovLAorCQkJCUUzMjZD
NDk2MUVDQkVGNTcwMEE5QTkwNSAvKiBDbGFzc0luZm8uY3BwICovLAorCQkJCUJDNkFBQUU0MEUx
RjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAqLywKKwkJCQkwRkUwNTAxQzFBQTkwOTU2MDBE
MzNCMzMgLyogQ2xvbmVkQXJndW1lbnRzLmNwcCAqLywKKwkJCQkwRkUwNTAxRDFBQTkwOTU2MDBE
MzNCMzMgLyogQ2xvbmVkQXJndW1lbnRzLmggKi8sCisJCQkJQTc3RjE4MUYxNjQwODhCMjAwNjQw
QTQ3IC8qIENvZGVDYWNoZS5jcHAgKi8sCisJCQkJQTc3RjE4MjAxNjQwODhCMjAwNjQwQTQ3IC8q
IENvZGVDYWNoZS5oICovLAorCQkJCTBGOEY5NDNBMTY2NzYzMTEwMEQ2MTk3MSAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmNwcCAqLywKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTY1RUE3MzYyMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8sCisJCQkJNjVFQTczNjMwQkFFMzVEMTAwMUJC
NTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8sCisJCQkJQTcwOUYyRjExN0EwQUMyQTAwNTEy
RTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgKi8sCisJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAorCQkJCTMzQTkyMEJDMjNEQTJDNkQwMDBFQkFG
MCAvKiBDb21tb25TbG93UGF0aHNJbmxpbmVzLmggKi8sCisJCQkJQTdFNUEzQTUxNzk3NDMyRDAw
RTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmNwcCAqLywKKwkJCQlBN0U1QTNBNjE3OTc0MzJE
MDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCAqLywKKwkJCQk5NjlBMDkyMjBFRDFFMDlD
MDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8sCisJCQkJRjVCQjJCQzUwMzBGNzcyMTAxRkNG
RTFEIC8qIENvbXBsZXRpb24uaCAqLywKKwkJCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLywKKwkJCQkwRkRCMkNFOTE3NDg5NkM3MDA3QjNDMUIgLyogQ29uY3Vy
cmVudEpTTG9jay5oICovLAorCQkJCTY1ODgyNEIwMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdG
aWxlLmNwcCAqLywKKwkJCQk2NTg4MjRBRTFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmlsZS5o
ICovLAorCQkJCUE1QjZBNzRDMThDNkRCQTYwMEYxMUU5MSAvKiBDb25zb2xlQ2xpZW50LmNwcCAq
LywKKwkJCQlBNTNDRTA4OTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29sZUNsaWVudC5oICovLAor
CQkJCUE1NTcxNEJDMUNEODA0OEUwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCAqLywKKwkJ
CQlBNTU3MTRCRDFDRDgwNDhFMDAwNEQyQzYgLyogQ29uc29sZU9iamVjdC5oICovLAorCQkJCUE1
RkQwMDcxMTg5QjAzOEMwMDYzMzIzMSAvKiBDb25zb2xlVHlwZXMuaCAqLywKKwkJCQkwRjk3OEIz
QTFBQUVBNzFEMDA3QzczNjkgLyogQ29uc3RhbnRNb2RlLmNwcCAqLywKKwkJCQkwRkZDOTlEMDE4
NEVDOEFEMDA5QzEwQUIgLyogQ29uc3RhbnRNb2RlLmggKi8sCisJCQkJRTM1NDYyMkExQjYwNjVE
MTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLywKKwkJCQlCQ0E2MkRGRjBFMjgyNjMx
MDAwNEYzMEQgLyogQ29uc3RydWN0RGF0YS5jcHAgKi8sCisJCQkJQkM4RjNDQ0YwREFGMTdCQTAw
NTc3QTgwIC8qIENvbnN0cnVjdERhdGEuaCAqLywKKwkJCQlFM0ZDQ0I2MzIzMTBBOTBEMDAyMzhF
NzIgLyogQ29uc3RydWN0b3JLaW5kLmggKi8sCisJCQkJNTJCNzE3QjQxQTA1OTdFMTAwN0FGNEYz
IC8qIENvbnRyb2xGbG93UHJvZmlsZXIuY3BwICovLAorCQkJCTUyNjc4RjkwMUEwNDE3N0MwMDZB
MzA2RCAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmggKi8sCisJCQkJMkExMTEyNDMxOTJGQ0U3OTAw
NUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5jcHAgKi8sCisJCQkJMkExMTEyNDQxOTJGQ0U3
OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5oICovLAorCQkJCTBGMkI2NkIwMTdCNkI1
QUIwMEE3QUUzRiAvKiBEYXRhVmlldy5jcHAgKi8sCisJCQkJMEYyQjY2QjExN0I2QjVBQjAwQTdB
RTNGIC8qIERhdGFWaWV3LmggKi8sCisJCQkJQkNEMjAzNDUwRTE3MTM1RTAwMkM3RTgyIC8qIERh
dGVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQkNEMjAzNDYwRTE3MTM1RTAwMkM3RTgyIC8qIERh
dGVDb25zdHJ1Y3Rvci5oICovLAorCQkJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRl
Q29udmVyc2lvbi5jcHAgKi8sCisJCQkJRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVD
b252ZXJzaW9uLmggKi8sCisJCQkJQkMxMTY2MDAwRTE5OTdCMTAwODA2NkREIC8qIERhdGVJbnN0
YW5jZS5jcHAgKi8sCisJCQkJQkMxMTY2MDEwRTE5OTdCMTAwODA2NkREIC8qIERhdGVJbnN0YW5j
ZS5oICovLAorCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNo
ZS5oICovLAorCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmNw
cCAqLywKKwkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oICov
LAorCQkJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5jcHAg
Ki8sCisJCQkJNTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmgg
Ki8sCisJCQkJRkU5RjNGQzYyNjE2M0NBOTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRpb24uaCAq
LywKKwkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggKi8sCisJCQkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5
U2xvdC5oICovLAorCQkJCTBGRTA1MDBGMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVu
dHMuY3BwICovLAorCQkJCTBGRTA1MDEwMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVu
dHMuaCAqLywKKwkJCQkwRkUwNTAwRDFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRz
T2Zmc2V0LmNwcCAqLywKKwkJCQkwRkUwNTAwRTFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJn
dW1lbnRzT2Zmc2V0LmggKi8sCisJCQkJMTQzODZBNzIxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcCAqLywKKwkJCQkxNDM4NkE3MzFERDY5ODk1MDA4NjUyQzQgLyog
RGlyZWN0RXZhbEV4ZWN1dGFibGUuaCAqLywKKwkJCQlGRTU0REVGRTFFOEQ3NDI4MDBBODkyQzUg
LyogRGlzYWxsb3dTY29wZS5oICovLAorCQkJCUZFNTRERUZBMUU4QzZENzIwMEE4OTJDNSAvKiBE
aXNhbGxvd1ZNRW50cnkuaCAqLywKKwkJCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9N
QW5ub3RhdGlvbi5oICovLAorCQkJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIxOCAvKiBET01BdHRy
aWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovLAorCQkJCUUzMTYxODEyMUVDNUZFMDgwMDA2QTIxOCAv
KiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJCQlFM0ZDMjUxMDIyNTZFQ0Y0MDA1
ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmNwcCAqLywKKwkJCQlFM0ZDMjUx
MTIyNTZFQ0Y0MDA1ODM1MTggLyogRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmggKi8sCisJ
CQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKKwkJCQlB
NzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQkxNDVGRjJD
NjI0M0JCOTlBMDA1NjlFNzEgLyogRUNNQU1vZGUuY3BwICovLAorCQkJCTE0NUZGMkM3MjQzQkI5
OUEwMDU2OUU3MSAvKiBFQ01BTW9kZS5oICovLAorCQkJCUZFMzRFRTIyMjQzOThCODUwMEFBMkU3
QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAgKi8sCisJCQkJRkUzNEVFMjAyNDM5OEE5QTAw
QUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggKi8sCisJCQkJMkFEMkVERkExOTc5OUUz
ODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovLAorCQkJCUJDMzM3QkVBMEUxQjAwQ0Iw
MDc2OTE4QSAvKiBFcnJvci5jcHAgKi8sCisJCQkJQkMzMDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8q
IEVycm9yLmggKi8sCisJCQkJQkMwMkU5MDQwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yQ29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCUJDMDJFOTA1MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0
cnVjdG9yLmggKi8sCisJCQkJRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5jcHAgKi8sCisJCQkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oICovLAorCQkJCUJDMDJFOThBMEUxODNFMzgwMDBGOTI5NyAvKiBFcnJvcklu
c3RhbmNlLmNwcCAqLywKKwkJCQlCQzAyRTk4QjBFMTgzRTM4MDAwRjkyOTcgLyogRXJyb3JJbnN0
YW5jZS5oICovLAorCQkJCUJDMDJFOTA2MEUxODM5REIwMDBGOTI5NyAvKiBFcnJvclByb3RvdHlw
ZS5jcHAgKi8sCisJCQkJQkMwMkU5MDcwRTE4MzlEQjAwMEY5Mjk3IC8qIEVycm9yUHJvdG90eXBl
LmggKi8sCisJCQkJRTNFRTEzNzUyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5jcHAgKi8s
CisJCQkJRTNFRTEzNzQyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5oICovLAorCQkJCTE0
NzM0MURCMURDMkNFOTYwMEFBMjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJMTQ3
MzQxRDExREMwMkUyRTAwQUEyOUJBIC8qIEV2YWxFeGVjdXRhYmxlLmggKi8sCisJCQkJRkUxQzBG
RkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8sCisJCQkJRkUxQzBGRkMxQjE5
M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oICovLAorCQkJCUZFODBDMTlBMUQ3NzY4RkQwMDg1
MTBDMCAvKiBFeGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCAqLywKKwkJCQlGRTYwMjlEODFENkUx
RTMzMDAzMDIwNEQgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oICovLAorCQkJCUZFRjVCNDJG
MjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oICovLAorCQkJCTBGMTJE
RTBEMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCAqLywKKwkJCQkwRjEyREUw
RTE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oICovLAorCQkJCTE0MjlEODc3MEVE
MjFBQ0QwMEI4OTYxOSAvKiBFeGNlcHRpb25IZWxwZXJzLmNwcCAqLywKKwkJCQlBNzI3MDFCMzBE
QURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovLAorCQkJCUZFNjQ5MTM4MUQ3
OEYzQTMwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5jcHAgKi8sCisJCQkJRkU2NDkxMzYxRDc4
RjAxMzAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNjb3BlLmggKi8sCisJCQkJMTQ3MzQxRTkxREMyQ0Yy
NTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAqLywKKwkJCQkxNDczNDFDQjFEQzAyRDcy
MDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAqLywKKwkJCQlFMzVBMEI5QzIyMEFEODdBMDBB
QzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi8sCisJCQkJQ0VDRkFEMzMyMzcyREFB
NzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKKwkJCQlDRUNGQUQzMjIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKKwkJCQlDRTIwQkQw
NDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywKKwkJ
CQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmgg
Ki8sCisJCQkJNTMzRDA3NDUyMkMyRDg3RjAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTUzM0QwNzQzMjJDMkQ3OTcwMDREMkZFMiAvKiBGaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJNTMxRUU3QkMyMkRFNkVDNjAw
MzBEQTgxIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1MzFF
RTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCAq
LywKKwkJCQlBN0E4QUYyOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCisJ
CQkJQTdBOEFGMkExN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAorCQkJCUNE
MUY5QjM5MjcwQjlBQUQwMDYxN0VCNiAvKiBGb3J3YXJkLmggKi8sCisJCQkJQkMyNjgwQzAwRTE2
RDRFOTAwQTA2RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUJDMjY4MEMx
MEUxNkQ0RTkwMEEwNkU5MiAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJMTQ3MzQx
REMxREMyQ0U5NjAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJMTQ3
MzQxRDcxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5oICovLAorCQkJCTBG
QjRCNTIxMTZCNjI3OEQwMDNGNjk2QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmNwcCAqLywK
KwkJCQkwRkI0QjUyMjE2QjYyNzhEMDAzRjY5NkIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5o
ICovLAorCQkJCUUzNDAwRUMwMjJBMUNDNzgwMDlERUQ1NCAvKiBGdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmggKi8sCisJCQkJNTJCMzEwRkMxOTc0QUU4NzAwODA4NTdDIC8qIEZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5jcHAgKi8sCisJCQkJNTJCMzEwRkExOTc0QUU2MTAwODA4NTdDIC8qIEZ1
bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovLAorCQkJCUY2OTJBODVDMDI1NTU5N0QwMUZGNjBG
NyAvKiBGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2
MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCisJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAorCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCisJCQkJRTMzQTk0OTUyMjU1MzIyQTAwRDQy
QjA2IC8qIEZ1enplckFnZW50LmNwcCAqLywKKwkJCQlFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYg
LyogRnV6emVyQWdlbnQuaCAqLywKKwkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6
emVyUHJlZGljdGlvbnMuY3BwICovLAorCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBG
dXp6ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBH
YXRlLmggKi8sCisJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEI3OTE4
ODFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKKwkJ
CQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmNwcCAqLywK
KwkJCQk3MEI3OTE4QTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmggKi8s
CisJCQkJMEZFMDUwMTExQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMuaCAqLywK
KwkJCQkwRkUwNTAxMjFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aCAqLywKKwkJCQkwRkUwNTAxMzFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY09mZnNldC5oICov
LAorCQkJCTBGMkI2NkIyMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCAqLywKKwkJCQkwRjJCNjZCMzE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oICovLAorCQkJCTE0Nzg4RUU1MjE1MDFCMjkwMEE1NjFDOCAvKiBHZXRQdXRJ
bmZvLmNwcCAqLywKKwkJCQk3OTY0NjU2ODFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5o
ICovLAorCQkJCUJDMDJFOUI4MEUxODQ1NDUwMDBGOTI5NyAvKiBHZXR0ZXJTZXR0ZXIuY3BwICov
LAorCQkJCUJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLywKKwkJ
CQlGRTFENkQ2RTIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCAqLywKKwkJCQlFMzU1RDM4RTIy
NDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJRTM1NUQzOEQy
MjQ0Njg2QjAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuaCAqLywKKwkJCQk3OUEwOTA3RDFE
NzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuY3BwICovLAorCQkJCTc5QTA5MDdFMUQ3Njg0
NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5oICovLAorCQkJCUZFRjVCNDIyMjYyOEEwRUUwMDE2
RTc3NiAvKiBIYXNoTWFwSW1wbElubGluZXMuaCAqLywKKwkJCQk3OURGQ0JEQTFEODhDNTk2MDA1
MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oICovLAorCQkJCTkzM0EzNDlEMDM4QUU4MEYw
MDg2MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKKwkJCQk5MzNBMzQ5QTAzOEFFN0M2MDA4NjM1
Q0UgLyogSWRlbnRpZmllci5oICovLAorCQkJCTg2MDZEREU5MThEQTQ0QUIwMEEzODNEMCAvKiBJ
ZGVudGlmaWVySW5saW5lcy5oICovLAorCQkJCTBGQjdGMzhEMTVFRDhFMzgwMEYxNjdCMiAvKiBJ
bmRleGluZ0hlYWRlci5oICovLAorCQkJCTBGQjdGMzhFMTVFRDhFMzgwMEYxNjdCMiAvKiBJbmRl
eGluZ0hlYWRlcklubGluZXMuaCAqLywKKwkJCQkwRjEzRTA0QzE2MTY0QTFCMDBEQzhERTcgLyog
SW5kZXhpbmdUeXBlLmNwcCAqLywKKwkJCQkwRkI3RjM4RjE1RUQ4RTM4MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggKi8sCisJCQkJMTQzODZBNzYxREQ2OTg5QzAwODY1MkM0IC8qIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUuY3BwICovLAorCQkJCTE0Mzg2QTc3MURENjk4OUMwMDg2NTJDNCAvKiBJ
bmRpcmVjdEV2YWxFeGVjdXRhYmxlLmggKi8sCisJCQkJMEZGOEJERTkxQUQ0Q0Y3MTAwREZFODg0
IC8qIEluZmVycmVkVmFsdWUuaCAqLywKKwkJCQkwRjRBRTA0MjFGRTBEMjU0MDBFMjA4MzkgLyog
SW5mZXJyZWRWYWx1ZUlubGluZXMuaCAqLywKKwkJCQlFMTc4NjM2QzBEOUJFRUMzMDBENzRFNzUg
LyogSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgKi8sCisJCQkJRTE3ODYzM0YwRDlCRUMwMDAwRDc0
RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCAqLywKKwkJCQlBN0E4QUYyQzE3QURCNUYzMDA1
QUIxNzQgLyogSW50MTZBcnJheS5oICovLAorCQkJCUE3QThBRjJEMTdBREI1RjMwMDVBQjE3NCAv
KiBJbnQzMkFycmF5LmggKi8sCisJCQkJQTdBOEFGMkIxN0FEQjVGMzAwNUFCMTc0IC8qIEludDhB
cnJheS5oICovLAorCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0
aW9uLmNwcCAqLywKKwkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5j
dGlvbi5oICovLAorCQkJCUUzMUMzMTMxMjUxMUFGRDYwMEU3QTNBMCAvKiBJbnRsQ2FjaGUuY3Bw
ICovLAorCQkJCUUzMUMzMTMwMjUxMUFGRDYwMEU3QTNBMCAvKiBJbnRsQ2FjaGUuaCAqLywKKwkJ
CQlBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLywKKwkJCQlB
MUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8sCisJCQkJQTFCOUUy
MzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJ
CQlBMUI5RTIzNjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAq
LywKKwkJCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJv
dG90eXBlLmggKi8sCisJCQkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdC5jcHAgKi8sCisJCQkJQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5oICovLAorCQkJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJRTM3NTBDQzcy
NTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLywKKwkJCQlB
MTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cCAqLywKKwkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmggKi8sCisJCQkJRTM1M0MxMTYyNEFBNENCNTAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXMuY3BwICovLAorCQkJCUUzNTNDMTE3MjRBQTRDQjYwMDNGQkRGMyAvKiBJbnRsRGlz
cGxheU5hbWVzLmggKi8sCisJCQkJRTM1M0MxMUEyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYz
IC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNTNDMTE5MjRBQTRD
QjYwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzUz
QzExQjI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5oICovLAor
CQkJCUUzMThDQTY5MjU0NDA2QjUwMDREQzEyOSAvKiBJbnRsTGlzdEZvcm1hdC5jcHAgKi8sCisJ
CQkJRTMxOENBNjYyNTQ0MDZCNDAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0LmggKi8sCisJCQkJ
RTMxOENBNkEyNTQ0MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0b3IuY3Bw
ICovLAorCQkJCUUzMThDQTY1MjU0NDA2QjQwMDREQzEyOSAvKiBJbnRsTGlzdEZvcm1hdENvbnN0
cnVjdG9yLmggKi8sCisJCQkJRTMxOENBNjgyNTQ0MDZCNTAwNERDMTI5IC8qIEludGxMaXN0Rm9y
bWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzE4Q0E2NzI1NDQwNkI1MDA0REMxMjkgLyogSW50
bExpc3RGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlBM0FGRjkyRDI0NUEzQ0ZBMDBDOUJBM0Ig
LyogSW50bExvY2FsZS5jcHAgKi8sCisJCQkJQTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIElu
dGxMb2NhbGUuaCAqLywKKwkJCQlBM0FGRjkyRjI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2Fs
ZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50
bExvY2FsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNBRkY5MkUyNDVBM0NGQjAwQzlCQTNCIC8q
IEludGxMb2NhbGVQcm90b3R5cGUuY3BwICovLAorCQkJCUEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEz
QiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CUUzMjMxMTY4MjRBMURDMkYwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oICov
LAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oICovLAorCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRs
T2JqZWN0LmNwcCAqLywKKwkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVj
dC5oICovLAorCQkJCTcwOEVCRTIzMUNFOEYzNTAwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5l
cy5oICovLAorCQkJCTdENUZCMThGMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXMu
Y3BwICovLAorCQkJCTdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXMu
aCAqLywKKwkJCQk3RDVGQjE4RTIwNzQ0QkYwMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuY3BwICovLAorCQkJCTdENUZCMTkwMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3Rvci5oICovLAorCQkJCTdENUZCMTkxMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwICovLAorCQkJCTdENUZCMThEMjA3NDRBRTgw
MDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCAqLywKKwkJCQlBM0JGODg0RjI0
NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgKi8sCisJCQkJQTNC
Rjg4NTAyNDQ4MEJFMTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCAqLywKKwkJ
CQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlBM0JGODg0RTI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNCRjg4NEIyNDQ4MEJERTAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAorCQkJCUEzQkY4
ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCisJCQkJRTMwNzE3ODAyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuY3BwICov
LAorCQkJCUUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi8sCisJ
CQkJRTMwNzE3ODIyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJRTMwNzE3N0QyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5oICovLAorCQkJCUUzMDcxNzdFMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRsU2VnbWVu
dGVyUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzA3MTc3RjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50
bFNlZ21lbnRlclByb3RvdHlwZS5oICovLAorCQkJCUUzRjIxOTMwMjRDNzg4MjkwMDNBRTQ1MyAv
KiBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcCAqLywKKwkJCQlFM0YyMTkzMTI0Qzc4ODI5MDAzQUU0
NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovLAorCQkJCUUzRjIxOTM1MjRDNzg4MkEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFM0YyMTky
RjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovLAor
CQkJCUUzRjIxOTM0MjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuY3BwICovLAorCQkJ
CUUzRjIxOTMzMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuaCAqLywKKwkJCQlFM0Yy
MTkzMjI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcCAqLywKKwkJ
CQlFM0YyMTkzNjI0Qzc4ODJCMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmggKi8s
CisJCQkJQTM3NjE5NDAyNjI1MTI3QzAwQ0JDQkE5IC8qIEludGxXb3JrYXJvdW5kLmNwcCAqLywK
KwkJCQlBMzIxQUE2QzI2MjYzNTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91bmQuaCAqLywKKwkJ
CQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLywKKwkJCQk4NkJG
NjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCisJCQkJQTM4Q0E1OUIyNkRE
ODRERTAwQzhEODRDIC8qIElTTzg2MDEuY3BwICovLAorCQkJCUEzOENBNTlDMjZERDg0REUwMEM4
RDg0QyAvKiBJU084NjAxLmggKi8sCisJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0
ZXJhdGlvbktpbmQuaCAqLywKKwkJCQlGRTRENTVCNzFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0
aW9uU3RhdHVzLmggKi8sCisJCQkJNzAxMTNENDkxQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJhdG9y
T3BlcmF0aW9ucy5jcHAgKi8sCisJCQkJNzAxMTNENEExQThEQjA5MzAwMzg0OEM0IC8qIEl0ZXJh
dG9yT3BlcmF0aW9ucy5oICovLAorCQkJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJNzBEQzNFMDgxQjJERjJDNzAwMDU0Mjk5IC8qIEl0
ZXJhdG9yUHJvdG90eXBlLmggKi8sCisJCQkJOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4IC8qIEpT
QXJyYXkuY3BwICovLAorCQkJCTkzODc3MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0FycmF5Lmgg
Ki8sCisJCQkJMEYyQjY2QjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuY3BwICov
LAorCQkJCTBGMkI2NkI1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyLmggKi8sCisJ
CQkJMEYyQjY2QjYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJMEYyQjY2QjcxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5oICovLAorCQkJCTBGMkI2NkI4MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcCAqLywKKwkJCQkwRjJCNjZCOTE3QjZCNUFCMDBBN0FFM0YgLyogSlNB
cnJheUJ1ZmZlclByb3RvdHlwZS5oICovLAorCQkJCUEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAv
KiBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovLAorCQkJCTBGMkI2NkJBMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgKi8sCisJCQkJMEYyQjY2QkIxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8sCisJCQkJMEYyQjY2QkMxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oICovLAorCQkJCTUzOUZC
OEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovLAorCQkJCTUzOUREN0Yz
MjNDMUJCQTkwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAorCQkJCTUzOUREN0Y0
MjNDMUJCQTkwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJCQk1QjcwQ0ZEOTFE
QjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLywKKwkJCQk1QjcwQ0ZEODFE
QjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCisJCQkJRTM5RkVCRTEyMzM5
QzVENDAwQjQwQUIwIC8qIEpTQXN5bmNHZW5lcmF0b3IuY3BwICovLAorCQkJCUUzOUZFQkUyMjMz
OUM1RDQwMEI0MEFCMCAvKiBKU0FzeW5jR2VuZXJhdG9yLmggKi8sCisJCQkJOEJDMDY0ODcxRTFB
NTgzRjAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8sCisJCQkJOEJD
MDY0ODgxRTFBNTg0MDAwQjJCOENBIC8qIEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oICovLAor
CQkJCTg2ODkyMUMzMUY5QzI5NDcwMDExNTlGNiAvKiBKU0JpZ0ludC5jcHAgKi8sCisJCQkJODY4
OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi8sCisJCQkJODZGQTlFOEYxNDJC
QkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCisJCQkJODZGQTlFOTAxNDJC
QkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAorCQkJCTY1N0NGNDU2MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCisJCQkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFD
QkYyIC8qIEpTQ2FsbGVlLmggKi8sCisJCQkJNTNCNjAxRUIyMDM0QjhDNTAwNkJFNjY3IC8qIEpT
Q2FzdC5oICovLAorCQkJCUZFNDhCRDQzMjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuY3Bw
ICovLAorCQkJCUZFNDhCRDQyMjMyNDVFODcwMEYxMzZEMCAvKiBKU0NDb25maWcuaCAqLywKKwkJ
CQlCQzdGOEZCQTBFMTlEMUVGMDA4NjMyQzAgLyogSlNDZWxsLmNwcCAqLywKKwkJCQlCQzExNjdE
ODBFMTlCQ0M5MDA4MDY2REQgLyogSlNDZWxsLmggKi8sCisJCQkJMEY5NzQ5NkYxNjg3QURFMjAw
QTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCAqLywKKwkJCQkwRjFERDg0OTE4QTk0NUJFMDAyNkYz
RkEgLyogSlNDSW5saW5lcy5oICovLAorCQkJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBK
U0NKU1ZhbHVlLmNwcCAqLywKKwkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNW
YWx1ZS5oICovLAorCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5s
aW5lcy5oICovLAorCQkJCUZFMUUyQzNDMjI0MEMxRUYwMEY2QjcyOSAvKiBKU0NQdHJUYWcuY3Bw
ICovLAorCQkJCUZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCAqLywKKwkJ
CQk4NDMyM0U3RDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAg
Ki8sCisJCQkJODQzMjNFN0MyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24uaCAqLywKKwkJCQk4NDMyM0U3RTI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5jcHAgKi8sCisJCQkJODQzMjNFN0IyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uaCAqLywKKwkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNE
YXRhVmlldy5jcHAgKi8sCisJCQkJMEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZp
ZXcuaCAqLywKKwkJCQkwRjJCNjZCRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAgKi8sCisJCQkJMEYyQjY2QzAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXdQ
cm90b3R5cGUuaCAqLywKKwkJCQk5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0
aC5jcHAgKi8sCisJCQkJOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAq
LywKKwkJCQlDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCAqLywKKwkJCQkwRjdERjEzOTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUuY3BwICovLAorCQkJCTBGN0RGMTNBMUUyOTcxMEUwMDk1OTUxQiAvKiBK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oICovLAorCQkJCUE3QjRBQ0FFMTQ4NEM5
Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oICovLAorCQkJCTUzMDA3NDBDMjJERDZGNjYw
MEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLywKKwkJCQk1MzNEMDc0NjIy
QzJEOUQxMDA0RDJGRTIgLyogSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oICovLAorCQkJCTBGMkI2
NkMxMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oICovLAorCQkJCTBGMkI2NkMy
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oICovLAorCQkJCUY2OTJBODVFMDI1
NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmNwcCAqLywKKwkJCQlGNjkyQTg1RjAyNTU1OTdE
MDFGRjYwRjcgLyogSlNGdW5jdGlvbi5oICovLAorCQkJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4
QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovLAorCQkJCUUzNEY5MzBCMjMyMkQ4ODEwMDJCOERC
NCAvKiBKU0dlbmVyYXRvci5jcHAgKi8sCisJCQkJRTM0RjkzMEMyMzIyRDg4MTAwMkI4REI0IC8q
IEpTR2VuZXJhdG9yLmggKi8sCisJCQkJNzBCNzkxOEMxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24uY3BwICovLAorCQkJCTcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBK
U0dlbmVyYXRvckZ1bmN0aW9uLmggKi8sCisJCQkJMEYyQjY2QzMxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggKi8sCisJCQkJMEYyQjY2QzQxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAqLywKKwkJCQkwRjJC
NjZDNTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaCAqLywKKwkJCQkwRjJCNjZDNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggKi8sCisJCQkJMEYyQjY2QzcxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8sCisJCQkJNTM5MTdFN0Ex
Qjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rp
b25zLmggKi8sCisJCQkJMEYyQjY2QzgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oICovLAorCQkJCTc5N0UwN0E3MUI4RkNGQjkwMDg0
MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJNzk3RTA3QTgx
QjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggKi8sCisJCQkJ
MTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLywKKwkJCQlB
OEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLywKKwkJCQlBNTk0
NTU5MDE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCAqLywK
KwkJCQlBNTk0NTU5MTE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmggKi8sCisJCQkJQkM3NTZGQzYwRTIwMzFCMjAwREU3RDEyIC8qIEpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCAqLywKKwkJCQlCQzc1NkZDNzBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCAqLywKKwkJCQk3OUI4MTk5MjFERDI1Q0Y1MDBEREM3MTQgLyogSlNH
bG9iYWxPYmplY3RJbmxpbmVzLmggKi8sCisJCQkJNTNGMTFGNDIyMDkxNzQ5ODAwRTQxMUE3IC8q
IEpTSW1tdXRhYmxlQnV0dGVyZmx5LmNwcCAqLywKKwkJCQk1M0YxMUY0MDIwOTEzOEQ3MDBFNDEx
QTcgLyogSlNJbW11dGFibGVCdXR0ZXJmbHkuaCAqLywKKwkJCQkwRjJCNjZDQTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNJbnQxNkFycmF5LmggKi8sCisJCQkJMEYyQjY2Q0IxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTSW50MzJBcnJheS5oICovLAorCQkJCTBGMkI2NkM5MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0ludDhBcnJheS5oICovLAorCQkJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsLmggKi8sCisJCQkJRTMzOTcwMDQyMzIxMEUwQTAwQjBBRTIxIC8q
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJbmxpbmVzLmggKi8sCisJCQkJRTMzRjUwN0UxQjg0
MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmNwcCAqLywKKwkJCQlFMzNGNTA3RjFC
ODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCAqLywKKwkJCQlFMzNGNTA3NjFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAgKi8sCisJ
CQkJRTMzRjUwNzcxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IuaCAqLywKKwkJCQlFMzNGNTA3MjFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2VQcm90b3R5cGUuY3BwICovLAorCQkJCUUzM0Y1MDczMUI4NDIxQzAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5oICovLAorCQkJCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRG
QiAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJMTREQTgxOEUwRDk5RkQyMDAw
QjBBNEZCIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmggKi8sCisJCQkJNjVFQTRDOTkwOTJBRjlF
MjAwOTNEODAwIC8qIEpTTG9jay5jcHAgKi8sCisJCQkJNjVFQTRDOUEwOTJBRjlFMjAwOTNEODAw
IC8qIEpTTG9jay5oICovLAorCQkJCUE3MDA4NzNGMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5j
cHAgKi8sCisJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCisJCQkJ
RkVGNUI0MjQyNjI4QTg1MDAwMTZFNzc2IC8qIEpTTWFwSW5saW5lcy5oICovLAorCQkJCUE3NERF
RjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKKwkJCQlBNzRERUY5
MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCTcwMTNDQTg5MUI0
OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5jcHAgKi8sCisJCQkJNzAxM0NBOEExQjQ5MUE5
NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJMTg3OTUxMDYxNEM1NDBG
RkI1NjFDMTI0IC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAqLywKKwkJCQk3N0IyNUNCMkMzMDk0QTky
QTM4RTFEQjMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLywKKwkJCQlFMzE4Q0JCRTFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovLAorCQkJCUUzMThDQkJGMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovLAorCQkJCUUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCisJCQkJRTM5REE0
QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCisJCQkJRTMzRThEMUEx
QjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovLAorCQkJCUUzM0U4
RDFCMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggKi8sCisJCQkJQkMy
MkEzOTgwRTE2RTE0ODAwQUYyMUM4IC8qIEpTT2JqZWN0LmNwcCAqLywKKwkJCQlCQzIyQTM5OTBF
MTZFMTQ4MDBBRjIxQzggLyogSlNPYmplY3QuaCAqLywKKwkJCQkwRjkzMjc1RTFDMjFFRjdGMDBD
RjY1NjQgLyogSlNPYmplY3RJbmxpbmVzLmggKi8sCisJCQkJRTMyRkVBMkIyNzQ0OEYzNjAwRkY0
MUMxIC8qIEpTT05BdG9tU3RyaW5nQ2FjaGUuaCAqLywKKwkJCQlFMzJGRUEyQTI3NDQ4RjM2MDBG
RjQxQzEgLyogSlNPTkF0b21TdHJpbmdDYWNoZUlubGluZXMuaCAqLywKKwkJCQlBN0Y5OTM1RTBG
RDczMjUxMDBBMEIyRDAgLyogSlNPTk9iamVjdC5jcHAgKi8sCisJCQkJQTdGOTkzNUQwRkQ3MzI1
MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCAqLywKKwkJCQk3QzE4NEUxODE3QkVEQkQzMDA3Q0I2
M0EgLyogSlNQcm9taXNlLmNwcCAqLywKKwkJCQk3QzE4NEUxOTE3QkVEQkQzMDA3Q0I2M0EgLyog
SlNQcm9taXNlLmggKi8sCisJCQkJN0MxODRFMjAxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlz
ZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQ
cm9taXNlQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzE4NEUxQzE3QkVFMjJFMDA3Q0I2M0EgLyog
SlNQcm9taXNlUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3QzE4NEUxRDE3QkVFMjJFMDA3Q0I2M0Eg
LyogSlNQcm9taXNlUHJvdG90eXBlLmggKi8sCisJCQkJMkEwNUFCRDMxOTYxREYyNDAwMzQxNzUw
IC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAgKi8sCisJCQkJMkEwNUFCRDQxOTYxREYy
NDAwMzQxNzUwIC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oICovLAorCQkJCTg2MjU1M0NF
MTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCAqLywKKwkJCQk4NjI1NTNDRjE2MTM2QUE1
MDA5RjE3RDAgLyogSlNQcm94eS5oICovLAorCQkJCTUzNDYzODcyMUU3MEQwMTUwMEYxMkFDMSAv
KiBKU1J1bkxvb3BUaW1lci5jcHAgKi8sCisJCQkJNTM0NjM4NzAxRTcwQ0YzRDAwRjEyQUMxIC8q
IEpTUnVuTG9vcFRpbWVyLmggKi8sCisJCQkJMTQ4NzRBRTExNUVCREU0QTAwMkUzNTg3IC8qIEpT
U2NvcGUuY3BwICovLAorCQkJCTE0ODc0QUUyMTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmgg
Ki8sCisJCQkJMTFDMTk3QzI2MjQ4NDhFREE4NENFRDdGIC8qIEpTU2NyaXB0RmV0Y2hlci5jcHAg
Ki8sCisJCQkJNkJBOTNDOTU5MDQ4NEM1QkFEOTMxNkVBIC8qIEpTU2NyaXB0RmV0Y2hlci5oICov
LAorCQkJCUUzOEQwNjBEMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZldGNoUGFyYW1ldGVy
cy5jcHAgKi8sCisJCQkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmggKi8sCisJCQkJMEY5MTlEMEUxNTdGMzMyNzAwNEE0RTdEIC8qIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuY3BwICovLAorCQkJCTBGOTE5RDBGMTU3RjMzMjcwMDRBNEU3RCAv
KiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggKi8sCisJCQkJQTcyOTlEOUIxN0QxMjgzNzAw
NUY1RkY5IC8qIEpTU2V0LmNwcCAqLywKKwkJCQlBNzI5OUQ5QzE3RDEyODM3MDA1RjVGRjkgLyog
SlNTZXQuaCAqLywKKwkJCQlGRUY1QjQyODI2MjhCNTI0MDAxNkU3NzYgLyogSlNTZXRJbmxpbmVz
LmggKi8sCisJCQkJQTc5MERENjkxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuY3Bw
ICovLAorCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8s
CisJCQkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8sCisJ
CQkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovLAorCQkJCUJD
MDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCisJCQkJRjY5MkE4NjIw
MjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAorCQkJCTcwRUMwRUJDMUFBMEQ3REEwMEI2
QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCAqLywKKwkJCQk3MEVDMEVCRDFBQTBEN0RBMDBC
NkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovLAorCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCisJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFF
RTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCisJCQkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovLAorCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRB
NEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCisJCQkJNzBFQ0E2MDAxQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCAqLywKKwkJCQk3MEVDQTYw
MTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLywKKwkJ
CQkxNDc4OEVFNDIxNTAxQjI4MDBBNTYxQzggLyogSlNUeXBlLmNwcCAqLywKKwkJCQkxNEFCQjQ1
NDA5OUMyQTBGMDBFMkEyNEYgLyogSlNUeXBlLmggKi8sCisJCQkJMEYyQjY2Q0MxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgKi8sCisJCQkJMEYyQjY2Q0Qx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oICovLAorCQkJCTBG
MkI2NkNFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCAqLywK
KwkJCQkwRjJCNjZDRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90eXBlcy5o
ICovLAorCQkJCTBGMkI2NkQwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNwcCAq
LywKKwkJCQkwRjJCNjZEMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oICovLAor
CQkJCTUzNEM0NTdEMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwICovLAorCQkJCTUzNEM0NTdCMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IuaCAqLywKKwkJCQk1M0YyNTZFMTFCODdFMjgwMDBCNEI3NjggLyogSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgKi8sCisJCQkJNTM5MTdFN0MxQjc5MTEwNjAwMEVC
RDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLywKKwkJCQk2NTA3RDI5NzBFODcx
RTRBMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oICovLAorCQkJCTBGMkI2NkQ0MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggKi8sCisJCQkJMEYyQjY2RDUxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVWludDMyQXJyYXkuaCAqLywKKwkJCQkwRjJCNjZEMjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNVaW50OEFycmF5LmggKi8sCisJCQkJMEYyQjY2RDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWlu
dDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJCQlBN0NBM0FFMTE3REE0MUFFMDA2NTM4QUYgLyogSlNX
ZWFrTWFwLmNwcCAqLywKKwkJCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFw
LmggKi8sCisJCQkJRkVGNUI0MjYyNjI4QUJEOTAwMTZFNzc2IC8qIEpTV2Vha01hcElubGluZXMu
aCAqLywKKwkJCQk1MzlCRkJCMTIyQUQzRDhDMDAyM0Y0QzAgLyogSlNXZWFrT2JqZWN0UmVmLmNw
cCAqLywKKwkJCQk1MzlCRkJBRjIyQUQzQ0RDMDAyM0Y0QzAgLyogSlNXZWFrT2JqZWN0UmVmLmgg
Ki8sCisJCQkJNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgKi8sCisJ
CQkJNzA5RkI4NjIxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oICovLAorCQkJCTE0NDI1
NjVGMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5jcHAgKi8sCisJCQkJMTQ0MjU2NjAx
NUVERTk4RDAwNjZBNDlCIC8qIEpTV2l0aFNjb3BlLmggKi8sCisJCQkJNjVDN0ExNzEwQThFQUFD
QjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJNjVDN0ExNzIwQThFQUFD
QjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5oICovLAorCQkJCURDRjNENTY0MUNEMjk0Njgw
MDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwICovLAorCQkJCURDRjNENTY1MUNEMjk0
NjgwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmUuaCAqLywKKwkJCQlEQ0YzRDU2NjFDRDI5
NDY4MDAzRDVDNjUgLyogTGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oICovLAorCQkJCURDRjNE
NTY3MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVydHkuaCAqLywKKwkJCQlEQ0YzRDU2ODFD
RDI5NDY4MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oICovLAorCQkJCTE0OEIxNDFD
MjI1REQxRUEwMEQ2RTk5OCAvKiBMZWFmRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJMTQ4QjE0MTcy
MjVERDFENzAwRDZFOTk4IC8qIExlYWZFeGVjdXRhYmxlLmggKi8sCisJCQkJQTdFMkVBNkEwRkI0
NjBDRjAwNjAxRjA2IC8qIExpdGVyYWxQYXJzZXIuY3BwICovLAorCQkJCUE3RTJFQTY5MEZCNDYw
Q0YwMDYwMUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggKi8sCisJCQkJRjY5MkE4NjgwMjU1NTk3RDAx
RkY2MEY3IC8qIExvb2t1cC5jcHAgKi8sCisJCQkJRjY5MkE4NjkwMjU1NTk3RDAxRkY2MEY3IC8q
IExvb2t1cC5oICovLAorCQkJCTI4ODA2RTIxMTU1RTQ3OEE5M0ZBN0IwMiAvKiBNYWNoaW5lQ29u
dGV4dC5oICovLAorCQkJCUE3MDA4NzM3MTdDQkU4NTMwMEMzRTY0MyAvKiBNYXBDb25zdHJ1Y3Rv
ci5jcHAgKi8sCisJCQkJQTcwMDg3MzgxN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9y
LmggKi8sCisJCQkJQTc0REVGOEQxODJEOTkxNDAwNTIyQzIyIC8qIE1hcEl0ZXJhdG9yUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBNzRERUY4RTE4MkQ5OTE0MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JQ
cm90b3R5cGUuaCAqLywKKwkJCQlBNzAwODczQjE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBNzAwODczQzE3Q0JFOEQzMDBDM0U2NDMgLyogTWFwUHJvdG90eXBl
LmggKi8sCisJCQkJREM2OUFBNjUxQ0Y3QTFFRjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCAq
LywKKwkJCQk4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1bHQuaCAqLywKKwkJ
CQk0MzQwQTQ4MjFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgKi8sCisJCQkJNDM0
MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uaCAqLywKKwkJCQlGNjkyQTg2QTAy
NTU1OTdEMDFGRjYwRjcgLyogTWF0aE9iamVjdC5jcHAgKi8sCisJCQkJRjY5MkE4NkIwMjU1NTk3
RDAxRkY2MEY3IC8qIE1hdGhPYmplY3QuaCAqLywKKwkJCQk5MDIxM0UzQjEyM0E0MEMyMDBENDIy
RjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgKi8sCisJCQkJOTAyMTNFM0MxMjNBNDBDMjAwRDQy
MkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuaCAqLywKKwkJCQk3QzAwOENFNTE4NzYzMUI2MDA5NTVD
MjQgLyogTWljcm90YXNrLmggKi8sCisJCQkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1p
bmltdW1SZXNlcnZlZFpvbmVTaXplLmggKi8sCisJCQkJMTQ3MzQxREQxREMyQ0U5NjAwQUEyOUJB
IC8qIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLywKKwkJCQkxNDczNDFENTFEQzAyRUI5
MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLywKKwkJCQlDRTI3QTNENzIz
NzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50LmNw
cCAqLywKKwkJCQlDRTI3QTNEODIzNzU5QkFDMDA4OTYwNUUgLyogTmFycm93aW5nTnVtYmVyUHJl
ZGljdGlvbkZ1enplckFnZW50LmggKi8sCisJCQkJQkMwMkU5MDgwRTE4MzlEQjAwMEY5Mjk3IC8q
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUJDMDJFOTA5MEUxODM5REIwMDBG
OTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJQkMwMkU5MEEwRTE4MzlE
QjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzAyRTkwQjBF
MTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuaCAqLywKKwkJCQkxNDczNDFE
RTFEQzJDRTk2MDBBQTI5QkEgLyogTmF0aXZlRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJMTQ3MzQx
Q0YxREMwMkRCNDAwQUEyOUJBIC8qIE5hdGl2ZUV4ZWN1dGFibGUuaCAqLywKKwkJCQlGRTE0MDkw
NjIwNTZGM0ZFMDBDRkUzMTggLyogTmF0aXZlRnVuY3Rpb24uaCAqLywKKwkJCQk2NTQ2RjUxRjFB
MzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk2NTQ2RjUy
MDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggKi8sCisJCQkJNjU1MjVG
QzMxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCisJCQkJNjU1
MjVGQzQxQTZERDNCMzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oICovLAorCQkJCUJD
MjY4MEMyMEUxNkQ0RTkwMEEwNkU5MiAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJ
QkMyNjgwQzMwRTE2RDRFOTAwQTA2RTkyIC8qIE51bWJlckNvbnN0cnVjdG9yLmggKi8sCisJCQkJ
RjY5MkE4NzAwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5jcHAgKi8sCisJCQkJRjY5
MkE4NzEwMjU1NTk3RDAxRkY2MEY3IC8qIE51bWJlck9iamVjdC5oICovLAorCQkJCUNFMjdBM0Q5
MjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQuY3BwICovLAor
CQkJCUNFMjdBM0RBMjM3NUE2REMwMDg5NjA1RSAvKiBOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdl
bnQuaCAqLywKKwkJCQlCQzI2ODBDNDBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBl
LmNwcCAqLywKKwkJCQlCQzI2ODBDNTBFMTZENEU5MDBBMDZFOTIgLyogTnVtYmVyUHJvdG90eXBl
LmggKi8sCisJCQkJMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUyIC8qIE51bWVyaWNTdHJpbmdzLmgg
Ki8sCisJCQkJQkMyNjgwQzYwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdENvbnN0cnVjdG9yLmNw
cCAqLywKKwkJCQlCQzI2ODBDNzBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0Q29uc3RydWN0b3Iu
aCAqLywKKwkJCQlFMzc0MTY2RDI2OTEyQkM3MDBDODA3ODkgLyogT2JqZWN0Q29uc3RydWN0b3JJ
bmxpbmVzLmggKi8sCisJCQkJRkU0OEU2MzcxRUIxMThBRDAwNUQ3QTk2IC8qIE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUuY3BwICovLAorCQkJCUZFNDhFNjM2MUVCMTE4OEYwMDVEN0E5NiAvKiBP
YmplY3RJbml0aWFsaXphdGlvblNjb3BlLmggKi8sCisJCQkJRTNDMjk1REMxRUQyQ0JBQTAwRDMw
MTZGIC8qIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50LmggKi8sCisJCQkJ
QkMyNjgwQzgwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJ
QkMyNjgwQzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovLAorCQkJCUY2
OTJBODc3MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKKwkJCQlGNjkyQTg3
ODAyNTU1OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAorCQkJCTBGRTIyOEVBMTQzNkFC
MjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKKwkJCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZD
NDggLyogT3B0aW9ucy5oICovLAorCQkJCUZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRp
b25zTGlzdC5oICovLAorCQkJCTM3QzczOEQxMUVEQjU2NzIwMDNGMkIwQiAvKiBQYXJzZUludC5o
ICovLAorCQkJCUNFMjBCRDAyMjM3RDNBRDQwMDQ2RTUyMCAvKiBQcmVkaWN0aW9uRmlsZUNyZWF0
aW5nRnV6emVyQWdlbnQuY3BwICovLAorCQkJCUNFMjBCRDAxMjM3RDNBRDQwMDQ2RTUyMCAvKiBQ
cmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnQuaCAqLywKKwkJCQk4NkI4NjkwMjI0QjhB
MjA4MDA0ODdDOTUgLyogUHJpdmF0ZUZpZWxkUHV0S2luZC5jcHAgKi8sCisJCQkJODZCODY5MDAy
NEI4OUVBNDAwNDg3Qzk1IC8qIFByaXZhdGVGaWVsZFB1dEtpbmQuaCAqLywKKwkJCQk4Njg5MTZB
OTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKKwkJCQkxNDczNDFERjFEQzJD
RTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAorCQkJCTE0NzM0MUQzMURD
MDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAorCQkJCUE3RkI2MEEzMTAz
RjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAorCQkJCUE3RkI2MDRC
MTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywKKwkJCQk4NjE1OEFC
MjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCisJCQkJNjU0MDBDMTAwQTY5
QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8sCisJCQkJMEZGNzE2OEExNUEz
QjIzMTAwOEY1REFBIC8qIFByb3BlcnR5T2Zmc2V0LmggKi8sCisJCQkJNjU2MjFFNkIwODlFODU5
NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8sCisJCQkJNjU2MjFFNkMwODlFODU5NzAw
NzYwRjM1IC8qIFByb3BlcnR5U2xvdC5oICovLAorCQkJCTBGQjdGMzkwMTVFRDhFMzgwMEYxNjdC
MiAvKiBQcm9wZXJ0eVN0b3JhZ2UuaCAqLywKKwkJCQlBRDFDRjA2ODE2RENBQjJEMDBCOTcxMjMg
LyogUHJvcGVydHlUYWJsZS5jcHAgKi8sCisJCQkJQkM5NTQzN0MwRUJBNzBGRDAwNzJCNkQzIC8q
IFByb3BlcnR5VGFibGUuaCAqLywKKwkJCQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyogUHJv
dGVjdC5oICovLAorCQkJCTBGNzRCOTNBMUY4OTYxNDUwMEI5MzVEMyAvKiBQcm90b3R5cGVLZXku
aCAqLywKKwkJCQk3OUIwMENCODFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNzlCMDBDQjkxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
aCAqLywKKwkJCQk3OUIwMENCQTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICov
LAorCQkJCTc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5oICovLAorCQkJ
CTc5MTYwREJCMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9rZS5jcHAgKi8sCisJCQkJNzkx
NjBEQkMxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmggKi8sCisJCQkJMEY1NzgwQTEx
OEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLywKKwkJCQkwRjBDRDRDMDE1RjFBNjA0MDAz
MkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8sCisJCQkJMTQ3Qjg0NjIwRTZERTZCMTAw
NDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLAorCQkJCUUzM0E5NDkzMjI1NTMyMjkwMEQ0
MkIwNiAvKiBSYW5kb21pemluZ0Z1enplckFnZW50LmNwcCAqLywKKwkJCQlFMzNBOTQ5NDIyNTUz
MjI5MDBENDJCMDYgLyogUmFuZG9taXppbmdGdXp6ZXJBZ2VudC5oICovLAorCQkJCUUzMzYzN0Ez
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLywKKwkJCQlFMzM2MzdBNDFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovLAorCQkJCUY2OTJBODdEMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHAuY3BwICovLAorCQkJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBG
NyAvKiBSZWdFeHAuaCAqLywKKwkJCQlBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuY3BwICovLAorCQkJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5oICovLAorCQkJCTg2Rjc1RUZCMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRSZXN1
bHQuY3BwICovLAorCQkJCTg2Rjc1RUZDMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBDYWNoZWRS
ZXN1bHQuaCAqLywKKwkJCQlCQ0QyMDJCRDBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCUJDRDIwMkJFMEUxNzA2QTcwMDJDN0U4MiAvKiBSZWdFeHBDb25z
dHJ1Y3Rvci5oICovLAorCQkJCUUzMzRDQkIyMjFGRDk2QTgwMDBFQjE3OCAvKiBSZWdFeHBHbG9i
YWxEYXRhLmNwcCAqLywKKwkJCQlFMzM0Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xv
YmFsRGF0YS5oICovLAorCQkJCUUzMjU5NTYzMjFGREEyQzgwMDhFREM5QyAvKiBSZWdFeHBHbG9i
YWxEYXRhSW5saW5lcy5oICovLAorCQkJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdF
eHBJbmxpbmVzLmggKi8sCisJCQkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovLAorCQkJCTg2Rjc1RUZEMTUxQzA2MkYwMDdDOUJBMyAvKiBSZWdFeHBNYXRjaGVzQXJy
YXkuY3BwICovLAorCQkJCTkzQ0VEREZCMEVBOTFFRTYwMDI1OEVCRSAvKiBSZWdFeHBNYXRjaGVz
QXJyYXkuaCAqLywKKwkJCQlGNjkyQTg3QjAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0
LmNwcCAqLywKKwkJCQlGNjkyQTg3QzAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwT2JqZWN0Lmgg
Ki8sCisJCQkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMu
aCAqLywKKwkJCQlCQ0QyMDJCRjBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmNw
cCAqLywKKwkJCQlCQ0QyMDJDMDBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmgg
Ki8sCisJCQkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCAqLywKKwkJCQk4NDkyNUE5QjIyQjMwQ0JBMDBEMURGRkYgLyogUmVnRXhw
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQlGRTlGM0ZCQTI2MTNDODdDMDA2OUU4
OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmNwcCAqLywKKwkJCQlGRTlGM0ZCODI2MTNDNzg4MDA2
OUU4OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmggKi8sCisJCQkJNzBCMEE5RDAxQTlCNjYyMDAw
MDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovLAorCQkJCTUyNzc3M0REMUFBRjgzQUMwMEJERTdF
OCAvKiBSdW50aW1lVHlwZS5jcHAgKi8sCisJCQkJNTJDMDYxMUQxQUE1MUUxQjAwQjRBREJBIC8q
IFJ1bnRpbWVUeXBlLmggKi8sCisJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBs
aW5nQ291bnRlci5jcHAgKi8sCisJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBs
aW5nQ291bnRlci5oICovLAorCQkJCTc5RDVDRDU4MUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGlu
Z1Byb2ZpbGVyLmNwcCAqLywKKwkJCQk3OUQ1Q0Q1OTFDMTEwNkE5MDBDRUNBMDcgLyogU2FtcGxp
bmdQcm9maWxlci5oICovLAorCQkJCTBGRTA1MDFFMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRB
cmd1bWVudHMuY3BwICovLAorCQkJCTBGRTA1MDFGMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRB
cmd1bWVudHMuaCAqLywKKwkJCQkwRkUwNTAyRTFBQUE4MDY5MDBEMzNCMzMgLyogU2NvcGVkQXJn
dW1lbnRzVGFibGUuY3BwICovLAorCQkJCTBGRTA1MDIwMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29w
ZWRBcmd1bWVudHNUYWJsZS5oICovLAorCQkJCTBGRTA1MDIxMUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZU9mZnNldC5jcHAgKi8sCisJCQkJMEZFMDUwMjIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggKi8sCisJCQkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmgg
Ki8sCisJCQkJMTQ3MzQxRTAxREMyQ0U5NjAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuY3Bw
ICovLAorCQkJCTE0NzM0MUNEMURDMDJENzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmgg
Ki8sCisJCQkJODg1MjE1MUE5QzM4NDIzODlCMzIxNUI3IC8qIFNjcmlwdEZldGNoZXIuaCAqLywK
KwkJCQlFMzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgg
Ki8sCisJCQkJQTcyOTlEQTMxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAq
LywKKwkJCQlBNzI5OURBNDE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCAqLywK
KwkJCQlBNzkwREQ2NzE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUE3OTBERDY4MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlw
ZS5oICovLAorCQkJCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUE3Mjk5REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLywK
KwkJCQk4NjAyOTVGRDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8qIFNoYWRvd1JlYWxtQ29uc3Ry
dWN0b3IuaCAqLywKKwkJCQk4NjAyOTVGQjI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1P
YmplY3QuY3BwICovLAorCQkJCTg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bU9iamVjdC5oICovLAorCQkJCTg2MDI5NUZBMjZGQjU1MkMwMDc4RUI2MiAvKiBTaGFkb3dSZWFs
bVByb3RvdHlwZS5jcHAgKi8sCisJCQkJODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtUHJvdG90eXBlLmggKi8sCisJCQkJMEYyQjY2RDYxN0I2QjVBQjAwQTdBRTNGIC8qIFNp
bXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKKwkJCQkwRjJCNjZENzE3QjZCNUFCMDBB
N0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKKwkJCQlGRThDMDMxMTI2
NEE2OTEwMDAxQTQ0QUQgLyogU2xvd1BhdGhGdW5jdGlvbi5oICovLAorCQkJCTBGNUI0QTMyMUM4
NEYwRDYwMEYxQjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCAqLywKKwkJCQk5MzMwM0ZFODBF
NkE3MkI1MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCAqLywKKwkJCQk5MzMwM0ZFQTBFNkE3
MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi8sCisJCQkJNDI1QkExMzM3RTQzNDRFMUIy
NjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovLAorCQkJCTBGMENENEMzMTVGNkI2QjUwMDMyRjFD
MCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLywKKwkJCQkwRkI3RjM5MjE1RUQ4RTM4MDBG
MTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oICovLAorCQkJCTBGM0FDNzUxMTgzRUExMDQw
MDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oICovLAorCQkJCTBGNkRCN0U3MUQ2MTI0QjIwMENE
QkY4RSAvKiBTdGFja0ZyYW1lLmNwcCAqLywKKwkJCQkwRjZEQjdFODFENjEyNEIyMDBDREJGOEUg
LyogU3RhY2tGcmFtZS5oICovLAorCQkJCUE3MzBCNjExMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAgKi8sCisJCQkJQTczMEI2MTAxMjUwMDY4RjAwOUQyNUIxIC8q
IFN0cmljdEV2YWxBY3RpdmF0aW9uLmggKi8sCisJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYw
IC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0
NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MEVDMEVDMDFBQTBEN0RBMDBCNkFB
RkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCTcwRUMwRUMxMUFBMEQ3
REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oICovLAorCQkJCUJDMThDM0My
MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuY3BwICovLAorCQkJCUJDMThDM0MzMEUx
NkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCAqLywKKwkJCQlCQzE4QzNDNTBFMTZFRTMz
MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAqLywKKwkJCQlCQzE4QzNDNjBFMTZFRTMz
MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggKi8sCisJCQkJRTMyNUEzNUYyMjIxMTU4QTAw
NzM0OUExIC8qIFN0cmluZ1Byb3RvdHlwZUlubGluZXMuaCAqLywKKwkJCQk5MzM0NUE4NzEyRDgz
OEM0MDAzMDJCRTMgLyogU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAgKi8sCisJCQkJOTMzNDVB
ODgxMkQ4MzhDNDAwMzAyQkUzIC8qIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCAqLywKKwkJCQlC
Q0RFM0FCMDBFNkM4MkNGMDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCAqLywKKwkJCQlCQ0RFM0FC
MTBFNkM4MkNGMDAxNDUzQTcgLyogU3RydWN0dXJlLmggKi8sCisJCQkJNzk4Njk0MzkxRjhDMEFD
NzAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmNwcCAqLywKKwkJCQk3OTg2OTQzQTFGOEMwQUM4
MDA5MjMyQUUgLyogU3RydWN0dXJlQ2FjaGUuaCAqLywKKwkJCQk3RTRFRTcwRTBFQkI3QTVCMDA1
OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovLAorCQkJCTdFNEVFNzA4MEVCQjc5NjMwMDU5
MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovLAorCQkJCTJBQUFBMzEwMThCRDQ5RDEwMDM5NEND
OCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLywKKwkJCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKKwkJCQkwRkQyQzkyMzE2RDAxRUU5MDBDNzgwM0Yg
LyogU3RydWN0dXJlSW5saW5lcy5oICovLAorCQkJCUMyRjBGMkQwMTZCQUVFRTkwMDE4N0MxOSAv
KiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgKi8sCisJCQkJQzJGRTE4QTMxNkJBRUM0MDAwQUYzMDYx
IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggKi8sCisJCQkJQzIwQkE5MkMxNkJCMUMxNTAwQjNBRUEy
IC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oICovLAorCQkJCUJDOTA0MTQ3MEVCOTI1MDkw
MEZFMjZGQSAvKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCAqLywKKwkJCQlFMzkwMDYyMDIy
MDhCRkMzMDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCAqLywKKwkJCQk3MDVCNDFBMzFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sLmNwcCAqLywKKwkJCQk3MDVCNDFBNDFBNkU1MDFFMDA3MTY3
NTcgLyogU3ltYm9sLmggKi8sCisJCQkJNzA1QjQxQTUxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJv
bENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk3MDVCNDFBNjFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3MDVCNDFBNzFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sT2JqZWN0LmNwcCAqLywKKwkJCQk3MDVCNDFBODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9s
T2JqZWN0LmggKi8sCisJCQkJNzA1QjQxQTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3Rv
dHlwZS5oICovLAorCQkJCURGQkMyQ0E1MjVFNkQ1NzkwMDgxQkREMSAvKiBTeW1ib2xTdHVic0Zv
clNhZmFyaUNvbXBhdGliaWxpdHkubW0gKi8sCisJCQkJMEY5MTlEMjcxNTg1Njc3MDAwNEE0RTdE
IC8qIFN5bWJvbFRhYmxlLmNwcCAqLywKKwkJCQkxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyog
U3ltYm9sVGFibGUuaCAqLywKKwkJCQlFMzlCRjM5ODIyQTIyODhCMDBCRDE4M0UgLyogU3ltYm9s
VGFibGVJbmxpbmVzLmggKi8sCisJCQkJRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmggKi8sCisJCQkJQkRCNEI1RTA5OUNENEMxQkIzQzFDRjA1IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJNzBFQ0E2MDQxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovLAorCQkJCUUzMkQ0REUwMjZE
QUZENDIwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyLmNwcCAqLywKKwkJCQlFMzJENERFMzI2
REFGRDQzMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhci5oICovLAorCQkJCUUzMkQ0REU1MjZE
QUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwICovLAorCQkJ
CUUzMkQ0REU0MjZEQUZENDMwMEQ0NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlFMzJENERFMjI2REFGRDQyMDBENDUzM0EgLyogVGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJRTMyRDRERTEyNkRBRkQ0MjAwRDQ1MzNBIC8qIFRlbXBvcmFs
Q2FsZW5kYXJQcm90b3R5cGUuaCAqLywKKwkJCQlBM0M3RURCMTI2QjBEQjM2MDA0QzM0QzUgLyog
VGVtcG9yYWxEdXJhdGlvbi5jcHAgKi8sCisJCQkJQTNDN0VEQjMyNkIwREIzNzAwNEMzNEM1IC8q
IFRlbXBvcmFsRHVyYXRpb24uaCAqLywKKwkJCQlBM0M3RURCMjI2QjBEQjM3MDA0QzM0QzUgLyog
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBM0M3RURCNDI2QjBEQjM3
MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNDN0VE
QjUyNkIwREIzNzAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwICovLAor
CQkJCUEzQzdFREIwMjZCMERCMzYwMDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmggKi8sCisJCQkJRjZENjdEMzkyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5j
cHAgKi8sCisJCQkJRjZENjdEM0EyNkY5MDJFNTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudC5o
ICovLAorCQkJCUY2RDY3RDNCMjZGOTAyRTYwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5jcHAgKi8sCisJCQkJRjZENjdEM0MyNkY5MDJFNzAwNkUwMzQ5IC8qIFRlbXBvcmFs
SW5zdGFudENvbnN0cnVjdG9yLmggKi8sCisJCQkJRjZENjdEM0QyNkY5MDJFNzAwNkUwMzQ5IC8q
IFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAgKi8sCisJCQkJRjZENjdEM0UyNkY5MDJFODAw
NkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oICovLAorCQkJCUY2RjE1MDFCMjY5
M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5jcHAgKi8sCisJCQkJRjZGMTUwMTgyNjkzRDMz
RDAwNEI5OEVGIC8qIFRlbXBvcmFsTm93LmggKi8sCisJCQkJRjZGMTUwMTkyNjkzRDMzRTAwNEI5
OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmNwcCAqLywKKwkJCQlGNkYxNTAxQTI2OTNEMzNFMDA0Qjk4
RUYgLyogVGVtcG9yYWxPYmplY3QuaCAqLywKKwkJCQlFMzg2RkQ3NzI2RTg2N0I3MDBFNEMyOEIg
LyogVGVtcG9yYWxQbGFpblRpbWUuY3BwICovLAorCQkJCUUzODZGRDc4MjZFODY3QjgwMEU0QzI4
QiAvKiBUZW1wb3JhbFBsYWluVGltZS5oICovLAorCQkJCUUzODZGRDc0MjZFODY3QjcwMEU0QzI4
QiAvKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzg2RkQ3NTI2
RTg2N0I3MDBFNEMyOEIgLyogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CUUzODZGRDc2MjZFODY3QjcwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5j
cHAgKi8sCisJCQkJRTM4NkZENzkyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlLmggKi8sCisJCQkJRTMwRThBNEQyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmUuY3BwICovLAorCQkJCUUzMEU4QTUwMjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3Jh
bFRpbWVab25lLmggKi8sCisJCQkJRTMwRThBNEYyNkRFMkU0NzAwREE0OTE1IC8qIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJRTMwRThBNTEyNkRFMkU0ODAwREE0OTE1
IC8qIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzMEU4QTRDMjZERTJF
NDcwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcCAqLywKKwkJCQlFMzBF
OEE0RTI2REUyRTQ3MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oICovLAor
CQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovLAor
CQkJCTBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLywKKwkJ
CQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi8sCisJCQkJRkUz
NDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLywKKwkJCQkwRjU1OTg5NzE3
Qzg2QzU2MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLywKKwkJCQlDRDFGOUIzQjI3
MEMwQzFBMDA2MTdFQjYgLyogVHlwZWRBcnJheUFkYXB0ZXJzRm9yd2FyZERlY2xhcmF0aW9ucy5o
ICovLAorCQkJCTBGMkI2NkQ4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMu
aCAqLywKKwkJCQkwRjJCNjZEOTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xs
ZXIuY3BwICovLAorCQkJCTBGMkI2NkRBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29u
dHJvbGxlci5oICovLAorCQkJCTBGNEI5NERCMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFycmF5
SW5saW5lcy5oICovLAorCQkJCTBGMkI2NkRCMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
cy5oICovLAorCQkJCTBGMkI2NkRDMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5j
cHAgKi8sCisJCQkJMEYyQjY2REQxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmgg
Ki8sCisJCQkJMEZCN0YzOTExNUVEOEUzODAwRjE2N0IyIC8qIFR5cGVFcnJvci5oICovLAorCQkJ
CTUyQjMxMEZFMTk3NUI0MjQwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNoZS5jcHAgKi8sCisJ
CQkJNTJCMzExMDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi8sCisJ
CQkJMEZGQjZDMzYxQUY0OEREQzAwREIxQkY3IC8qIFR5cGVvZlR5cGUuY3BwICovLAorCQkJCTBG
RkI2QzM3MUFGNDhEREMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmggKi8sCisJCQkJNTJDOTUyQjgx
OUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8sCisJCQkJNTJDOTUyQjYxOUEy
ODk4NTAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5oICovLAorCQkJCTBGMkQ0RERGMTk4MzJEOTEw
MDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuY3BwICovLAorCQkJCTBGMkQ0REUwMTk4MzJEOTEw
MDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLywKKwkJCQkwRjJENERFMzE5ODMyRDkxMDA3
RDRCMTkgLyogVHlwZVNldC5jcHAgKi8sCisJCQkJMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8q
IFR5cGVTZXQuaCAqLywKKwkJCQlBN0E4QUYzMjE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJy
YXkuaCAqLywKKwkJCQk4NjY3MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0
aW9uLmggKi8sCisJCQkJQTdBOEFGMzMxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5Lmgg
Ki8sCisJCQkJQTdBOEFGMzAxN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4QXJyYXkuaCAqLywKKwkJ
CQlBN0E4QUYzMTE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCAqLywKKwkJ
CQkwRkUwNTAyMzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCAqLywKKwkJCQkwRkUw
NTAyNDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggKi8sCisJCQkJRTE4RTNBNTcwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLywKKwkJCQlFMThFM0E1NjBERjkyNzhDMDBEOTBCMzQg
LyogVk0uaCAqLywKKwkJCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmNwcCAqLywKKwkJCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmgg
Ki8sCisJCQkJRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8qIFZNSW5saW5lcy5oICovLAorCQkJ
CUZFNkY1NkRDMUU2NEU5MjAwMEQxNzgwMSAvKiBWTVRyYXBzLmNwcCAqLywKKwkJCQlGRTZGNTZE
RDFFNjRFOTIwMDBEMTc4MDEgLyogVk1UcmFwcy5oICovLAorCQkJCUZFRjVCNDJCMjYyOENCQzgw
MDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oICovLAorCQkJCUZFRDk0RjJCMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8sCisJCQkJRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0IC8q
IFdhdGNoZG9nLmggKi8sCisJCQkJQkNFMkZBRkUyNjA5MTc4MjAwMEE1MTBGIC8qIFdlYWtHQ0hh
c2hUYWJsZS5oICovLAorCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAu
aCAqLywKKwkJCQlBRDg2QTkzRDFBQTREODdDMDAyRkU3N0YgLyogV2Vha0dDTWFwSW5saW5lcy5o
ICovLAorCQkJCUJDRTJGQUZBMjYwOTE2RUYwMDBBNTEwRiAvKiBXZWFrR0NTZXQuaCAqLywKKwkJ
CQlCQ0UyRkFGQzI2MDkxNkZGMDAwQTUxMEYgLyogV2Vha0dDU2V0SW5saW5lcy5oICovLAorCQkJ
CUE3Q0EzQUREMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCUE3Q0EzQURFMTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuaCAqLywK
KwkJCQlFM0EzMkJDNTFGQzgzMTJEMDA3RDdFNzYgLyogV2Vha01hcEltcGwuY3BwICovLAorCQkJ
CUUzQTMyQkM2MUZDODMxMkUwMDdEN0U3NiAvKiBXZWFrTWFwSW1wbC5oICovLAorCQkJCUUzOTNB
REQ3MUZFNzAyQ0MwMDIyRDY4MSAvKiBXZWFrTWFwSW1wbElubGluZXMuaCAqLywKKwkJCQlBN0NB
M0FERjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTdD
QTNBRTAxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBQcm90b3R5cGUuaCAqLywKKwkJCQk1Mzcz
QjRENDIyQURCMzE0MDA4MDM1NzIgLyogV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcCAqLywK
KwkJCQk1Mzk5MzBDNzIyQUQzQjlBMDA1MUNERTIgLyogV2Vha09iamVjdFJlZkNvbnN0cnVjdG9y
LmggKi8sCisJCQkJNTM3M0I0RDMyMkFEOEJGNzAwODAzNTcyIC8qIFdlYWtPYmplY3RSZWZQcm90
b3R5cGUuY3BwICovLAorCQkJCTUzOUJGQkFEMjJBRDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0
UmVmUHJvdG90eXBlLmggKi8sCisJCQkJNzA5RkI4NjMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNzA5RkI4NjQxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyog
V2Vha1NldFByb3RvdHlwZS5oICovLAorCQkJCUNFMjdBM0Q2MjM3NTlCQUMwMDg5NjA1RSAvKiBX
aWRlbmluZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0UyN0EzRDUy
Mzc1OUJBQzAwODk2MDVFIC8qIFdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50Lmgg
Ki8sCisJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAor
CQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8s
CisJCQkpOworCQkJcGF0aCA9IHJ1bnRpbWU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQk4NjAzQ0VGMDE0Qzc1M0VGMDBBRTU5RTMgLyogdG9vbHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUZFMUJEMDFCMUU3MjAwMjEwMDEzNEJD
OSAvKiBDZWxsTGlzdC5jcHAgKi8sCisJCQkJRkUxQkQwMUMxRTcyMDAyMTAwMTM0QkM5IC8qIENl
bGxMaXN0LmggKi8sCisJCQkJRkUxQkQwMjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxl
LmggKi8sCisJCQkJMEY0RjExRTcyMDlCQ0RBMTAwNzA5NjU0IC8qIENvbXBpbGVyVGltaW5nU2Nv
cGUuY3BwICovLAorCQkJCTBGNEYxMUU2MjA5QkNEQTEwMDcwOTY1NCAvKiBDb21waWxlclRpbWlu
Z1Njb3BlLmggKi8sCisJCQkJNTJFRUQ3OTIyNDkyQjg2ODAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxs
b3dsaXN0LmNwcCAqLywKKwkJCQk1MkVFRDc5MzI0OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25B
bGxvd2xpc3QuaCAqLywKKwkJCQlGRTRCRkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25P
dmVycmlkZXMuY3BwICovLAorCQkJCUZFNEJGRjJBMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlv
bk92ZXJyaWRlcy5oICovLAorCQkJCUZFMUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVy
aWZpZXIuY3BwICovLAorCQkJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZp
ZXIuaCAqLywKKwkJCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmNwcCAq
LywKKwkJCQlGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi8sCisJCQkJ
RkVDNTc5NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLywKKwkJCQlG
RTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8sCisJCQkJRkUzODRF
RTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLywKKwkJCQk4NkI1ODIyQzE0RDIy
RjVGMDBBOUMzMDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8sCisJCQkJRkUzMDIyRDAxRTNENzM5
NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwICovLAorCQkJCUZFMzAyMkQxMUUz
RDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggKi8sCisJCQkJODZCNTgyNkEx
NEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovLAorCQkJCUZFMzAyMkQ0MUU0
Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5jcHAgKi8sCisJCQkJRkUzMDIyRDUxRTQyODU2
NzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggKi8sCisJCQkJRkVDNTc5NzIyMzEwNUI0ODAwQkNB
ODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSB0b29sczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTg2RUFDNDhDMEY5M0U4QjkwMDhF
Qzk0OCAvKiB5YXJyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywK
KwkJCQk2NUE5NDYxMzFDOEU5RjIwMDBBNzIwOUEgLyogZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXpl
VW5pY29kZSAqLywKKwkJCQk2NURBOTA0NjFGODcwNTJBMDA5QkM1NDYgLyogZ2VuZXJhdGVZYXJy
VW5pY29kZVByb3BlcnR5VGFibGVzLnB5ICovLAorCQkJCTQ0MkZCRDg1MjE0OUQxRTAwMDczNTE5
QyAvKiBoYXNoZXIucHkgKi8sCisJCQkJQTU3RDIzRUIxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3Vs
YXJFeHByZXNzaW9uLmNwcCAqLywKKwkJCQlBNTdEMjNFQzE4OTFCNTU0MDAzMUM3RkEgLyogUmVn
dWxhckV4cHJlc3Npb24uaCAqLywKKwkJCQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFy
ci5oICovLAorCQkJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXpl
LmggKi8sCisJCQkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVV
Q1MyLmNwcCAqLywKKwkJCQk4NjNDNkQ5QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNh
bGl6ZVVDUzIuanMgKi8sCisJCQkJNjVDNkJFREYyMTEyOEMzQjAwNjg0OUMzIC8qIFlhcnJEaXNh
c3NlbWJsZXIuY3BwICovLAorCQkJCTY1QzZCRUUwMjExMjhDM0IwMDY4NDlDMyAvKiBZYXJyRGlz
YXNzZW1ibGVyLmggKi8sCisJCQkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuY3BwICovLAorCQkJCUUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JD
b2RlLmggKi8sCisJCQkJQTNGRjlCQzYyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5jcHAg
Ki8sCisJCQkJQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5oICovLAorCQkJ
CTg2NzA0QjdEMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwICovLAorCQkJ
CTg2NzA0QjdFMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuaCAqLywKKwkJCQk4
NjcwNEI3RjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgKi8sCisJCQkJODY3MDRCODAx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLywKKwkJCQk2NTNCQzQzRTI2RDAxM0E2MDBE
OEJFMjAgLyogWWFyckpJVFJlZ2lzdGVycy5oICovLAorCQkJCUUzRjBGQzk0MjZBMTFCNEEwMDk5
RkZBMCAvKiBZYXJyTWF0Y2hpbmdDb250ZXh0SG9sZGVyLmggKi8sCisJCQkJODY3MDRCODExMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLywKKwkJCQk4NjcwNEI4MjEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovLAorCQkJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oICovLAorCQkJCTg2NzA0QjQwMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5jcHAgKi8sCisJCQkJODY3MDRCNDExMkRCOEE4MTAwQTlGRTdCIC8q
IFlhcnJTeW50YXhDaGVja2VyLmggKi8sCisJCQkJNjU5Q0RBNTkxRjY3NTA5ODAwRDNFNTNGIC8q
IFlhcnJVbmljb2RlUHJvcGVydGllcy5jcHAgKi8sCisJCQkJNjU5Q0RBNUExRjY3NTA5ODAwRDNF
NTNGIC8qIFlhcnJVbmljb2RlUHJvcGVydGllcy5oICovLAorCQkJKTsKKwkJCW5hbWUgPSB5YXJy
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJODZFQzlEQjMxMzI4REY0NDAw
MkIyQUQ3IC8qIGRmZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTc3QTQyMzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAgKi8s
CisJCQkJQTc3QTQyMzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oICovLAor
CQkJCUE3MDREOEZFMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmgg
Ki8sCisJCQkJMEY1RTBGRDcyMDdDNzI3MTAwOTdGMERFIC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJDbG9iYmVyU3RhdGUuY3BwICovLAorCQkJCTBGNUUwRkQ2MjA3QzcyNzEwMDk3RjBERSAvKiBE
RkdBYnN0cmFjdEludGVycHJldGVyQ2xvYmJlclN0YXRlLmggKi8sCisJCQkJQTcwNEQ4RkYxN0Ew
QkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCisJCQkJ
MEY1NUMxOTMxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwICovLAorCQkJ
CTBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggKi8sCisJCQkJ
MEY0RjExRTkyMDlENDI2MzAwNzA5NjU0IC8qIERGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gu
Y3BwICovLAorCQkJCTBGNEYxMUVBMjA5RDQyNjMwMDcwOTY1NCAvKiBERkdBYnN0cmFjdFZhbHVl
Q2xvYmJlckVwb2NoLmggKi8sCisJCQkJMEZEM0UzRkYxQjYxOEFBRjAwQzgwRTFFIC8qIERGR0Fk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAgKi8sCisJCQkJMEZEM0U0
MDAxQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludC5oICovLAorCQkJCTBGMThEM0NEMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAorCQkJCTBGMThEM0NFMUI1NUE2RTAwMDJDNUM5
RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywKKwkJCQkwRjY2RTE2ODE0
REYzRjEzMDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovLAorCQkJCTBGMUUzQTQzMTUz
NENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggKi8sCisJCQkJMEYyREQ4MEMx
QUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwICovLAor
CQkJCTBGMkREODBEMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmggKi8sCisJCQkJMEYyREQ4MEUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0
aWxpdGllcy5jcHAgKi8sCisJCQkJMEYyREQ4MEYxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3Vt
ZW50c1V0aWxpdGllcy5oICovLAorCQkJCTBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdB
cml0aE1vZGUuY3BwICovLAorCQkJCTBGNDg1MzIwMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0
aE1vZGUuaCAqLywKKwkJCQkwRjA1QzNCMjE2ODNDRjhGMDBCQUY0NUIgLyogREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oICovLAorCQkJCTBGNjM5NDgxMTVFNDgxMTQwMDZBNTk3QyAvKiBE
RkdBcnJheU1vZGUuY3BwICovLAorCQkJCTBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdB
cnJheU1vZGUuaCAqLywKKwkJCQlBN0Q5QTI4RjE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWls
QWJzdHJhY3RTdGF0ZS5jcHAgKi8sCisJCQkJQTdEOUEyOTAxN0EwQkM3NDAwRUUyNjE4IC8qIERG
R0F0VGFpbEFic3RyYWN0U3RhdGUuaCAqLywKKwkJCQkwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEg
LyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLywKKwkJCQkwRjY2NkVDMzE4MzU2NzJCMDBEMDE3RjEg
LyogREZHQXZhaWxhYmlsaXR5LmggKi8sCisJCQkJMEYyQjlDRDYxOUQwQkE3RDAwQjFEMUI1IC8q
IERGR0F2YWlsYWJpbGl0eU1hcC5jcHAgKi8sCisJCQkJMEYyQjlDRDcxOUQwQkE3RDAwQjFEMUI1
IC8qIERGR0F2YWlsYWJpbGl0eU1hcC5oICovLAorCQkJCURDRUUyMjA2MUNFQjk4OTAwMDBDMjM5
NiAvKiBERkdCYWNrd2FyZHNDRkcuaCAqLywKKwkJCQlEQ0VFMjIwNzFDRUI5ODkwMDAwQzIzOTYg
LyogREZHQmFja3dhcmRzRG9taW5hdG9ycy5oICovLAorCQkJCTBGNzE0Q0ExMTZFQTkyRUQwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRjcxNENB
MjE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oICovLAor
CQkJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLywKKwkJ
CQkwRjYyMDE3MDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oICovLAorCQkJCTBG
RDU2NTIyMTZBQjc4MEEwMDE5NzY1MyAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oICovLAorCQkJ
CUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8s
CisJCQkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgg
Ki8sCisJCQkJMEZDM0NDRjUxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggKi8sCisJ
CQkJMEZDM0NDRjYxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oICovLAor
CQkJCTBGQkYxNThBMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldC5jcHAgKi8sCisJCQkJ
MEZDM0NDRjcxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggKi8sCisJCQkJMEZCRjE1
OEIxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovLAorCQkJCTBGQzND
Q0Y5MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0LmggKi8sCisJCQkJMEY4MzY0
QjUxNjRCMEMwRTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oICovLAorCQkJCTg2RUM5
REI0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgKi8sCisJCQkJODZF
QzlEQjUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggKi8sCisJCQkJMEYy
NTZDMzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yLmggKi8sCisJCQkJMEZCREI5QUMxQUIwRkJDNjAwMEI1N0U1IC8qIERGR0NhbGxDcmVh
dGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oICovLAorCQkJCTBGRDgyRTFFMTQx
NzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovLAorCQkJCTBGRDgyRTFGMTQx
NzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLywKKwkJCQkwRkZGQzk0QjE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovLAorCQkJCTBGRkZDOTRDMTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovLAorCQkJCUZFQTNCQkFCMjEyQzk3Q0IwMEU5M0FE
MSAvKiBERkdDRkcuaCAqLywKKwkJCQkwRjNCM0EyNDE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZG
IC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjlEMzY5MjFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCAqLywKKwkJCQkwRjlEMzY5MzFBRTlDQzMz
MDAwRDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmggKi8sCisJCQkJQTc3QTQyMzgxN0EwQkJGRDAw
QThEQjgxIC8qIERGR0Nsb2JiZXJpemUuY3BwICovLAorCQkJCUE3N0E0MjM5MTdBMEJCRkQwMEE4
REI4MSAvKiBERkdDbG9iYmVyaXplLmggKi8sCisJCQkJQTc3QTQyM0ExN0EwQkJGRDAwQThEQjgx
IC8qIERGR0Nsb2JiZXJTZXQuY3BwICovLAorCQkJCUE3N0E0MjNCMTdBMEJCRkQwMEE4REI4MSAv
KiBERkdDbG9iYmVyU2V0LmggKi8sCisJCQkJMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLywKKwkJCQkwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIg
LyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLywKKwkJCQlFMzQ5QTc3RjI0OTFGMTU5MDAxQkEz
MzYgLyogREZHQ29kZU9yaWdpblBvb2wuY3BwICovLAorCQkJCUUzNDlBNzgwMjQ5MUYxNUEwMDFC
QTMzNiAvKiBERkdDb2RlT3JpZ2luUG9vbC5oICovLAorCQkJCTBGMDQzOTZCMUIwM0RDMEIwMDk1
OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNwcCAqLywKKwkJCQkwRjA0Mzk2QzFCMDNEQzBC
MDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5oICovLAorCQkJCTBGQjRCNTFBMTZCNjI3
NzIwMDNGNjk2QiAvKiBERkdDb21tb24uY3BwICovLAorCQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENG
MjQ0MiAvKiBERkdDb21tb24uaCAqLywKKwkJCQkwRkVBMEEyRDE3MEQ0MEJGMDBCQjcyMkMgLyog
REZHQ29tbW9uRGF0YS5jcHAgKi8sCisJCQkJMEZFQTBBMkUxNzBENDBCRjAwQkI3MjJDIC8qIERG
R0NvbW1vbkRhdGEuaCAqLywKKwkJCQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwICovLAorCQkJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAv
KiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oICovLAorCQkJCTBGRUQ2N0I3MUIyNjI1NkQwMDY2
Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwICovLAorCQkJCTBGRUQ2N0I4MUIy
NjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuaCAqLywKKwkJCQlEQ0VF
MjIwODFDRUI5ODkwMDAwQzIzOTYgLyogREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaCAq
LywKKwkJCQkwRkJFMEY2QjE2QzFEQjAxMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHAgKi8sCisJCQkJMEZCRTBGNkMxNkMxREIwMTAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFk
aW5nUGhhc2UuaCAqLywKKwkJCQlBN0Q4OUNFNjE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGlj
YWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgKi8sCisJCQkJQTdEODlDRTcxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuaCAqLywKKwkJCQkwRkZGQzk0RDE0RUY5
MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovLAorCQkJCTBGRkZDOTRFMTRFRjkwOTUw
MEM3MjUzMiAvKiBERkdDU0VQaGFzZS5oICovLAorCQkJCTBGMkZDNzcwMTZFMTJGNkYwMDM4RDk3
NiAvKiBERkdEQ0VQaGFzZS5jcHAgKi8sCisJCQkJMEYyRkM3NzExNkUxMkY2RjAwMzhEOTc2IC8q
IERGR0RDRVBoYXNlLmggKi8sCisJCQkJRTNCRkE1Q0IyMUU4NTNBMDAwOUMwRUJBIC8qIERGR0Rl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcCAqLywKKwkJCQlFM0JGQTVDQzIxRTg1M0EwMDA5QzBF
QkEgLyogREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuaCAqLywKKwkJCQlFM0JGQTVDRDIxRTg1
M0ExMDA5QzBFQkEgLyogREZHRGVzaXJlZEdsb2JhbFByb3BlcnR5LmggKi8sCisJCQkJMEY4RjJC
OTcxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgKi8sCisJCQkJ
MEY4RjJCOTgxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oICovLAor
CQkJCUMyQzBGN0NCMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3Bw
ICovLAorCQkJCUMyQzBGN0NDMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlv
bnMuaCAqLywKKwkJCQkwRkU4NTM0OTE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcCAqLywKKwkJCQkwRkU4NTM0QTE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJl
ZFdhdGNocG9pbnRzLmggKi8sCisJCQkJQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi8sCisJCQkJQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4
IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oICovLAorCQkJCTBGRjQyNzYxMTU5MUExQzkw
MDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwICovLAorCQkJCTBGRjQyNzYyMTU5MUExQzkw
MDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLywKKwkJCQkwRjVBMTI3MTE5MkQ5RkRGMDA4
NzY0QTMgLyogREZHRG9lc0dDLmNwcCAqLywKKwkJCQkwRjVBMTI3MjE5MkQ5RkRGMDA4NzY0QTMg
LyogREZHRG9lc0dDLmggKi8sCisJCQkJRkVDM0EzOUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0Rv
ZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlGRUMzQTNBMDI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9l
c0dDQ2hlY2suaCAqLywKKwkJCQkwRkQ4MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5h
dG9ycy5oICovLAorCQkJCTBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oICovLAorCQkJCTBGRDNDODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIu
Y3BwICovLAorCQkJCTBGRDNDODIyMTQxMTVEMEUwMEZEODFDQiAvKiBERkdEcml2ZXIuaCAqLywK
KwkJCQkwRkI0QjUxQjE2QjYyNzcyMDAzRjY5NkIgLyogREZHRWRnZS5jcHAgKi8sCisJCQkJMEY2
NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLywKKwkJCQlBN0Q5QTI5MTE3QTBC
Qzc0MDBFRTI2MTggLyogREZHRWRnZURvbWluYXRlcy5oICovLAorCQkJCTBGOEYxNDJGMUFERjA5
MDEwMEVENzkyQyAvKiBERkdFcG9jaC5jcHAgKi8sCisJCQkJMEY4RjE0MzAxQURGMDkwMTAwRUQ3
OTJDIC8qIERGR0Vwb2NoLmggKi8sCisJCQkJQTc4QTk3NkMxNzk3MzhCODAwOURGNzQ0IC8qIERG
R0ZhaWxlZEZpbmFsaXplci5jcHAgKi8sCisJCQkJQTc4QTk3NkQxNzk3MzhCODAwOURGNzQ0IC8q
IERGR0ZhaWxlZEZpbmFsaXplci5oICovLAorCQkJCUE3QkZGM0JGMTc5ODY4OTQwMDAyRjQ2MiAv
KiBERkdGaWx0cmF0aW9uUmVzdWx0LmggKi8sCisJCQkJQTc4QTk3NkUxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZpbmFsaXplci5jcHAgKi8sCisJCQkJQTc4QTk3NkYxNzk3MzhCODAwOURGNzQ0IC8q
IERGR0ZpbmFsaXplci5oICovLAorCQkJCTBGMkJEQzEyMTUxQzVENEEwMENEODkxMCAvKiBERkdG
aXh1cFBoYXNlLmNwcCAqLywKKwkJCQkwRjJCREMxMzE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4
dXBQaGFzZS5oICovLAorCQkJCTBGMjAxNzdEMURDQURDMzAwMEVBNTk1MCAvKiBERkdGbG93SW5k
ZXhpbmcuY3BwICovLAorCQkJCTBGMjAxNzdFMURDQURDMzAwMEVBNTk1MCAvKiBERkdGbG93SW5k
ZXhpbmcuaCAqLywKKwkJCQkwRjIwMTc4MTFEQ0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5o
ICovLAorCQkJCTBGOUQzMzk0MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwICov
LAorCQkJCTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLywKKwkJ
CQlBN0Q4OUNFODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuY3BwICovLAorCQkJ
CUE3RDg5Q0U5MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oICovLAorCQkJCTBG
MkREODEwMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdGb3JBbGxLaWxscy5oICovLAorCQkJCTBGNjlD
Qzg2MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5jcHAgKi8sCisJCQkJMEY2OUND
ODcxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVlLmggKi8sCisJCQkJODZFQzlEQjYx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi8sCisJCQkJODZFQzlEQjcx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCAqLywKKwkJCQk4NkVDOURCODEzMjhERjgy
MDAyQjJBRDcgLyogREZHR3JhcGguaCAqLywKKwkJCQkwRjJGQ0NGMjE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovLAorCQkJCTBGMkZDQ0YzMThBNjAwNzAwMDFBMjdG
OCAvKiBERkdHcmFwaFNhZmVwb2ludC5oICovLAorCQkJCTBGQjE3NjVDMTk2QjhGOUUwMDkxMDUy
QSAvKiBERkdIZWFwTG9jYXRpb24uY3BwICovLAorCQkJCTBGQjE3NjVEMTk2QjhGOUUwMDkxMDUy
QSAvKiBERkdIZWFwTG9jYXRpb24uaCAqLywKKwkJCQkwRkIxNEUyMDE4MTI1NzBCMDA5QjZCNEQg
LyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggKi8sCisJCQkJMEZCMTRFMjIxODEzMDk1NTAwOUI2
QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMuaCAqLywKKwkJCQlBNzA0RDkwMDE3
QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwICovLAorCQkJCUE3
MDREOTAxMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oICovLAor
CQkJCTBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovLAor
CQkJCTBGMkJEQzFGMTUxRTgwMzgwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCAqLywKKwkJ
CQkwRjMwMEI3OTE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhh
c2UuY3BwICovLAorCQkJCTBGMzAwQjdBMThBQjFCMTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hl
Y2tDb21iaW5pbmdQaGFzZS5oICovLAorCQkJCTBGODk4RjJGMUIyNzY4OUYwMDgzQTMzQyAvKiBE
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEY4OThGMzAxQjI3
Njg5RjAwODNBMzNDIC8qIERGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmggKi8sCisJ
CQkJMEZDOTdGMzcxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0
aW9uUGhhc2UuY3BwICovLAorCQkJCTBGQzk3RjM4MTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZh
bGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmggKi8sCisJCQkJMEZFQTBBMkYxNzBENDBCRjAw
QkI3MjJDIC8qIERGR0pJVENvZGUuY3BwICovLAorCQkJCTBGRUEwQTMwMTcwRDQwQkYwMEJCNzIy
QyAvKiBERkdKSVRDb2RlLmggKi8sCisJCQkJODZFQzlEQkIxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0pJVENvbXBpbGVyLmNwcCAqLywKKwkJCQk4NkVDOURCQzEzMjhERjgyMDAyQjJBRDcgLyogREZH
SklUQ29tcGlsZXIuaCAqLywKKwkJCQlBNzhBOTc3MDE3OTczOEI4MDA5REY3NDQgLyogREZHSklU
RmluYWxpemVyLmNwcCAqLywKKwkJCQlBNzhBOTc3MTE3OTczOEI4MDA5REY3NDQgLyogREZHSklU
RmluYWxpemVyLmggKi8sCisJCQkJMEZDOTdGMzkxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBS
ZXBsYWNlbWVudC5jcHAgKi8sCisJCQkJMEZDOTdGM0ExODIwMjExOTAwMkM5QjI2IC8qIERGR0p1
bXBSZXBsYWNlbWVudC5oICovLAorCQkJCUE3M0E1MzU4MTc5OUNENUQwMDE3MEMxOSAvKiBERkdM
YXp5SlNWYWx1ZS5jcHAgKi8sCisJCQkJQTczQTUzNTkxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xh
enlKU1ZhbHVlLmggKi8sCisJCQkJNjJBOUEyOUUxQjBCRUQ0ODAwQkQ1NENBIC8qIERGR0xhenlO
b2RlLmNwcCAqLywKKwkJCQk2MkE5QTI5RjFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUu
aCAqLywKKwkJCQlBN0Q5QTI5MjE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCAq
LywKKwkJCQlBN0Q5QTI5MzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggKi8sCisJ
CQkJNzlDNEIxNUIxQkEyMTU4RjAwRkQ1OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2Vy
dmF0aW9uUGhhc2UuY3BwICovLAorCQkJCTc5QzRCMTVDMUJBMjE1OEYwMEZENTkyRSAvKiBERkdM
aXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmggKi8sCisJCQkJQTdEODlDRUMxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgKi8sCisJCQkJQTdE
ODlDRUQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oICovLAor
CQkJCUE3NjdCNUIzMTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25Q
aGFzZS5jcHAgKi8sCisJCQkJQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVI
ZWFkZXJDcmVhdGlvblBoYXNlLmggKi8sCisJCQkJMEY1ODc0RUIxOTRGRUIxMjAwQUFCMkMxIC8q
IERGR01heUV4aXQuY3BwICovLAorCQkJCTBGNTg3NEVDMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdN
YXlFeGl0LmggKi8sCisJCQkJMEYxNzI1RkUxQjQ4NzE5QTAwQUMzQTU1IC8qIERGR01pbmlmaWVk
R3JhcGguY3BwICovLAorCQkJCTBGMkJEQzNEMTUyMjgwMTcwMENEODkxMCAvKiBERkdNaW5pZmll
ZEdyYXBoLmggKi8sCisJCQkJMEZCNEI1MTAxNkIzQTk2NDAwM0Y2OTZCIC8qIERGR01pbmlmaWVk
SUQuaCAqLywKKwkJCQlFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElu
bGluZXMuaCAqLywKKwkJCQkwRjJCREM0QzE1MjI4MTgzMDBDRDg5MTAgLyogREZHTWluaWZpZWRO
b2RlLmNwcCAqLywKKwkJCQkwRjJCREMzRTE1MjI4MDE3MDBDRDg5MTAgLyogREZHTWluaWZpZWRO
b2RlLmggKi8sCisJCQkJMEZGMkNENTkxQjYxQTRGODAwNDk1NUE4IC8qIERGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmNwcCAqLywKKwkJCQkwRkYyQ0Q1QTFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVs
dGlHZXRCeU9mZnNldERhdGEuaCAqLywKKwkJCQlBNzM3ODEwQjE3OTlFQTJFMDA4MTc1MzMgLyog
REZHTmF0dXJhbExvb3BzLmggKi8sCisJCQkJMEZCNEI1MUUxNkI2Mjc3MjAwM0Y2OTZCIC8qIERG
R05vZGUuY3BwICovLAorCQkJCTg2RUNBM0U5MTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmgg
Ki8sCisJCQkJMEYyMDE3ODcxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0cmFjdFZhbHVl
UGFpci5jcHAgKi8sCisJCQkJMEYyMDE3ODgxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0
cmFjdFZhbHVlUGFpci5oICovLAorCQkJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdO
b2RlRmxhZ3MuY3BwICovLAorCQkJCTBGQTU4MUI4MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2Rl
RmxhZ3MuaCAqLywKKwkJCQkwRjIwMTc4MzFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQ
cm9qZWN0aW9uLmNwcCAqLywKKwkJCQkwRjIwMTc4NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZHTm9k
ZUZsb3dQcm9qZWN0aW9uLmggKi8sCisJCQkJMEY1RDA4NUMxQjhDRjk5RDAwMTE0M0I0IC8qIERG
R05vZGVPcmlnaW4uY3BwICovLAorCQkJCTBGMzAwQjc3MThBQjA1MTEwMEE2RDcyRSAvKiBERkdO
b2RlT3JpZ2luLmggKi8sCisJCQkJMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVU
eXBlLmggKi8sCisJCQkJRENFRTIyMEMxQ0VCQUY3MzAwMEMyMzk2IC8qIERGR051bGxBYnN0cmFj
dFN0YXRlLmggKi8sCisJCQkJMEYyQjlDREExOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwICovLAorCQkJCTBGMkI5Q0RCMTlEMEJBN0QwMEIxRDFC
NSAvKiBERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmggKi8sCisJCQkJMEYyQjlDREMx
OUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuY3BwICovLAor
CQkJCTBGMkI5Q0REMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhLmggKi8sCisJCQkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJhdGlvbnMu
Y3BwICovLAorCQkJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRpb25zLmgg
Ki8sCisJCQkJMEY3QzM5RkUxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oICovLAorCQkJ
CUE3RDg5Q0VFMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1Bo
YXNlLmNwcCAqLywKKwkJCQlBN0Q4OUNFRjE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXNQaGFzZS5oICovLAorCQkJCTBGRDgyRTUyMTQxREFFREUwMDE3OUM5NCAv
KiBERkdPU1JFbnRyeS5jcHAgKi8sCisJCQkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERG
R09TUkVudHJ5LmggKi8sCisJCQkJMEZEOEEzMUQxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRkQ4QTMxRTE3RDUxRjU3MDBDQTJD
NDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCAqLywKKwkJCQkwRkMwOTc4RTE0
NkE2RjYzMDBDRjI0NDIgLyogREZHT1NSRXhpdC5jcHAgKi8sCisJCQkJMEZDMDk3NjgxNDY4QTZF
RjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLywKKwkJCQkwRjIzNUJFNzE3MTc4RTczMDA2OTBD
N0YgLyogREZHT1NSRXhpdEJhc2UuY3BwICovLAorCQkJCTBGMjM1QkU4MTcxNzhFNzMwMDY5MEM3
RiAvKiBERkdPU1JFeGl0QmFzZS5oICovLAorCQkJCTY1OTg3RjJDMTY3RkU4NEIwMDNDMkY4RCAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggKi8sCisJCQkJMEY3MDI1QTcxNzE0QjBGODAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgKi8sCisJCQkJMEY3MDI1QTgx
NzE0QjBGODAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oICovLAorCQkJCTBG
MzkyQzg3MUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5jcHAgKi8sCisJCQkJMEYz
OTJDODgxQjQ2MTg4NDAwODQ0NzI4IC8qIERGR09TUkV4aXRGdXp6LmggKi8sCisJCQkJMEZFRkM5
QTcxNjgxQTNCMDAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwICovLAor
CQkJCTBGRUZDOUE4MTY4MUEzQjAwMDU2N0Y1MyAvKiBERkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVy
LmggKi8sCisJCQkJMEY2MjM3OTUxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50b21JbnNlcnRp
b25QaGFzZS5jcHAgKi8sCisJCQkJMEY2MjM3OTYxQUU0NUNBNzAwRDQwMkVBIC8qIERGR1BoYW50
b21JbnNlcnRpb25QaGFzZS5oICovLAorCQkJCTBGRkZDOTRGMTRFRjkwOTUwMEM3MjUzMiAvKiBE
RkdQaGFzZS5jcHAgKi8sCisJCQkJMEZGRkM5NTAxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1BoYXNl
LmggKi8sCisJCQkJMEYyQjlDREUxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNoaWxkcmVuLmNw
cCAqLywKKwkJCQkwRjJCOUNERjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCAq
LywKKwkJCQlBNzhBOTc3MjE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5jcHAgKi8sCisJCQkJ
QTc4QTk3NzMxNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uaCAqLywKKwkJCQlEQzAwMDM5MDE5
RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oICovLAorCQkJCTBG
QkUwRjZEMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3Bw
ICovLAorCQkJCTBGQkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0
aW9uUGhhc2UuaCAqLywKKwkJCQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwICovLAorCQkJCTBGRkZDOTUyMTRFRjkwOTUwMEM3MjUz
MiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oICovLAorCQkJCTBGMkI5Q0UwMTlE
MEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgKi8sCisJCQkJMEYy
QjlDRTExOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggKi8sCisJ
CQkJMEZGQzkyMTUxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovLAor
CQkJCTBGQjE3NjVFMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwICovLAorCQkJ
CTBGQjE3NjVGMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCAqLywKKwkJCQkwRjNB
MUJGNzFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwICovLAor
CQkJCTBGM0ExQkY4MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5o
ICovLAorCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAq
LywKKwkJCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZS5oICovLAorCQkJCTc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0LmNwcCAqLywKKwkJCQk3OTgwQzE2QjFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldC5oICovLAorCQkJCUE3N0E0MjNDMTdBMEJCRkQwMEE4REI4MSAv
KiBERkdTYWZlVG9FeGVjdXRlLmggKi8sCisJCQkJQTc0MTAxN0UxNzlEQUY4MDAwMkVCOEJBIC8q
IERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggKi8sCisJCQkJODZFQ0Ez
RjkxMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLywKKwkJCQkwRjFFM0E2NTE1
M0EyMURGMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovLAorCQkJCTBG
MUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBERkdTbG93UGF0aEdlbmVyYXRvci5oICovLAorCQkJ
CUUzMjJFNUEwMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmNwcCAqLywKKwkJ
CQlFMzIyRTVBMTFEQTY0NDM1MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovLAorCQkJ
CTg2RUM5REMyMTMyOERGODIwMDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5jcHAgKi8sCisJ
CQkJODZFQzlEQzMxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmggKi8sCisJ
CQkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
ICovLAorCQkJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCAqLywKKwkJCQkwRjY4MkZCMDE5QkNCMzY0MDBGQTNCQUQgLyogREZHU1NBQ2FsY3VsYXRv
ci5jcHAgKi8sCisJCQkJMEY2ODJGQjExOUJDQjM2NDAwRkEzQkFEIC8qIERGR1NTQUNhbGN1bGF0
b3IuaCAqLywKKwkJCQlBN0Q4OUNGMDE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcCAqLywKKwkJCQlBN0Q4OUNGMTE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29u
dmVyc2lvblBoYXNlLmggKi8sCisJCQkJMEZDMjBDQjcxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwICovLAorCQkJCTBGQzIwQ0I4MTg1NTZBMzUwMEM5RTk1NCAvKiBE
RkdTU0FMb3dlcmluZ1BoYXNlLmggKi8sCisJCQkJMEY5RkI0RjIxN0ZDQjkxNzAwQ0I2N0Y4IC8q
IERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwICovLAorCQkJCTBGOUZCNEYzMTdGQ0I5MTcwMENCNjdG
OCAvKiBERkdTdGFja0xheW91dFBoYXNlLmggKi8sCisJCQkJMEY0RjI5REQxOEI2QUQxQzAwNTdC
QzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcCAqLywKKwkJ
CQkwRjRGMjlERTE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjdGOTg4OTFEOTU5NkMzMDBGNEYxMkUgLyogREZHU3Rv
cmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmNwcCAqLywKKwkJCQkwRjdGOTg4QTFEOTU5NkMzMDBG
NEYxMkUgLyogREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmggKi8sCisJCQkJMEY5RTMy
NjExQjA1QUIwNDAwODAxRUQ1IC8qIERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCAq
LywKKwkJCQkwRjlFMzI2MjFCMDVBQjA0MDA4MDFFRDUgLyogREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuaCAqLywKKwkJCQkwRkMyMENCMzE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAgKi8sCisJCQkJMEZDMjBDQjQxODUyRTJDNjAwQzlFOTU0IC8q
IERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCAqLywKKwkJCQkwRjg5M0JEQTE5MzZFMjNDMDAx
MjExRjQgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8sCisJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKKwkJCQkw
RjUwQUYzQjE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8s
CisJCQkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgKi8sCisJCQkJ
MEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovLAorCQkJCTBGRDhBMzFG
MTdENTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCAqLywK
KwkJCQkwRkQ4QTMyMDE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5oICovLAorCQkJCTBGRDhBMzIxMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8sCisJCQkJMEZEOEEzMjIxN0Q1MUY1NzAwQ0Ey
QzQwIC8qIERGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJMEZE
OEEzMjMxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTBGRDhBMzI0MTdENTFGNTcwMENBMkM0MCAvKiBE
RkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJ
MEZFNzIxMUIxOTNCOUM1OTAwMzFGNkVEIC8qIERGR1RyYW5zaXRpb24uY3BwICovLAorCQkJCTBG
RTcyMTFDMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmggKi8sCisJCQkJMEY2Mzk0
M0MxNUM3NUYxNDAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwICovLAor
CQkJCTBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmggKi8sCisJCQkJMEZCRTBGNkYxNkMxREIwMTAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhh
c2UuY3BwICovLAorCQkJCTBGQkUwRjcwMTZDMURCMDEwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlv
blBoYXNlLmggKi8sCisJCQkJMEYzNEIxNDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQu
Y3BwICovLAorCQkJCTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmggKi8s
CisJCQkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLywKKwkJ
CQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLywKKwkJCQk1MkM1
NTU2NDIyNEMyQUU3MDA5OUY1Q0MgLyogREZHVmFsdWVSZXBSZWR1Y3Rpb25QaGFzZS5jcHAgKi8s
CisJCQkJNTJDNTU1NjUyMjRDMkFFNzAwOTlGNUNDIC8qIERGR1ZhbHVlUmVwUmVkdWN0aW9uUGhh
c2UuaCAqLywKKwkJCQkwRjJCREM0RTE1MjI4QkU3MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2Uu
Y3BwICovLAorCQkJCTBGMkJEQzQwMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5o
ICovLAorCQkJCTBGMDEyMzMwMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdWYWx1ZVN0cmVuZ3RoLmNw
cCAqLywKKwkJCQkwRjAxMjMzMTE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJlbmd0aC5o
ICovLAorCQkJCTBGRTI1NEY0MUFCREREMjIwMEE3QzZEMiAvKiBERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcCAqLywKKwkJCQkwRkUyNTRGNTFBQkRERDIyMDBBN0M2RDIgLyogREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5oICovLAorCQkJCTBGNkU4NDU5MTkwMzBCRUYwMDU2Mjc0MSAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwICovLAorCQkJCTBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3
QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLywKKwkJCQkwRkREQkZCMjE2NjZFRUQ1MDBD
NTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgKi8sCisJCQkJMEZEREJGQjMx
NjY2RUVENTAwQzU1RkVGIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCAqLywKKwkJCQkw
RjJCREM1MDE1MjI4RkZBMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgKi8sCisJCQkJ
MEYyQkRDNDExNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnQuaCAqLywKKwkJCQkw
RjJCREM0MjE1MjI4MDE3MDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudFN0cmVhbS5jcHAgKi8s
CisJCQkJMEYyQkRDNDMxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0u
aCAqLywKKwkJCQkwRkZGQzk1MzE0RUY5MDk1MDBDNzI1MzIgLyogREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRkZGQzk1NDE0RUY5MDk1MDBDNzI1MzIgLyog
REZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmggKi8sCisJCQkJMEZDOTdGM0IxODIw
MjExOTAwMkM5QjI2IC8qIERGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwICovLAorCQkJ
CTBGQzk3RjNDMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNl
LmggKi8sCisJCQkJNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwICovLAor
CQkJKTsKKwkJCW5hbWUgPSBkZmc7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQk5MzJGQzNDMjA4MjRCQjcwMDA1QjNDNzUgLyogUmVzb3VyY2VzICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBNTNGMUFCRTE4QzkwRUM3MDA3MkVCNkQg
LyogZnJhbWV3b3JrLnNiICovLAorCQkJCTkzMkY1QkQ4MDgyMkExQzcwMDczNjk3NSAvKiBJbmZv
LnBsaXN0ICovLAorCQkJKTsKKwkJCW5hbWUgPSBSZXNvdXJjZXM7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQkJdGFiV2lkdGggPSA0OworCQkJdXNlc1RhYnMgPSAwOworCQl9OworCQk5
NUFCODMxQTBEQTQyQzY5MDBCQzgzRjMgLyogcHJvZmlsZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGRjcyOTkyMTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckJ5dGVjb2RlLmNwcCAqLywKKwkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyog
UHJvZmlsZXJCeXRlY29kZS5oICovLAorCQkJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckJ5dGVjb2Rlcy5jcHAgKi8sCisJCQkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8q
IFByb2ZpbGVyQnl0ZWNvZGVzLmggKi8sCisJCQkJMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8q
IFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgKi8sCisJCQkJMEYxMzkxMjUxNjc3MUMzMDAw
OUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oICovLAorCQkJCTBGRjcyOTk2MTY2
QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uLmNwcCAqLywKKwkJCQkwRkY3Mjk5
NzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oICovLAorCQkJCTBGRjcy
OTk4MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgKi8sCisJ
CQkJMEZGNzI5OTkxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgg
Ki8sCisJCQkJMEZGNzI5OUExNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRl
Y29kZS5jcHAgKi8sCisJCQkJMEZGNzI5OUIxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29t
cGlsZWRCeXRlY29kZS5oICovLAorCQkJCTBGRjcyOTlDMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9m
aWxlckRhdGFiYXNlLmNwcCAqLywKKwkJCQkwRkY3Mjk5RDE2NkFEMzQ3MDAwRjVCQTMgLyogUHJv
ZmlsZXJEYXRhYmFzZS5oICovLAorCQkJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9m
aWxlckV2ZW50LmNwcCAqLywKKwkJCQlEQzYwNUI1QTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmls
ZXJFdmVudC5oICovLAorCQkJCTBGRjcyOTlFMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckV4
ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjE5MENBQTE4OUQ4MkY2MDAwQUU1RjAgLyogUHJv
ZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAgKi8sCisJCQkJMEYxOTBDQUIxODlEODJGNjAwMEFFNUYw
IC8qIFByb2ZpbGVySmV0dGlzb25SZWFzb24uaCAqLywKKwkJCQkwRkY3Mjk5RjE2NkFEMzQ3MDAw
RjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uY3BwICovLAorCQkJCTBGRjcyOUEwMTY2QUQzNDcwMDBG
NUJBMyAvKiBQcm9maWxlck9yaWdpbi5oICovLAorCQkJCTBGRjcyOUExMTY2QUQzNDcwMDBGNUJB
MyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmNwcCAqLywKKwkJCQkwRkY3MjlBMjE2NkFEMzQ3MDAw
RjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5oICovLAorCQkJCTBGQjEwNTg3MTY3NTQ4MkUw
MEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuY3BwICovLAorCQkJCTBGQjEwNTg4MTY3NTQ4MkUw
MEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuaCAqLywKKwkJCQkwRkIxMDU4OTE2NzU0ODJFMDBG
OEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAgKi8sCisJCQkJMEZCMTA1OEExNjc1NDgy
RTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCAqLywKKwkJCQkwRjEzOTEyNjE2Nzcx
QzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgKi8sCisJCQkJMEYx
MzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLywK
KwkJCQlEQzYwNUI1QjFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJVSUQuY3BwICovLAorCQkJ
CURDNjA1QjVDMUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBwcm9maWxlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCQl1c2VzVGFi
cyA9IDA7CisJCX07CisJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMUZFNTFCMTky
MkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oICovLAorCQkJCTBGMkM2M0JGMUU2NjBFQTUw
MEMxMzgzOSAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKKwkJCQk4NjAxNjFERjBG
M0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovLAorCQkJCTBGMzcz
MDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAq
LywKKwkJCQlBRDQxMkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaCAqLywKKwkJCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRB
c3NlbWJsZXIuaCAqLywKKwkJCQlGRTFFMkMzRDIyNDBEMkY2MDBGNkI3MjkgLyogQVJNNjRFQXNz
ZW1ibGVyLmggKi8sCisJCQkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0MyIC8qIEFSTTY0UmVnaXN0
ZXJzLmggKi8sCisJCQkJODZBREQxNDMwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggKi8sCisJCQkJODZBREQxNDMwRkRERUE5ODAwMDZGRkNDIC8qIEFSTXY3UmVnaXN0ZXJzLmgg
Ki8sCisJCQkJMEZBNkYzOTYyMENDQjdBNjAwQTAzRENEIC8qIEFzc2VtYmxlckJ1ZmZlci5jcHAg
Ki8sCisJCQkJOTY4OENCMTMwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICov
LAorCQkJCTQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCAqLywK
KwkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi8sCisJCQkJ
NTIzMzU2MjgyMjVFQjhFOTAwMjY4QkQyIC8qIENQVS5jcHAgKi8sCisJCQkJMEYzMEQ3QkYxRDk1
RDYyRjAwNTMwODlEIC8qIENQVS5oICovLAorCQkJCTBGMzczMDhFMUMwQ0Q2ODUwMDA1MkJGQSAv
KiBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAqLywKKwkJCQk1MjY3Q0Y4MTI0
OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi8sCisJCQkJRTNDQTNBNEIy
NTI3QUIyRTAwNDgwMkJGIC8qIEpJVE9wZXJhdGlvbkxpc3QuY3BwICovLAorCQkJCUUzQ0EzQTRD
MjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggKi8sCisJCQkJNkIyMzYwQ0Qy
NkM2MjUzQzAwNTRBRUVDIC8qIEpJVE9wZXJhdGlvblZhbGlkYXRpb24uaCAqLywKKwkJCQkwRkY0
Mjc1NjE1OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi8sCisJCQkJODZEM0IzQzEx
MDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKKwkJCQkwRkVCM0VDRTE2MjM3RjY3
MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLAorCQkJCTg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAorCQkJCUZFQjEzNzU2MUJCMTFFRUUwMENE
NTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCAqLywKKwkJCQk4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovLAorCQkJCUZFMUUyQzNFMjI0MEQz
MEIwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oICovLAorCQkJCUE3MjkwMDlCMTc5
NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCAqLywKKwkJCQk4NkFERDE0
NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovLAorCQkJCTBGNkRC
N0VCMUQ2MTdEMEYwMENEQkY4RSAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwICovLAorCQkJ
CTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLywK
KwkJCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgg
Ki8sCisJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
ICovLAorCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwICovLAorCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuaCAqLywKKwkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCAqLywKKwkJCQlBN0E0QUUwNzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uY3BwICovLAorCQkJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICovLAorCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAz
MEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovLAorCQkJCTg2QzU2OERG
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi8sCisJCQkJODZDNTY4REYxMUEy
MTNFRTAwMDdGN0ZGIC8qIE1JUFNSZWdpc3RlcnMuaCAqLywKKwkJCQlGRTYzREQ1NTFFQTlCQzVE
MDAxMDNBNjkgLyogUHJpbnRlci5jcHAgKi8sCisJCQkJRkU2M0RENTMxRUE5QjYwRTAwMTAzQTY5
IC8qIFByaW50ZXIuaCAqLywKKwkJCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVD
b250ZXh0LmNwcCAqLywKKwkJCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250
ZXh0LmggKi8sCisJCQkJRkVCNDFDQ0IxRjczMjg0MjAwQzU0ODFFIC8qIFByb2JlRnJhbWUuaCAq
LywKKwkJCQlGRTEwQUFFOTFGNDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgKi8sCisJ
CQkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLywKKwkJCQk5Njg4
Q0IxNDBFRDEyQjRFMDAxRDY0OTkgLyogUmVnaXN0ZXJJbmZvLmggKi8sCisJCQkJRkU1MzNDQTAx
RjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKKwkJCQk5Njg4Q0IxNDBFRDEyQjRF
MDAxRDY0OTIgLyogWDg2XzY0UmVnaXN0ZXJzLmggKi8sCisJCQkJOTY4OENCMTQwRUQxMkI0RTAw
MUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovLAorCQkJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5
MSAvKiBYODZSZWdpc3RlcnMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYXNzZW1ibGVyOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgx
IC8qIGJ5dGVjb2RlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk1MzRFMDM1MjFFNTNCQkE5MDAyMTNGNjQgLyogYWNjZXNzQ2FzZSAqLywKKwkJCQlFM0JG
RDBCOTFEQUY4MDdDMDA2NURFQTIgLyogQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwICovLAor
CQkJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5o
ICovLAorCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKKwkJCQk1MzcwQjRGNDFCRjI1RUEyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICov
LAorCQkJCTc5QTIyODMzMUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuY3BwICovLAor
CQkJCTc5QTIyODM0MUQzNUQ3MUUwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCAqLywKKwkJCQkw
RjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8s
CisJCQkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCAqLywKKwkJCQkwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCAq
LywKKwkJCQkwRjYzOTQ1MjE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggKi8sCisJ
CQkJQzJGQ0FFMEMxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAgKi8s
CisJCQkJQzJGQ0FFMEQxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oICov
LAorCQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
Ki8sCisJCQkJRTNEODc3NzExRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmNwcCAq
LywKKwkJCQlFM0Q4Nzc3MjFFNjVDMDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLywK
KwkJCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwICovLAorCQkJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oICovLAorCQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdyYXBoLmggKi8sCisJCQkJNTM2MERBQkIyMzU2QURDQTAwM0Y2QUI4IC8qIEJ5dGVjb2Rl
SW5kZXguY3BwICovLAorCQkJCTUzNjYzRkQ5MjM1NjJGOTAwMDVFQTY4QyAvKiBCeXRlY29kZUlu
ZGV4LmggKi8sCisJCQkJNzA5NEM0REMxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuY3BwICovLAorCQkJCTcwOTRDNEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi8sCisJCQkJMTRCQTc3NTEyMTEwODZBMDAwOEQwQjA1
IC8qIEJ5dGVjb2RlTGlzdC5yYiAqLywKKwkJCQlDMkZDQUUwRTE3QTlDMjRFMDAzNEM3MzUgLyog
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKKwkJCQlDMkZDQUUwRjE3QTlDMjRFMDAz
NEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggKi8sCisJCQkJMEY2NjZFQkUxODM1
NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLywKKwkJ
CQk1M0QzNTQ5NzI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9p
bnQuaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRl
ci5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuaCAqLywKKwkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYu
Y3BwICovLAorCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5o
ICovLAorCQkJCTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8sCisJ
CQkJMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8sCisJCQkJMEYwQjgz
QUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi8sCisJCQkJMEYwQjgzQUYx
NEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovLAorCQkJCTBGOTMzMjkzMTRDQTdE
QzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCisJCQkJMEY5MzMyOTQxNENBN0RD
MTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCisJCQkJNjI3NjczMjExQjY4MEMxRTAw
RkQ5RjJFIC8qIENhbGxNb2RlLmNwcCAqLywKKwkJCQk2Mjc2NzMyMjFCNjgwQzFFMDBGRDlGMkUg
LyogQ2FsbE1vZGUuaCAqLywKKwkJCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZh
cmlhbnQuY3BwICovLAorCQkJCTBGM0I3RTI1MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsVmFyaWFu
dC5oICovLAorCQkJCTg2MjgxRUY1MjVCNjFCMDYwMDM2NzAwNCAvKiBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cy5jcHAgKi8sCisJCQkJODYyODFFRjMyNUI2MUFGMDAwMzY3MDA0IC8qIENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzLmggKi8sCisJCQkJODYyODFFRjEyNUI2MTY1RTAwMzY3MDA0IC8qIENo
ZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5jcHAgKi8sCisJCQkJODYyODFFRUYyNUI2MTYwMDAwMzY3
MDA0IC8qIENoZWNrUHJpdmF0ZUJyYW5kVmFyaWFudC5oICovLAorCQkJCTk2OUEwNzkwMEVEMUQz
QUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAorCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCAqLywKKwkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyog
Q29kZUJsb2NrSGFzaC5jcHAgKi8sCisJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guaCAqLywKKwkJCQkxNDJGMTZFOTIxNTgzQjVFMDAzRDQ5QzkgLyogQ29kZUJs
b2NrSW5saW5lcy5oICovLAorCQkJCTBGQzk3RjJGMTgyMDIwRDcwMDJDOUIyNiAvKiBDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwICovLAorCQkJCTBGQzk3RjMwMTgyMDIwRDcwMDJD
OUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCAqLywKKwkJCQkwRjk2RUJC
MTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAqLywKKwkJCQkwRjhG
OTQ0NTE2Njc2NEVFMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAgKi8sCisJCQkJMEZCRDdFNjcx
NDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLywKKwkJCQkwRjhGOTQzRjE2Njc2MzJE
MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwICovLAorCQkJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oICovLAorCQkJCTBGNkZDNzRFMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21w
bGV4R2V0U3RhdHVzLmNwcCAqLywKKwkJCQkwRjZGQzc0RjE5NjExMEE4MDBFMUQwMkQgLyogQ29t
cGxleEdldFN0YXR1cy5oICovLAorCQkJCTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRh
Rm9ybWF0LmNwcCAqLywKKwkJCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1h
dC5oICovLAorCQkJCTBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURB
QjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLywKKwkJCQlGRTUwNjg2NDFBRTI0NjM5MDAw
OURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggKi8sCisJCQkJNzMxOTBEOTYyNDAwOTM0OTAw
Rjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLywKKwkJCQk3M0FEMDYyODIzRkY2NjI2MDBG
NTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLywKKwkJCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4
REIgLyogRGVsZXRlQnlWYXJpYW50LmNwcCAqLywKKwkJCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4
REIgLyogRGVsZXRlQnlWYXJpYW50LmggKi8sCisJCQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkRE
IC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLywKKwkJCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQg
LyogREZHRXhpdFByb2ZpbGUuaCAqLywKKwkJCQkwRjJFQkJBQTFERURGOTRFMDA5OTAzNjkgLyog
RGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgKi8sCisJCQkJOTY5QTA3OTIwRUQxRDNBRTAwRjFGNjgx
IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuaCAqLywKKwkJCQkxNEFEOTExMjFEQ0E5N0ZEMDAxNEY5
RkUgLyogRXZhbENvZGVCbG9jay5jcHAgKi8sCisJCQkJMTRBRDkxMDYxRENBOTI5NDAwMTRGOUZF
IC8qIEV2YWxDb2RlQmxvY2suaCAqLywKKwkJCQkxNDE0MkU1MjFCNzk2RUREMDBGNEJGNEIgLyog
RXhlY3V0YWJsZUluZm8uaCAqLywKKwkJCQkwRjYwRkU4RDFGRkMzNkZDMDAwMzMyMEEgLyogRXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAgKi8sCisJCQkJMEY2MEZFOEUxRkZDMzZGRDAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKKwkJCQkwRjU2QTFENDE1MDAx
Q0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCisJCQkJMEY1NkExRDExNTAw
MEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdBOTIwQkY2
ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4NUYwMDIy
QjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3MSAvKiBF
eGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8q
IEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCisJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlBIC8q
IEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKKwkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAyOUYgLyog
RXhpdGluZ0pJVFR5cGUuaCAqLywKKwkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUgLyogRXhp
dEtpbmQuY3BwICovLAorCQkJCTBGQjEwNTgzMTY3NTQ4MEMwMEY4QUI2RSAvKiBFeGl0S2luZC5o
ICovLAorCQkJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggKi8sCisJCQkJMTRBNDY4MDkyMTZGQTUzNDAwMEQyQjFBIC8qIEZpdHMuaCAqLywKKwkJCQkw
RjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLywKKwkJ
CQlBRDQyNTI1MjFFNUQwRjIyMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwICovLAorCQkJ
CUFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovLAorCQkJCTE0
QUQ5MTE2MURDQTk3RkQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5jcHAgKi8sCisJCQkJ
MTRBRDkxMDcxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmggKi8sCisJCQkJ
MTQ5OENBRDUyMTRCRjM2RDAwNzEwODc5IC8qIEdldEJ5SWRNZXRhZGF0YS5oICovLAorCQkJCTBG
OTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5jcHAgKi8sCisJCQkJMEY5MzMy
OTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5U3RhdHVzLmggKi8sCisJCQkJNTIwRDk5RjAyMzg4
Q0M3ODAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oICovLAorCQkJCTBGMDMzMkMxMThCMDE3
NjMwMDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuY3BwICovLAorCQkJCTBGMDMzMkMyMThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuaCAqLywKKwkJCQkxNEFEOTEwODFEQ0E5Mjk0MDAxNEY5
RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCisJCQkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJCMTcxIC8qIElD
U3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0
dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGls
cy5jcHAgKi8sCisJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMu
aCAqLywKKwkJCQlBMzhENUJGOTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8s
CisJCQkJQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCAqLywKKwkJCQlF
MzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeVZhcmlhbnQuY3BwICovLAorCQkJCUUzMzA1
RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5VmFyaWFudC5oICovLAorCQkJCTc5MDVCQjY2MUQx
MjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovLAorCQkJCTc5MDVCQjY3MUQxMjA1
MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCAqLywKKwkJCQkxNDhBN0JFRDFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNwcCAqLywKKwkJCQkxNDhBN0JFRTFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggKi8sCisJCQkJMEYyNEU1NTMxN0YwQjcxQzAwQUJC
MjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5jcHAgKi8sCisJCQkJMEYyNEU1NTQxN0YwQjcxQzAw
QUJCMjE3IC8qIElubGluZUNhbGxGcmFtZVNldC5oICovLAorCQkJCTBGQjM5OUJBMjBBRjZCMkEw
MDE3RTIxMyAvKiBJbnN0YW5jZU9mU3RhdHVzLmNwcCAqLywKKwkJCQkwRkIzOTlCQjIwQUY2QjJB
MDAxN0UyMTMgLyogSW5zdGFuY2VPZlN0YXR1cy5oICovLAorCQkJCTBGQjM5OUJDMjBBRjZCMkEw
MDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFudC5jcHAgKi8sCisJCQkJMEZCMzk5QjkyMEFGNkIy
QTAwMTdFMjEzIC8qIEluc3RhbmNlT2ZWYXJpYW50LmggKi8sCisJCQkJMTRBNDY4MEEyMTZGQTUz
NTAwMEQyQjFBIC8qIEluc3RydWN0aW9uLmggKi8sCisJCQkJMTRDQzNCQTEyMTM4QTIzODAwMkQ1
OEI2IC8qIEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLywKKwkJCQkxNENDM0JBMjIxMzhBMjM4MDAy
RDU4QjYgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCAqLywKKwkJCQk1M0Y2QkY2QzFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8sCisJCQkJNTNE
NDFFQzgyM0MwMDgxMDAwQUU5ODRCIC8qIEl0ZXJhdGlvbk1vZGVNZXRhZGF0YS5oICovLAorCQkJ
CUJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovLAorCQkJCUJDRkQ4
QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLywKKwkJCQkwRkI1NDY3ODE0RjVD
NDY4MDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwICovLAorCQkJCTBGQjU0
Njc2MTRGNTlBRDEwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oICovLAorCQkJ
CUUzNjM3RUU4MjM2RTU2QjAwMDk2QkQwQSAvKiBMaW5rVGltZUNvbnN0YW50LmNwcCAqLywKKwkJ
CQlFMzYzN0VFNzIzNkU1NkIwMDA5NkJEMEEgLyogTGlua1RpbWVDb25zdGFudC5oICovLAorCQkJ
CTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwICovLAorCQkJCTUzRkEyQUUwMUNGMzdGM0YwMDIyNzExRCAv
KiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLywKKwkJ
CQkxNEY3OUY2RTIxNkVBRDUwMDAwNDZEMzkgLyogTWV0YWRhdGFUYWJsZS5jcHAgKi8sCisJCQkJ
MTQyRjE2REYyMTU1ODVDODAwM0Q0OUM5IC8qIE1ldGFkYXRhVGFibGUuaCAqLywKKwkJCQkwRkI1
NDY3QzE0RjVDRkQzMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAg
Ki8sCisJCQkJMEZCNTQ2N0ExNEY1QzdENDAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuaCAqLywKKwkJCQkyMEVDQjE1RUZDNTI0NjI0QkMyRjAyRDUgLyogTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZS5jcHAgKi8sCisJCQkJNENFOTc4RTM4NUE4NDk4MTk5MDUyMTUzIC8q
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCAqLywKKwkJCQkxNEFEOTExMzFEQ0E5N0ZEMDAx
NEY5RkUgLyogTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jcHAgKi8sCisJCQkJMTRBRDkxMDkxRENB
OTI5NDAwMTRGOUZFIC8qIE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCAqLywKKwkJCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLywKKwkJCQk3
OUFDMzBGRTFGOTk1MzYzMDA0ODRGRDcgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVz
LmggKi8sCisJCQkJMEZEM0U0MDMxQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uLmNwcCAqLywKKwkJCQkwRkQzRTQwNDFCNjE4QjY2MDBDODBFMUUgLyogT2JqZWN0UHJv
cGVydHlDb25kaXRpb24uaCAqLywKKwkJCQkwRkQzRTQwNTFCNjE4QjY2MDBDODBFMUUgLyogT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwICovLAorCQkJCTBGRDNFNDA2MUI2MThCNjYwMEM4
MEUxRSAvKiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oICovLAorCQkJCTk2OUEwNzk0MEVE
MUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuY3BwICovLAorCQkJCTk2OUEwNzk1MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCAqLywKKwkJCQlGRTY0ODcyRDIxNDFEMDQ4MDBBQjBEM0UgLyogT3Bj
b2RlSW5saW5lcy5oICovLAorCQkJCTE0QTQ2ODBCMjE2RkE1MzUwMDBEMkIxQSAvKiBPcGNvZGVT
aXplLmggKi8sCisJCQkJMEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi8s
CisJCQkJQTcwNDQ3RTkxN0EwQkQ0NjAwRjU4OThFIC8qIE9wZXJhbmRzSW5saW5lcy5oICovLAor
CQkJCUUzNEU2NTc0MjA2NjhFOEUwMEZCODFBQyAvKiBQYXJzZUhhc2guY3BwICovLAorCQkJCUUz
NEU2NTczMjA2NjhFOEQwMEZCODFBQyAvKiBQYXJzZUhhc2guaCAqLywKKwkJCQkwRkY5Q0U3MTFC
OUNENkQwMDA0RURDQTYgLyogUG9seW1vcnBoaWNBY2Nlc3MuY3BwICovLAorCQkJCTBGRjlDRTcy
MUI5Q0Q2RDAwMDRFRENBNiAvKiBQb2x5bW9ycGhpY0FjY2Vzcy5oICovLAorCQkJCTUyMTEzMUY1
MUY4MkJGMTEwMDdDQ0VFRSAvKiBQb2x5UHJvdG9BY2Nlc3NDaGFpbi5jcHAgKi8sCisJCQkJNTIx
MTMxRjYxRjgyQkYxMTAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWluLmggKi8sCisJCQkJ
MEY5ODIwNUQxNkJGRTM3RjAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgKi8sCisJ
CQkJMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5oICovLAor
CQkJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVz
LmggKi8sCisJCQkJMTRBRDkxMTQxRENBOTdGRDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2su
Y3BwICovLAorCQkJCTE0QUQ5MTBBMURDQTkyOTQwMDE0RjlGRSAvKiBQcm9ncmFtQ29kZUJsb2Nr
LmggKi8sCisJCQkJMEZEM0U0MDcxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmNwcCAqLywKKwkJCQkwRkQzRTQwODFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRp
b24uaCAqLywKKwkJCQkwRjE1Q0QyMDFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmNw
cCAqLywKKwkJCQkwRjE1Q0QyMTFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggKi8s
CisJCQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5U3RhdHVzLmNwcCAqLywKKwkJ
CQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlTdGF0dXMuaCAqLywKKwkJCQkwRjkz
QjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlWYXJpYW50LmNwcCAqLywKKwkJCQkwRjkzQjRB
ODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlWYXJpYW50LmggKi8sCisJCQkJMEY5RkM4QzExNEUx
QjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJC
MTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKKwkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3
NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCisJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5
Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKKwkJCQlFMzlFNDQ4RjI3NDhFM0Y4MDBFREQy
QTUgLyogUmVwYXRjaC5jcHAgKi8sCisJCQkJRTM5RTQ0OEUyNzQ4RTNGODAwRUREMkE1IC8qIFJl
cGF0Y2guaCAqLywKKwkJCQlFMzlFNDQ5MDI3NDhFM0Y4MDBFREQyQTUgLyogUmVwYXRjaElubGlu
ZXMuaCAqLywKKwkJCQk4NjVEQTBDOTI1Qjg5NjJBMDA4NzU3NzIgLyogU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzLmNwcCAqLywKKwkJCQk4NjVEQTBDNzI1Qjg5NjBDMDA4NzU3NzIgLyogU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzLmggKi8sCisJCQkJODY1REEwQzYyNUI4OTU5RTAwODc1NzcyIC8qIFNldFBy
aXZhdGVCcmFuZFZhcmlhbnQuY3BwICovLAorCQkJCTg2NURBMEM0MjVCODk1NzQwMDg3NTc3MiAv
KiBTZXRQcml2YXRlQnJhbmRWYXJpYW50LmggKi8sCisJCQkJNTM1MDM1NjQyNzE0N0U1OTAwRUMx
QTdFIC8qIFNvdXJjZUlELmggKi8sCisJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNw
ZWN1bGF0ZWRUeXBlLmNwcCAqLywKKwkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3Bl
Y3VsYXRlZFR5cGUuaCAqLywKKwkJCQkwRkI0MzhBMjE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0
dXJlU2V0LmNwcCAqLywKKwkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJl
U2V0LmggKi8sCisJCQkJMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwICovLAorCQkJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8sCisJCQkJQkNDRjBEMEIwRUYw
QjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCAqLywKKwkJCQlCQ0NGMEQwNzBF
RjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKKwkJCQkwRkExMjY1MzIw
QzhEQjk4MDA0QjBEMTEgLyogU3R1YkluZm9TdW1tYXJ5LmNwcCAqLywKKwkJCQkwRjQ0NzY2RjIw
QzVFMkIyMDA4QjJDMzYgLyogU3R1YkluZm9TdW1tYXJ5LmggKi8sCisJCQkJMEY0QTM4RjcxQzhF
MTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8sCisJCQkJMEY0QTM4RjgxQzhFMTNE
RjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICovLAorCQkJCTBGNDRBN0E4MjBCRjY4NUUwMDIy
QjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAorCQkJCTBGMkQ0REU1MTk4MzJEQUMw
MDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAorCQkJCTBGMkQ0REU2MTk4MzJEQUMwMDdE
NEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLywKKwkJCQkwRjk1MkFCQTFCNDg3QTc3MDBDMzY3QzUg
LyogVHJhY2tlZFJlZmVyZW5jZXMuY3BwICovLAorCQkJCTBGOTUyQUJCMUI0ODdBNzcwMEMzNjdD
NSAvKiBUcmFja2VkUmVmZXJlbmNlcy5oICovLAorCQkJCTBGMkQ0REU3MTk4MzJEQUMwMDdENEIx
OSAvKiBUeXBlTG9jYXRpb24uaCAqLywKKwkJCQlBNzlFNzgxRTE1RUVDQkE4MDA0N0M4NTUgLyog
VW5saW5rZWRDb2RlQmxvY2suY3BwICovLAorCQkJCUE3OUU3ODFGMTVFRUNCQTgwMDQ3Qzg1NSAv
KiBVbmxpbmtlZENvZGVCbG9jay5oICovLAorCQkJCUUzNkI0ODAxMjNFOTU3MzgwMEU0QTY2RSAv
KiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAgKi8sCisJCQkJRTMyQzNDNjgyM0U5NEMx
RTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmggKi8sCisJCQkJMTRBRDkx
MjgxRENBQUFCMDAwMTRGOUZFIC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5jcHAgKi8sCisJCQkJ
MTRBRDkxMUUxRENBOUZBNDAwMTRGOUZFIC8qIFVubGlua2VkRXZhbENvZGVCbG9jay5oICovLAor
CQkJCTE0QUQ5MTJCMURDQUFBQjAwMDE0RjlGRSAvKiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
LmNwcCAqLywKKwkJCQkxNEFEOTExRDFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jay5oICovLAorCQkJCTE0MTQyRTU0MUI3OTczQzAwMEY0QkY0QiAvKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJMTQxNDJFNTAxQjc5NkVDRTAwRjRCRjRC
IC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggKi8sCisJCQkJMTRBRDkxMUMxRENBOUZB
NDAwMTRGOUZFIC8qIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrLmggKi8sCisJCQkJRTMwNjAxMjgy
MjhGOTc4MTAwRkFBQkRGIC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8sCisJCQkJMTQy
RDUyQkUyMTc2Mjk1ODAwMkRCMDg2IC8qIFVubGlua2VkTWV0YWRhdGFUYWJsZS5oICovLAorCQkJ
CTE0MkQ1MkJEMjE3NjI5NTcwMDJEQjA4NiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVz
LmggKi8sCisJCQkJMTRBRDkxMkExRENBQUFCMDAwMTRGOUZFIC8qIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5jcHAgKi8sCisJCQkJMTRBRDkxMUYxRENBOUZBNDAwMTRGOUZFIC8qIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oICovLAorCQkJCTE0QUQ5MTI5MURDQUFBQjAw
MDE0RjlGRSAvKiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY3BwICovLAorCQkJCTE0QUQ5MTIw
MURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCAqLywKKwkJCQkw
Rjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8sCisJCQkJMEYyNEU1
NTcxN0Y3NEVEQjAwQUJCMjE3IC8qIFZhbHVlUmVjb3ZlcnkuY3BwICovLAorCQkJCTBGNDI2QTQ1
MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8sCisJCQkJMEY2QzczNEUxQUM5
Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLywKKwkJCQkwRjZD
NzM0RjFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCAqLywKKwkJ
CQkwRjIwQzI1ODFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCAqLywKKwkJ
CQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCisJCQkJ
MEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAorCQkJCTBGOTE5
RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCisJCQkpOworCQkJcGF0aCA9
IGJ5dGVjb2RlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTk0MDUzRTcx
RkNEQzk0MTAwRDY3QTI3IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5OTJENkExMTFGQkQ0OTFEMDAwMjQ1RjQgLyogRGVwcmVjYXRlZElu
c3BlY3RvclZhbHVlcy5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTk1OUU5MjUxQkQxN0YxRTAwMUFBNDEzIC8qIFNj
cmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUz
NUUwOEM5MjI1NDYwQUIwMERGMDBDQSAvKiBwb3N0cHJvY2Vzcy1oZWFkZXItcnVsZSAqLywKKwkJ
CQk5OURBMDA5NzFCRDU5OEUwMDBGNDU3NUMgLyogd2tidWlsdGlucyAqLywKKwkJCQk5OTU5RTky
NzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5ICovLAorCQkJCTk5NTlFOTJGMUJEMTgxRjYw
MDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLywKKwkJCQk5
OURBMDBBQzFCRDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8sCisJ
CQkJOTk1OUU5MzAxQkQxODFGNjAwMUFBNDEzIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hl
ZXRzLWFuZC1zY3JpcHRzLnB5ICovLAorCQkJCTk5NTlFOTI5MUJEMTdGQTAwMDFBQTQxMyAvKiBq
c21pbi5weSAqLywKKwkJCQk5OURBMDBBRDFCRDU5OTNFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5w
eSAqLywKKwkJCQlBNUVGMTNGNzFGMDczMUI0MDAwRjA0NDIgLyogbWFrZS1qcy1maWxlLWFycmF5
cy5weSAqLywKKwkJCQlFM0U5RjhENTI1RDc1ODJGMDBGOUY4NEIgLyogcHJvY2Vzcy1lbnRpdGxl
bWVudHMuc2ggKi8sCisJCQkJOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRl
bnRzLnB5ICovLAorCQkJCTk5NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNjcmlwdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQk5OURBMDA5NzFCRDU5OEUwMDBGNDU3NUMgLyogd2tidWlsdGlucyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTlEQTAwOTkxQkQ1OTkyNzAwRjQ1
NzVDIC8qIF9faW5pdF9fLnB5ICovLAorCQkJCTk5REEwMDlFMUJENTk5MjcwMEY0NTc1QyAvKiBi
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAwOUYxQkQ1
OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
LnB5ICovLAorCQkJCTQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0
ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi8sCisJCQkJNDEyOTUyNzQxRDJDRjZBQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0
aW9uLnB5ICovLAorCQkJCTk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVD
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovLAorCQkJ
CTQxMjk1Mjc1MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2hl
YWRlci5weSAqLywKKwkJCQk0MTI5NTI3NjFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQk5OURBMDA5QTFCRDU5OTI3
MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovLAorCQkJCTk5REEwMDlCMUJENTk5
MjcwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSAqLywKKwkJCQk5OURBMDA5QzFCRDU5OTI3
MDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovLAorCQkJCTk5REEwMDlEMUJENTk5
MjcwMEY0NTc1QyAvKiB3a2J1aWx0aW5zLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSB3a2J1aWx0
aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTUxM0U1Q0MxODVGQjk5
MjAwN0U5NUFEIC8qIGFnZW50cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQTVDRUVFMTIxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNw
cCAqLywKKwkJCQlBNUNFRUUxMzE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCAq
LywKKwkJCQk5MTI3OEQ1MjIxREVCODI0MDBCNTcxODQgLyogSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAgKi8sCisJCQkJOTEyNzhENTMyMURFQjgyNTAwQjU3MTg0IC8qIEluc3BlY3RvckF1ZGl0QWdl
bnQuaCAqLywKKwkJCQlBNUZEMDA3RjE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmNwcCAqLywKKwkJCQlBNUZEMDA4MDE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9y
Q29uc29sZUFnZW50LmggKi8sCisJCQkJQTU3RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwICovLAorCQkJCUE1N0QyM0U0MTg5MENFQkYwMDMxQzdGQSAv
KiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggKi8sCisJCQkJQTUzMzlFQzQxQkIzOTk5MDAwNTRG
MDA1IC8qIEluc3BlY3RvckhlYXBBZ2VudC5jcHAgKi8sCisJCQkJQTUzMzlFQzUxQkIzOTk5MDAw
NTRGMDA1IC8qIEluc3BlY3RvckhlYXBBZ2VudC5oICovLAorCQkJCUE1MEU0QjVEMTg4MDlERDUw
MDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovLAorCQkJCUE1MEU0QjVFMTg4
MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKKwkJCQlBNTUxNjVE
MDFCREVGREJEMDAzQjc1QzEgLyogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgKi8s
CisJCQkJQTU1MTY1RDExQkRFRkRCRDAwM0I3NUMxIC8qIEluc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuaCAqLywKKwkJCQlBNTU1RkYzQzIxNTlENDFFMDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuY3BwICovLAorCQkJCUE1NTVGRjNEMjE1OUQ0MUUwMEZDRDgyNiAvKiBJbnNwZWN0
b3JUYXJnZXRBZ2VudC5oICovLAorCQkJCTkxMjc4RDU3MjFERURBOTUwMEI1NzE4NCAvKiBKU0ds
b2JhbE9iamVjdEF1ZGl0QWdlbnQuY3BwICovLAorCQkJCTkxMjc4RDU2MjFERURBOTQwMEI1NzE4
NCAvKiBKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQuaCAqLywKKwkJCQlBNTdEMjNFNzE4OTFCMDc3
MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlBNTdE
MjNFODE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi8s
CisJCQkJQTUwRTRCNUYxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmNwcCAqLywKKwkJCQlBNTBFNEI2MDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYWdlbnRzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQTUzMjQzOEUxODU2OTZDRTAwMkVENjkyIC8qIHNj
cmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUM0
NzAzQ0MxMTkyODQ0QTQwMDEzRkJFQSAvKiBjb2RlZ2VuICovLAorCQkJCUM0NzAzQ0JGMTkyODQ0
OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgKi8s
CisJCQkpOworCQkJcGF0aCA9IHNjcmlwdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE1NUQ5M0EzMTg1MDEyQTgwMDQw
MERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovLAorCQkJCUE1NUQ5M0E0MTg1MDEyQTgw
MDQwMERFRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLywKKwkJCQlBNTRDRjJGNzE4NEVBRURB
MDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKKwkJCQlBNTRDRjJGODE4NEVBRURBMDAy
MzdGMTkgLyogU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJQTU0Q0YyRjIxODRFQUIyNDAwMjM3RjE5
IC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKKwkJCQlBNTRDRjJGMzE4NEVBQjI0MDAyMzdGMTkgLyog
U2NyaXB0VmFsdWUuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYmluZGluZ3M7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyogaW5z
cGVjdG9yICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlB
NTEzRTVDQzE4NUZCOTkyMDA3RTk1QUQgLyogYWdlbnRzICovLAorCQkJCUE1RUE3MEUzMTlGNUIw
RTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLywKKwkJCQk5OTQwNTNFNzFGQ0RDOTQxMDBENjdB
MjcgLyogY29jb2EgKi8sCisJCQkJQTUzMjQzOEQxODU2OTZDQTAwMkVENjkyIC8qIHByb3RvY29s
ICovLAorCQkJCUE1QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8sCisJCQkJQTUz
MjQzOEUxODU2OTZDRTAwMkVENjkyIC8qIHNjcmlwdHMgKi8sCisJCQkJNkEzOENGQTcxRTMyQjU4
QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5jcHAgKi8sCisJCQkJNkEzOENGQTgxRTMyQjU4
QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovLAorCQkJCUE1RkQwMDc3MTg5QjA1MTAw
MDYzMzIzMSAvKiBDb25zb2xlTWVzc2FnZS5jcHAgKi8sCisJCQkJQTVGRDAwNzgxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmggKi8sCisJCQkJQTU3RDIzRUYxODkxQjVCNDAwMzFD
N0ZBIC8qIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwICovLAorCQkJCUE1N0QyM0YwMTg5MUI1
QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmggKi8sCisJCQkJQTVGRDAwNzIx
ODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgKi8sCisJCQkJQTVGRDAw
NzMxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5oICovLAorCQkJCUE1MTNF
NUI1MTg1QjhCRDMwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8sCisJCQkJQTUxM0U1
QjYxODVCOEJEMzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0LmggKi8sCisJCQkJQTUxNEIyQzAx
ODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5jcHAgKi8sCisJCQkJQTUxNEIy
QzExODVBNjg0NDAwRjNDN0NCIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovLAorCQkJCUE1OEUz
NTkwMTg2MERFQzcwMDFGMjRGRSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLAorCQkJCUE1
MTNFNUI5MTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLywKKwkJCQlB
NTEzRTVDODE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCAqLywK
KwkJCQlBNTEzRTVDOTE4NUY5NjI0MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgg
Ki8sCisJCQkJQTU4NDBFMUUxODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxl
LmNwcCAqLywKKwkJCQlBNTg0MEUxRjE4N0I3Qjg2MDA4NDNCMTAgLyogSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuaCAqLywKKwkJCQlBNTEzRTVDMzE4NUY5MkM5MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgKi8sCisJCQkJQTU5M0NGN0UxODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50QmFzZS5oICovLAorCQkJCUE1OTNDRjg0MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcCAqLywKKwkJCQlBNTkzQ0Y4NTE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oICovLAorCQkJCUE1OTNDRjdBMTg0MDM2MDMwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgKi8sCisJCQkJQTU5M0NGN0IxODQw
MzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi8sCisJCQkJNUM0
MTk2NjEyMjcwREZGMzAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0
aWJpbGl0eS5jcHAgKi8sCisJCQkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIEluc3BlY3Rv
ckVudmlyb25tZW50LmggKi8sCisJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8qIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAorCQkJCTk5RjFBNkZDMUI4RTZEOTQwMDQ2M0IyNiAv
KiBJbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgKi8sCisJCQkJOTlGMUE3MDAxQjk4RkJFQzAw
NDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmggKi8sCisJCQkJQTU1RDkzQUIxODUx
NEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCAqLywKKwkJCQlGMzQ1OUQ3
NDIzOTczQUJEMDBEQ0QyN0EgLyogSW5zcGVjdG9yVGFyZ2V0LmNwcCAqLywKKwkJCQlBNTU1RkYz
ODIxNTlEMkQ2MDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0LmggKi8sCisJCQkJQTUwM0ZBMTMx
ODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovLAorCQkJCUE1MDNG
QTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8sCisJCQkJQTVD
M0ExQTMxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAg
Ki8sCisJCQkJQTVDM0ExQTQxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudC5oICovLAorCQkJCUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2VyLmNwcCAqLywKKwkJCQlBNTAzRkEyODE4OEYxMDU5MDAxMTBGMTQgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dlci5oICovLAorCQkJCUE1MTAwN0JFMTg3Q0MzQzYwMEIzODg3OSAv
KiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovLAorCQkJCUE1MTAwN0JG
MTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCAq
LywKKwkJCQlBNTEzRTVCQTE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwICovLAorCQkJCUE1MTNFNUJCMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0
SG9zdC5oICovLAorCQkJCUE1MTNFNUJDMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTUxM0U1QkQxODVCRkFDQzAwN0U5NUFEIC8q
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmggKi8sCisJCQkJQTUwM0ZBMTUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCisJCQkJQTUwM0ZBMTYx
ODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAorCQkJCUE1MDNG
QTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuaCAqLywKKwkJCQlBNUFCNDlEQTFCRUM4MDc5MDA3MDIwRkIgLyogUGVyR2xv
YmFsT2JqZWN0V3JhcHBlcldvcmxkLmNwcCAqLywKKwkJCQlBNUFCNDlEQjFCRUM4MDc5MDA3MDIw
RkIgLyogUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkLmggKi8sCisJCQkJQTVGRDAwNjUxODlB
RkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCisJCQkJQTVGRDAwNjYxODlB
RkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAorCQkJCUE1RkQwMDY5MTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAorCQkJCUE1RkQwMDZBMTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKKwkJCQlBNUZEMDA2QjE4OUIwMEE5
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKKwkJCQlBNUZEMDA2QzE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCisJCQkJQTVGRDAwN0IxODlCMEI0QzAw
NjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAorCQkJCUE1RkQwMDdDMTg5
QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IGluc3BlY3RvcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1
QkExNUUwMTgyMzQwOUQwMEE4MkU2OSAvKiByZW1vdGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdBQ0RERUNGMUUyNTJBQ0EwMDk3QUZFQiAvKiBjb2Nv
YSAqLywKKwkJCQk1MzZCMzE5RjFGNzM2OUJEMDAzN0ZDMzMgLyogZ2xpYiAqLywKKwkJCQk5OTJB
QkNGNTFCRUE5NENBMDA2NDAzQTAgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5jcHAgKi8sCisJ
CQkJOTkyQUJDRjYxQkVBOTRDQTAwNjQwM0EwIC8qIFJlbW90ZUF1dG9tYXRpb25UYXJnZXQuaCAq
LywKKwkJCQlBNUJBMTVFNDE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmggKi8sCisJCQkJOTk4RUQ2NzIxQkVENjU5QTAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xs
YWJsZVRhcmdldC5jcHAgKi8sCisJCQkJOTk4RUQ2NzMxQkVENjU5QTAwREQ4MDE3IC8qIFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldC5oICovLAorCQkJCUE1OTQ1NThFMTgyNDVFREUwMENDMzg0MyAv
KiBSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmNwcCAqLywKKwkJCQlBNUJBMTVFRjE4MjM0NUFGMDBB
ODJFNjkgLyogUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oICovLAorCQkJCTk5NTU2Njg1MUU0RThC
MDcwMEFBRTEzQyAvKiBSZW1vdGVJbnNwZWN0b3IuY3BwICovLAorCQkJCUE1QkExNUUxMTgyMzQw
QjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCAqLywKKwkJCQlBNUJBMTVFMzE4MjM0MEIz
MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmggKi8sCisJCQkJOTlBMzI3Mzgy
NUM5Q0JFRTAwREE4Q0FGIC8qIFNvdXJjZXNDb2NvYS50eHQgKi8sCisJCQkpOworCQkJcGF0aCA9
IHJlbW90ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1RUE3MEUzMTlG
NUIwRTIwMDk4RjVFQyAvKiBhdWdtZW50YWJsZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTVFQTcwRTYxOUY1QjEwMTAwOThGNUVDIC8qIEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50LmggKi8sCisJCQkJQTVFQTcwRTQxOUY1QjEwMTAwOThGNUVDIC8q
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1RUE3MEU1MTlGNUIx
MDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gYXVnbWVudGFibGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDRjlCQzU4MUI2NUQ5QTMw
MDlEQjFFRiAvKiBBcnJheUNvbnN0cnVjdG9yLmpzICovLAorCQkJCTdDRjlCQzU5MUI2NUQ5QTMw
MDlEQjFFRiAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUEwMTg4
MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3RvdHlwZS5qcyAqLywKKwkJCQk4QjE3MzVFRjFFOTJF
NTI5MDAzNjkwNTQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAorCQkJ
CTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzICov
LAorCQkJCThCQzA2NDgyMUUxODBCNEEwMEIyQjhDQSAvKiBBc3luY0dlbmVyYXRvclByb3RvdHlw
ZS5qcyAqLywKKwkJCQk4QkMwNjQ5NTFFMUQ4MzhCMDBCMkI4Q0EgLyogQXN5bmNJdGVyYXRvclBy
b3RvdHlwZS5qcyAqLywKKwkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKKwkJCQlERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZD
MzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAw
MjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJCUUzODBENjZCMUYxOTI0OUQw
MEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3BwICovLAorCQkJCUE3NUVFOUIwMThBQUI3RTIwMEFB
RDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLywKKwkJCQk0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggKi8sCisJCQkJQTFGRTFFQjAxQzJDNTM3RTAwQTI4OUZGIC8qIERh
dGVQcm90b3R5cGUuanMgKi8sCisJCQkJQTdBOTc5QzQxOEJFOEQ5RTAwMkMzNzMzIC8qIEZ1bmN0
aW9uUHJvdG90eXBlLmpzICovLAorCQkJCTcwQjc5MThGMUMwMjQ0RUMwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUuanMgKi8sCisJCQkJN0NGOUJDNUExQjY1RDlBMzAwOURCMUVGIC8qIEds
b2JhbE9iamVjdC5qcyAqLywKKwkJCQlBNTI3MDQ4NTFEMDI3Qzg4MDAzNTRDMzcgLyogR2xvYmFs
T3BlcmF0aW9ucy5qcyAqLywKKwkJCQlFMzNGNTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCisJCQkJNTM0RDlCRjkyMzYzQzU1RDAwNTQ1MjRE
IC8qIEl0ZXJhdG9ySGVscGVycy5qcyAqLywKKwkJCQk3Q0Y5QkM1QjFCNjVEOUEzMDA5REIxRUYg
LyogSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCisJCQkJNTM0RDlCRkEyMzYzQzU1RDAwNTQ1MjRE
IC8qIE1hcEl0ZXJhdG9yUHJvdG90eXBlLmpzICovLAorCQkJCTcwMzU1ODdDMUM0MTg0MTkwMDRC
RDdCRiAvKiBNYXBQcm90b3R5cGUuanMgKi8sCisJCQkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0Yw
IC8qIE1vZHVsZUxvYWRlci5qcyAqLywKKwkJCQlBNTI3MDQ4NjFEMDI3Qzg4MDAzNTRDMzcgLyog
TnVtYmVyQ29uc3RydWN0b3IuanMgKi8sCisJCQkJN0NGOUJDNUMxQjY1RDlCMTAwOURCMUVGIC8q
IE9iamVjdENvbnN0cnVjdG9yLmpzICovLAorCQkJCTdDRjlCQzVFMUI2NUQ5QjEwMDlEQjFFRiAv
KiBQcm9taXNlQ29uc3RydWN0b3IuanMgKi8sCisJCQkJN0NGOUJDNUQxQjY1RDlCMTAwOURCMUVG
IC8qIFByb21pc2VPcGVyYXRpb25zLmpzICovLAorCQkJCTdDRkJBQzFDMThCNTM1RTUwMEQwMDc1
MCAvKiBQcm9taXNlUHJvdG90eXBlLmpzICovLAorCQkJCTdDRjlCQzVGMUI2NUQ5QjEwMDlEQjFF
RiAvKiBSZWZsZWN0T2JqZWN0LmpzICovLAorCQkJCTY1NDc4ODQyMUM5MzdEMkMwMDA3ODFBMCAv
KiBSZWdFeHBQcm90b3R5cGUuanMgKi8sCisJCQkJODQ5MjVBOUMyMkIzMENDODAwRDFERkZGIC8q
IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzICovLAorCQkJCTUzNEQ5QkY4MjM2M0M1
NUQwMDU0NTI0RCAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKKwkJCQk3MDM1NTg3RDFD
NDE4NDE5MDA0QkQ3QkYgLyogU2V0UHJvdG90eXBlLmpzICovLAorCQkJCTdDRjlCQzYwMUI2NUQ5
QjEwMDlEQjFFRiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5qcyAqLywKKwkJCQk3Q0Y5QkM2MTFCNjVE
OUIxMDA5REIxRUYgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCisJCQkJQTFFMDQ1
MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLywKKwkJCQk1MzRDNDU3
QTFCQzcwM0RDMDA3NDc2QTcgLyogVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzICovLAorCQkJCTUz
OTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovLAorCQkJ
CUUzOUUwMzBEMjJEOUVBM0UwMDQwOEMxOCAvKiBXZWJBc3NlbWJseS5qcyAqLywKKwkJCSk7CisJ
CQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlB
RDJGQ0I4QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUFEOERENkQwMUY2NzA4QTMwMDA0RUI1MiAvKiBKU1RvV2Fz
bS5jcHAgKi8sCisJCQkJQUQ4REQ2Q0YxRjY3MDg5RjAwMDRFQjUyIC8qIEpTVG9XYXNtLmggKi8s
CisJCQkJNTI3Q0UzNTIyMjU1NUZERDAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuY3BwICov
LAorCQkJCTUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAvKiBKU1RvV2FzbUlDQ2FsbGVlLmggKi8s
CisJCQkJQUREMDlBRjIxRjYyNDgyOTAwMTMxM0MyIC8qIEpTV2ViQXNzZW1ibHkuY3BwICovLAor
CQkJCUFERDA5QUYzMUY2MjQ4MkUwMDEzMTNDMiAvKiBKU1dlYkFzc2VtYmx5LmggKi8sCisJCQkJ
QUQyRkNCQTYxREI1OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3Bw
ICovLAorCQkJCUFEMkZDQkE3MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGls
ZUVycm9yLmggKi8sCisJCQkJMTREMDFCREMyNkRFRUYzNzAwQ0FFMEQwIC8qIEpTV2ViQXNzZW1i
bHlFeGNlcHRpb24uY3BwICovLAorCQkJCTE0RDAxQkUxMjZERUVGMzgwMENBRTBEMCAvKiBKU1dl
YkFzc2VtYmx5RXhjZXB0aW9uLmggKi8sCisJCQkJRTNCRjNDNEMyMzkwRDFFMzAwOEJDNzUyIC8q
IEpTV2ViQXNzZW1ibHlHbG9iYWwuY3BwICovLAorCQkJCUUzQkYzQzRCMjM5MEQxRTIwMDhCQzc1
MiAvKiBKU1dlYkFzc2VtYmx5R2xvYmFsLmggKi8sCisJCQkJNzk2RkI0MzkxREZGOEMzRjAwMzlD
OTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi8sCisJCQkJQUQyRkNCQTgxREI1OERBNDAw
QjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgKi8sCisJCQkJQUQyRkNCQTkxREI1
OERBNDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovLAorCQkJCUFERTgwMjkz
MUUwOEYxQzkwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCAqLywKKwkJCQlB
REU4MDI5NDFFMDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICovLAor
CQkJCUFEMkZDQkFBMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCAq
LywKKwkJCQlBRDJGQ0JBQjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5o
ICovLAorCQkJCUFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcCAqLywKKwkJCQlBRDJGQ0I4RDFEQjU4NDQwMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1v
ZHVsZS5oICovLAorCQkJCUFEMkZDQkFDMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yLmNwcCAqLywKKwkJCQlBRDJGQ0JBRDFEQjU4REE0MDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oICovLAorCQkJCUFEMkZDQkFFMURCNThEQTQwMEIzRTcz
NiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuY3BwICovLAorCQkJCUFEMkZDQkFGMURCNThEQTQwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5VGFibGUuaCAqLywKKwkJCQkxNEQwMUJFNDI2REVFRjM4MDBD
QUUwRDAgLyogSlNXZWJBc3NlbWJseVRhZy5jcHAgKi8sCisJCQkJMTREMDFCRTAyNkRFRUYzNzAw
Q0FFMEQwIC8qIEpTV2ViQXNzZW1ibHlUYWcuaCAqLywKKwkJCQlBREQwOUFFRjFGNUY2MjNGMDAx
MzEzQzIgLyogV2FzbVRvSlMuY3BwICovLAorCQkJCUFERDA5QUVFMUY1RjYyM0YwMDEzMTNDMiAv
KiBXYXNtVG9KUy5oICovLAorCQkJCUFEMkZDQkIwMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JCMTFEQjU4REE0
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CUFEMkZDQkIyMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJQUQyRkNCQjMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
Q29tcGlsZUVycm9yUHJvdG90eXBlLmggKi8sCisJCQkJMTREMDFCRTUyNkRFRUYzODAwQ0FFMEQw
IC8qIFdlYkFzc2VtYmx5RXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTE0RDAxQkUz
MjZERUVGMzgwMENBRTBEMCAvKiBXZWJBc3NlbWJseUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmggKi8s
CisJCQkJMTREMDFCRTIyNkRFRUYzODAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJv
dG90eXBlLmNwcCAqLywKKwkJCQkxNEQwMUJERDI2REVFRjM3MDBDQUUwRDAgLyogV2ViQXNzZW1i
bHlFeGNlcHRpb25Qcm90b3R5cGUuaCAqLywKKwkJCQlBRDQ5MzdDOTFEREQyNzM0MDA3N0M4MDcg
LyogV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgKi8sCisJCQkJQUQ0OTM3Q0ExREREMjczNDAwNzdD
ODA3IC8qIFdlYkFzc2VtYmx5RnVuY3Rpb24uaCAqLywKKwkJCQk1MjEzMjI0MzFFQ0JDRTgyMDBG
NjU2MTUgLyogV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuY3BwICovLAorCQkJCTUyMTMyMjQ0MUVD
QkNFODIwMEY2NTYxNSAvKiBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oICovLAorCQkJCUUzQkYz
QzRFMjM5MEQxRkMwMDhCQzc1MiAvKiBXZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcCAq
LywKKwkJCQlFM0JGM0M1MTIzOTBEMUZDMDA4QkM3NTIgLyogV2ViQXNzZW1ibHlHbG9iYWxDb25z
dHJ1Y3Rvci5oICovLAorCQkJCUUzQkYzQzRGMjM5MEQxRkMwMDhCQzc1MiAvKiBXZWJBc3NlbWJs
eUdsb2JhbFByb3RvdHlwZS5jcHAgKi8sCisJCQkJRTNCRjNDNTAyMzkwRDFGQzAwOEJDNzUyIC8q
IFdlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNCQjQxREI1OERBNDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQy
RkNCQjUxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5o
ICovLAorCQkJCUFEMkZDQkI2MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0JCNzFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oICovLAorCQkJCUFERTgwMjlEMUUwOEYyMjYwMDU4REU3
OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBREU4MDI5
NTFFMDhGMUM5MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oICov
LAorCQkJCUFERTgwMjk2MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJQURFODAyOTcxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlLmggKi8sCisJCQkJQUQyRkNCQjgxREI1OERBNDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkI5MURC
NThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggKi8sCisJCQkJ
QUQyRkNCQkExREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNw
cCAqLywKKwkJCQlBRDJGQ0JCQjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0I5ODFEQjU4NUE2MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQUQyRkNCOTkxREI1ODVBNjAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBRDJGQ0I5QTFEQjU4
NUE2MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwICovLAorCQkJCUFE
MkZDQjlCMURCNTg1QTYwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oICov
LAorCQkJCUFENDkzN0M1MUREQ0RDRjAwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAgKi8sCisJCQkJQUQ0OTM3QzYxRERDRENGMDAwNzdDODA3IC8qIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmggKi8sCisJCQkJQUQyRkNCQkMxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUFEMkZDQkJEMURCNThEQTQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJ
QUQyRkNCQkUxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBRDJGQ0JCRjFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JQcm90b3R5cGUuaCAqLywKKwkJCQlBRDJGQ0JDMDFEQjU4REE0MDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBRDJGQ0JDMTFEQjU4
REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQUQy
RkNCQzIxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwICov
LAorCQkJCUFEMkZDQkMzMURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLmggKi8sCisJCQkJMTREMDFCREUyNkRFRUYzNzAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5VGFn
Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTE0RDAxQkRBMjZERUVGMzcwMENBRTBEMCAvKiBXZWJB
c3NlbWJseVRhZ0NvbnN0cnVjdG9yLmggKi8sCisJCQkJMTREMDFCREYyNkRFRUYzNzAwQ0FFMEQw
IC8qIFdlYkFzc2VtYmx5VGFnUHJvdG90eXBlLmNwcCAqLywKKwkJCQkxNEQwMUJEQjI2REVFRjM3
MDBDQUUwRDAgLyogV2ViQXNzZW1ibHlUYWdQcm90b3R5cGUuaCAqLywKKwkJCQk1MkY2QzM1QjFF
NzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwICovLAorCQkJ
CTUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5o
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBqczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUM0NzAzQ0MxMTkyODQ0QTQwMDEzRkJFQSAvKiBjb2RlZ2VuICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDNDcwM0NDMjE5Mjg0NENDMDAxM0ZC
RUEgLyogX19pbml0X18ucHkgKi8sCisJCQkJQzRGNEI2RDAxQTA1Qzc2RjAwNUNBQjc2IC8qIGNw
cF9nZW5lcmF0b3IucHkgKi8sCisJCQkJQzRGNEI2Q0YxQTA1Qzc2RjAwNUNBQjc2IC8qIGNwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICovLAorCQkJCUE1RUE3MEVBMTlGNUIzRDUwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8s
CisJCQkJQzRGNEI2RDExQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rp
c3BhdGNoZXJfaGVhZGVyLnB5ICovLAorCQkJCUM0RjRCNkQyMUEwNUM3NkYwMDVDQUI3NiAvKiBn
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovLAorCQkJ
CUM0RjRCNkQzMUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIucHkgKi8sCisJCQkJQzRGNEI2RDQxQTA1Qzc2RjAwNUNBQjc2IC8qIGdlbmVy
YXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovLAorCQkJCUM0
RjRCNkQ1MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVh
ZGVyLnB5ICovLAorCQkJCUM0RjRCNkQ2MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9jcHBf
cHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJQzQ3MDNDQzMxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRlX2pzX2JhY2tlbmRfY29tbWFuZHMucHkgKi8sCisJCQkJQTVF
QTcwRUYxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weSAqLywKKwkJCQlBNUVBNzBGMDE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJQTVFQTcw
RjExOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIu
cHkgKi8sCisJCQkJQTVFQTcwRjIxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29u
ZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQlBNUVBNzBGNDE5RjZERTVBMDA5
OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5ICovLAorCQkJCUE1RUE3MEY1MTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2hl
YWRlci5weSAqLywKKwkJCQlBNUVBNzBGNjE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2Jq
Y19pbnRlcm5hbF9oZWFkZXIucHkgKi8sCisJCQkJQTVFQTcwRjMxOUY2REU1QTAwOThGNUVDIC8q
IGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgKi8sCisJ
CQkJOTkwREE2N0UxQzhFMzExRDAwMjk1MTU5IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZV9jb252ZXJzaW9uc19pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQlDNEY0QjZENzFBMDVDNzZG
MDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5w
eSAqLywKKwkJCQlDNDcwM0NDQjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovLAor
CQkJCUM0NzAzQ0NBMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5ICov
LAorCQkJCUM0NzAzQ0NDMTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkgKi8sCisJCQkJQTVF
QTcwRjgxOUY2REU1QTAwOThGNUVDIC8qIG9iamNfZ2VuZXJhdG9yLnB5ICovLAorCQkJCUM0RjRC
NkQ4MUEwNUM3NkYwMDVDQUI3NiAvKiBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvZGVnZW47CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlFMzNEMUZFNzI3N0YzMDNGMDBBNDVGQkIgLyogWnlkaXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzQTEwRTdGMjc4MDNFM0IwMEQzQUNEMCAv
KiBaeWNvcmUuYyAqLywKKwkJCQlFM0ExMEU4MDI3ODAzRTNCMDBEM0FDRDAgLyogWnljb3JlLmgg
Ki8sCisJCQkJRTMzRDIwMkUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUFsbG9jYXRvci5jICov
LAorCQkJCUUzM0QyMDA0Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVBbGxvY2F0b3IuaCAqLywK
KwkJCQlFMzNEMjAzNjI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQml0c2V0LmMgKi8sCisJCQkJ
RTMzRDIwMEMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUJpdHNldC5oICovLAorCQkJCUUzM0Qx
RkY4Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWNvcmVDb21wYXJpc29uLmggKi8sCisJCQkJRTMzRDFG
RUIyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5Y29yZURlZmluZXMuaCAqLywKKwkJCQlFMzNEMjA4QTI3
N0YzMEFBMDBBNDVGQkIgLyogWnljb3JlRXhwb3J0Q29uZmlnLmggKi8sCisJCQkJRTMzRDFGRkQy
NzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZUZvcm1hdC5jICovLAorCQkJCUUzM0QyMDFFMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWNvcmVGb3JtYXQuaCAqLywKKwkJCQlFMzNEMjAyMjI3N0YzMDQwMDBB
NDVGQkIgLyogWnljb3JlTGliQy5oICovLAorCQkJCUUzM0QyMDExMjc3RjMwNDAwMEE0NUZCQiAv
KiBaeWNvcmVMaXN0LmMgKi8sCisJCQkJRTMzRDIwMzMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29y
ZUxpc3QuaCAqLywKKwkJCQlFMzNEMjAyQTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlT2JqZWN0
LmggKi8sCisJCQkJRTMzRDIwMDYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZVN0YXR1cy5oICov
LAorCQkJCUUzM0QxRkVFMjc3RjMwM0YwMEE0NUZCQiAvKiBaeWNvcmVTdHJpbmcuYyAqLywKKwkJ
CQlFMzNEMjAxNTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlU3RyaW5nLmggKi8sCisJCQkJRTMz
RDIwMTcyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZVR5cGVzLmggKi8sCisJCQkJRTMzRDFGRkEy
NzdGMzAzRjAwQTQ1RkJCIC8qIFp5Y29yZVZlY3Rvci5jICovLAorCQkJCUUzM0QyMDFEMjc3RjMw
NDAwMEE0NUZCQiAvKiBaeWNvcmVWZWN0b3IuaCAqLywKKwkJCQlFMzNEMjAyQzI3N0YzMDQwMDBB
NDVGQkIgLyogWnlkaXMuYyAqLywKKwkJCQlFMzNEMjAwMjI3N0YzMDQwMDBBNDVGQkIgLyogWnlk
aXMuaCAqLywKKwkJCQlFMzNEMjAyNjI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNEZWNvZGVyLmMg
Ki8sCisJCQkJRTMzRDIwMDgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2Rlci5oICovLAor
CQkJCUUzM0QyMDFGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0RlY29kZXJEYXRhLmMgKi8sCisJ
CQkJRTMzRDIwMzQyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRGVjb2RlclR5cGVzLmggKi8sCisJ
CQkJRTMzRDIwMDUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRXhwb3J0Q29uZmlnLmggKi8sCisJ
CQkJRTMzRDIwMEEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyLmMgKi8sCisJCQkJ
RTMzRDIwMjgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyLmggKi8sCisJCQkJRTMz
RDFGRjEyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyQVRULmMgKi8sCisJCQkJRTMz
RDIwMzcyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVyQmFzZS5jICovLAorCQkJCUUz
M0QyMDJCMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckJ1ZmZlci5jICovLAorCQkJ
CUUzM0QyMDAzMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckJ1ZmZlci5oICovLAor
CQkJCUUzM0QxRkVDMjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckludGVsLmMgKi8s
CisJCQkJRTMzRDIwMDkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkQWNjZXNzZWRG
bGFncy5pbmMgKi8sCisJCQkJRTMzRDIwMjkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJh
dGVkRGVjb2RlclRhYmxlcy5pbmMgKi8sCisJCQkJRTMzRDIwMTIyNzdGMzA0MDAwQTQ1RkJCIC8q
IFp5ZGlzR2VuZXJhdGVkRW51bUluc3RydWN0aW9uQ2F0ZWdvcnkuaCAqLywKKwkJCQlFMzNEMjAw
RjI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNHZW5lcmF0ZWRFbnVtSW5zdHJ1Y3Rpb25DYXRlZ29y
eS5pbmMgKi8sCisJCQkJRTMzRDIwMEUyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVk
RW51bUlTQUV4dC5oICovLAorCQkJCUUzM0QyMDE0Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dl
bmVyYXRlZEVudW1JU0FFeHQuaW5jICovLAorCQkJCUUzM0QyMDAxMjc3RjMwNDAwMEE0NUZCQiAv
KiBaeWRpc0dlbmVyYXRlZEVudW1JU0FTZXQuaCAqLywKKwkJCQlFMzNEMjAxQzI3N0YzMDQwMDBB
NDVGQkIgLyogWnlkaXNHZW5lcmF0ZWRFbnVtSVNBU2V0LmluYyAqLywKKwkJCQlFMzNEMjAzMTI3
N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaCAqLywKKwkJCQlF
MzNEMUZGRTI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNHZW5lcmF0ZWRFbnVtTW5lbW9uaWMuaW5j
ICovLAorCQkJCUUzM0QxRkU4Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1S
ZWdpc3Rlci5oICovLAorCQkJCUUzM0QyMDJEMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVy
YXRlZEVudW1SZWdpc3Rlci5pbmMgKi8sCisJCQkJRTMzRDFGRjMyNzdGMzAzRjAwQTQ1RkJCIC8q
IFp5ZGlzR2VuZXJhdGVkRm9ybWF0dGVyU3RyaW5ncy5pbmMgKi8sCisJCQkJRTMzRDFGRUEyNzdG
MzAzRjAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkSW5zdHJ1Y3Rpb25EZWZpbml0aW9ucy5pbmMg
Ki8sCisJCQkJRTMzRDIwMTkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkSW5zdHJ1
Y3Rpb25FbmNvZGluZ3MuaW5jICovLAorCQkJCUUzM0QyMDMwMjc3RjMwNDAwMEE0NUZCQiAvKiBa
eWRpc0dlbmVyYXRlZE9wZXJhbmREZWZpbml0aW9ucy5pbmMgKi8sCisJCQkJRTMzRDFGRjcyNzdG
MzAzRjAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxEZWNvZGVyRGF0YS5oICovLAorCQkJCUUzM0Qx
RkZGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsRm9ybWF0dGVyQVRULmggKi8sCisJ
CQkJRTMzRDIwMUEyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxGb3JtYXR0ZXJCYXNl
LmggKi8sCisJCQkJRTMzRDFGRjYyNzdGMzAzRjAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxGb3Jt
YXR0ZXJJbnRlbC5oICovLAorCQkJCUUzM0QyMDIxMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0lu
dGVybmFsU2hhcmVkRGF0YS5oICovLAorCQkJCUUzM0QxRkZCMjc3RjMwNDAwMEE0NUZCQiAvKiBa
eWRpc0ludGVybmFsU3RyaW5nLmggKi8sCisJCQkJRTMzRDFGRkMyNzdGMzA0MDAwQTQ1RkJCIC8q
IFp5ZGlzTWV0YUluZm8uYyAqLywKKwkJCQlFMzNEMjAyMDI3N0YzMDQwMDBBNDVGQkIgLyogWnlk
aXNNZXRhSW5mby5oICovLAorCQkJCUUzM0QyMDMyMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc01u
ZW1vbmljLmMgKi8sCisJCQkJRTMzRDIwMTMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzTW5lbW9u
aWMuaCAqLywKKwkJCQlFMzNEMUZFOTI3N0YzMDNGMDBBNDVGQkIgLyogWnlkaXNSZWdpc3Rlci5j
ICovLAorCQkJCUUzM0QyMDFCMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1JlZ2lzdGVyLmggKi8s
CisJCQkJRTMzRDIwMTAyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzU2hhcmVkRGF0YS5jICovLAor
CQkJCUUzM0QxRkY5Mjc3RjMwM0YwMEE0NUZCQiAvKiBaeWRpc1NoYXJlZFR5cGVzLmggKi8sCisJ
CQkJRTMzRDIwMjcyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzU2hvcnRTdHJpbmcuaCAqLywKKwkJ
CQlFMzNEMUZGMDI3N0YzMDNGMDBBNDVGQkIgLyogWnlkaXNTdGF0dXMuaCAqLywKKwkJCQlFMzNE
MjAwNzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNTdHJpbmcuYyAqLywKKwkJCQlFMzNEMUZGNTI3
N0YzMDNGMDBBNDVGQkIgLyogWnlkaXNVdGlscy5jICovLAorCQkJCUUzM0QyMDI1Mjc3RjMwNDAw
MEE0NUZCQiAvKiBaeWRpc1V0aWxzLmggKi8sCisJCQkpOworCQkJbmFtZSA9IFp5ZGlzOworCQkJ
cGF0aCA9IGRpc2Fzc2VtYmxlci96eWRpcy9aeWRpczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCUUzRkY3NTJEMUQ5Q0U5RUEwMEM3RTE2RCAvKiBkb21qaXQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzNUNBMTRGMURCQzNBNTYw
MEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovLAorCQkJCUUzNUNBMTUwMURCQzNB
NTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLywKKwkJCQlFMzU1NUI4OTFEQUUw
M0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCAqLywKKwkJCQlFM0M3
OUNBQTFEQjlBNEQ2MDBEMUVDQTQgLyogRE9NSklURWZmZWN0LmggKi8sCisJCQkJRTNGRjc1MkYx
RDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICovLAorCQkJCUUzNUNBMTUx
MURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuY3BwICovLAorCQkJCUUzNUNBMTUy
MURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRIZWFwUmFuZ2UuaCAqLywKKwkJCQlFMzUwNzA4OTFE
QzQ5QkI2MDA4OUJDRDYgLyogRE9NSklUU2lnbmF0dXJlLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IGRvbWppdDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUZFMzVDMkVGMjFC
MUU2NTAwMDBGNENBOCAvKiBnZW5lcmF0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUZFMzVDMkY3MjFCMUU2QzcwMDBGNENBOCAvKiBBcmd1bWVudC5y
YiAqLywKKwkJCQlGRTM1QzJGMzIxQjFFNkM2MDAwRjRDQTggLyogQXNzZXJ0aW9uLnJiICovLAor
CQkJCUZFMzVDMkY1MjFCMUU2QzYwMDBGNENBOCAvKiBEU0wucmIgKi8sCisJCQkJRkUzNUMyRjEy
MUIxRTZDNjAwMEY0Q0E4IC8qIEZpdHMucmIgKi8sCisJCQkJRkUzNUMyRjIyMUIxRTZDNjAwMEY0
Q0E4IC8qIEdlbmVyYXRlZEZpbGUucmIgKi8sCisJCQkJRkUzNUMyRjgyMUIxRTZDNzAwMEY0Q0E4
IC8qIG1haW4ucmIgKi8sCisJCQkJRkUzNUMyRkMyMUIxRTZDNzAwMEY0Q0E4IC8qIE1ldGFkYXRh
LnJiICovLAorCQkJCUZFMzVDMkY2MjFCMUU2QzYwMDBGNENBOCAvKiBPcGNvZGUucmIgKi8sCisJ
CQkJRkUzNUMyRkIyMUIxRTZDNzAwMEY0Q0E4IC8qIE9wY29kZUdyb3VwLnJiICovLAorCQkJCUZF
MzVDMkZBMjFCMUU2QzcwMDBGNENBOCAvKiBPcHRpb25zLnJiICovLAorCQkJCUZFMzVDMkY0MjFC
MUU2QzYwMDBGNENBOCAvKiBTZWN0aW9uLnJiICovLAorCQkJCUZFMzVDMkYwMjFCMUU2QzUwMDBG
NENBOCAvKiBUZW1wbGF0ZS5yYiAqLywKKwkJCQlGRTM1QzJGOTIxQjFFNkM3MDAwRjRDQTggLyog
VHlwZS5yYiAqLywKKwkJCQkxNEMxRjlDRjIyRUE1MUZEMDA0MEIxNDUgLyogV2FzbS5yYiAqLywK
KwkJCSk7CisJCQlwYXRoID0gZ2VuZXJhdG9yOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJRkVGMzQ3NTEyMDM2MjkxMzAwQjdDMEVGIC8qIG9mZmxpbmVhc20gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUZFRjM0NzU1MjAzNjJCMUMw
MEI3QzBFRiAvKiBhcm0ucmIgKi8sCisJCQkJRkVGMzQ3NjIyMDM2MkIyMjAwQjdDMEVGIC8qIGFy
bTY0LnJiICovLAorCQkJCTY1Qjg5OEFEMjMxNDZFOUIwMDQ3NjM1OCAvKiBhcm02NGUucmIgKi8s
CisJCQkJRkVGMzQ3NTkyMDM2MkIxRDAwQjdDMEVGIC8qIGFzbS5yYiAqLywKKwkJCQlGRUYzNDc1
ODIwMzYyQjFEMDBCN0MwRUYgLyogYXN0LnJiICovLAorCQkJCUZFRjM0NzU2MjAzNjJCMUMwMEI3
QzBFRiAvKiBiYWNrZW5kcy5yYiAqLywKKwkJCQlGRUYzNDc1QTIwMzYyQjFFMDBCN0MwRUYgLyog
Y2xvb3AucmIgKi8sCisJCQkJRkVGMzQ3NUQyMDM2MkIxRjAwQjdDMEVGIC8qIGNvbmZpZy5yYiAq
LywKKwkJCQlGRUYzNDc2NDIwMzYyQjIzMDBCN0MwRUYgLyogZ2VuZXJhdGVfb2Zmc2V0X2V4dHJh
Y3Rvci5yYiAqLywKKwkJCQlGRTBEQTEwMjI0Mjk0MTdGMDBBODg0QTYgLyogZ2VuZXJhdGVfc2V0
dGluZ3NfZXh0cmFjdG9yLnJiICovLAorCQkJCUZFRjM0NzVFMjAzNjJCMUYwMEI3QzBFRiAvKiBp
bnN0cnVjdGlvbnMucmIgKi8sCisJCQkJRkVGMzQ3NUMyMDM2MkIxRTAwQjdDMEVGIC8qIG1pcHMu
cmIgKi8sCisJCQkJRkVGMzQ3NjEyMDM2MkIyMTAwQjdDMEVGIC8qIG9mZnNldHMucmIgKi8sCisJ
CQkJRkVGMzQ3NUYyMDM2MkIyMDAwQjdDMEVGIC8qIG9wdC5yYiAqLywKKwkJCQlGRUYzNDc1MjIw
MzYyQjFCMDBCN0MwRUYgLyogcGFyc2VyLnJiICovLAorCQkJCUZFRjM0NzU3MjAzNjJCMUQwMEI3
QzBFRiAvKiByZWdpc3RlcnMucmIgKi8sCisJCQkJRkVGMzQ3NTMyMDM2MkIxQjAwQjdDMEVGIC8q
IHJpc2MucmIgKi8sCisJCQkJRkVGMzQ3NTQyMDM2MkIxQjAwQjdDMEVGIC8qIHNlbGZfaGFzaC5y
YiAqLywKKwkJCQlGRUYzNDc2MzIwMzYyQjIzMDBCN0MwRUYgLyogc2V0dGluZ3MucmIgKi8sCisJ
CQkJRkVGMzQ3NjAyMDM2MkIyMTAwQjdDMEVGIC8qIHRyYW5zZm9ybS5yYiAqLywKKwkJCQlGRUYz
NDc1QjIwMzYyQjFFMDBCN0MwRUYgLyogeDg2LnJiICovLAorCQkJKTsKKwkJCXBhdGggPSBvZmZs
aW5lYXNtOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91
cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMTQ0MDA1QzcwQTUzMzhDNjAwMDVGMDYxIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCQlBNzI3MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM3MDgwNkIxRkUyMzJERjAwMjk5RTQ0IC8qIEpT
QXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDQwMDVDQjBBNTMzOEQxMDAw
NUYwNjEgLyogSlNOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDQwMDc1NzBBNTM3MEQyMDAw
NUYwNjEgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ0MDA1Q0MwQTUzMzhG
ODAwMDVGMDYxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NDAwNzRBMEE1MzZDQzIw
MDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCTkzMkY1QjNGMDgyMkExQzcw
MDczNjk3NSAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEZG
QTU0OTgxNkI4ODM1MzAwQjNBOTgyIC8qIEE2NERPcGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMUZFNTFDMTkyMkEzQkMwMDY5ODdDNSAvKiBBYm9ydFJlYXNvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUFENDkzN0M0MUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFj
dE1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3
NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFOTEyQjRGMjUzMTE5MzMw
MEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTkx
MkI1MTI1MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUzNEUwMzRFMUU0RDRCMTYwMDIxM0Y2NCAvKiBBY2Nlc3NDYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogQWNjZXNzQ2Fz
ZVNuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNzBCNEY2MUJGMjYyMDUwMDVD
NDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5MTY4QkQ4NzI0NDdCQTRFMDA4MEZGQjQgLyogQWdncmVnYXRlRXJy
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOEUxNUMzMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MThFMTVDMTI0NDdC
MjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUyNEU5RDczMjIwOTJCNTIwMEE2QkVFRSAvKiBBaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJBQzU2QjFFOEEwQkQ1
MDAwMUVFM0YgLyogQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzk2NUMyMTcxRTVENzk5NjAwQjc1OTFEIC8qIEFpckFsbG9jYXRl
UmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU2RTFC
REFDREM3MDA4MEZGNzQgLyogQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEZFQzg1NzAxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckFyZy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NTcyMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJCYXNp
Y0Jsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJDNjNCQzFFNjM0NDBDMDBDMTM4MzkgLyog
QWlyQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjM4NzhFMUJGQkM0
NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc5
QzdDQTFFNzRDOTNCMDBFQjM0RDEgLyogQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU3NDFCREFDREM3MDA4MEZGNzQgLyogQWly
Q0NhbGxTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY0QjRDNzFFODg5M0M1MDBEQkJF
ODYgLyogQWlyQ0ZHLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU3NjFCREFDREM3MDA4MEZG
NzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxMEYxQTMxQzQyMEJGMDAwMUMw
N0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlBQkIxN0UxRTVDQ0I1NzAw
NDVCOUE2IC8qIEFpckRpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NTcwMzkx
QkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjYxODMyRDFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyRW1pdFNodWZmbGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNERFMUNGMUM0QzFCNTQwMDRENkMxMSAvKiBBaXJGaXhPYnZpb3VzU3Bp
bGxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyNjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJBQzU2NzFF
OEEwQjc5MDAwMUVFM0YgLyogQWlyRml4U3BpbGxzQWZ0ZXJUZXJtaW5hbHMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMkFDNTcxMUU4RUU0NTQwMDAxRUUzRiAvKiBBaXJGb3JtVGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRUM4NTc3MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJGcmVxdWVudGVk
QmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NTc5MUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJHZW5lcmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1N0ExQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckdlbmVyYXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU3QzFC
REFDREM3MDA4MEZGNzQgLyogQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUzQzJDRTlDMjJGQ0MzRDYwMDhCMjg1MyAvKiBBaXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkVDODU3RTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zZXJ0aW9uU2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRGNjdENzFEOURDNDQyMDAxQjk4MjUgLyogQWly
S2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFp
ckxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjE4Mjk2OTFFOTJFRTU0MDA1QjFFQTgg
LyogQWlyTGl2ZW5lc3NBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkUzNEMxQTFDNEIz
OUFFMDAwM0E1MTIgLyogQWlyTG9nUmVnaXN0ZXJQcmVzc3VyZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY2MTgzMkYxQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckxvd2VyQWZ0ZXJSZWdBbGxvYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZERjcwODYxRDNGMkMyNTAwOTI3NDQ5IC8qIEFpckxvd2VyRW50
cnlTd2l0Y2guaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjE4MzMxMUM0NUJGMDcwMDcyNDUwQiAv
KiBBaXJMb3dlck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1Q0Y5ODQxRTlENTM3NzAw
QzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQwRTRB
NzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQw
RTRBODFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlR2VuZXJhdGVkLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGQjM4NzkwMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJs
b2NrT3JkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUNBQkM5MURCNTRBN0EwMDA4RTgzQiAv
KiBBaXJQYWRJbnRlcmZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkFDNTZGMUU4RDdC
MDMwMDAxRUUzRiAvKiBBaXJQaGFzZUluc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZFQzg1ODQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFNTYyOENFMUU5OTUxMzIwMEM0OUU0NSAvKiBBaXJQcmludFNwZWNpYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRjRCNEJEMUU4ODQ0OUEwMERCQkU4NiAvKiBBaXJSZWdMaXZlbmVz
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NTcwM0QxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJl
cG9ydFVzZWRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzM4REZFMUJFRDUxMjcw
MDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1ODgx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUNG
OTg5MUU5RUQ2NTIwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRUM4NThDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTdGFja1Nsb3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMkJCRDlFMUM1RkY0MDUwMDIzRUYyMyAvKiBBaXJTdGFja1Nsb3RLaW5k
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU4RTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1w
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU4RjFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1w
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1Q0Y5ODExRTk2RjE3RjAwQzE4NjkyIC8q
IEFpclRtcE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5QzAzRDUxRTk0NzZGMjAwQ0Q5MTI1
IC8qIEFpclRtcFNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMEU0QUUxQzI0Qzk0QTAwMkUx
N0I2IC8qIEFpclRtcFdpZHRoLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM3MzA5MzFDMEQ2N0VF
MDAwNTJCRkEgLyogQWlyVXNlQ291bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODU5MTFC
REFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUMz
QzUzMUYzM0E0MTYwMEY1OUI2QyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkE3NjIwQjFEQjk1OUY5MDBCN0EyRkQgLyogQWxsb2NhdGluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlv
bkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUy
Q0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0
QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjIy
MDBEMjYxRDAwMzhFMkNGIC8qIEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MEU5MTlGNUIxMDEwMDk4RjVFQyAvKiBBbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE0OEQxOTExNzcy
MzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDRjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkUwNTAxNDFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzlBMjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tN
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJN
NjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUUyQzQwMjI0MERENjIwMEY2Qjcy
OSAvKiBBUk02NEVBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQTAwOUMxMTgzMUEy
NkUwMENGODcyMiAvKiBBUk02NFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZBREQx
NDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NkFERDE0NTBGRERFQTk4MDAwNkZGQ0MgLyogQVJNdjdSZWdpc3RlcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJy
YXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzBGQjYxMURDMkRFOTkwMDMxMjRGMiAv
KiBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUYzNzE3
QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTk2QjczMTcxQkRBMDY3RjAwMzMxQjg0IC8qIEFycmF5Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3QjIgLyogQXJyYXlD
b252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCREFFQzkxN0Y0RUExNDAwRjYxNDBD
IC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjM5NDU1
MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZCN0YzOTYxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkUxRDZENzEyMzYyNUFCMTAwN0E1QzI2IC8qIEFycmF5U3RvcmFnZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3Nl
bWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQzQzM5MkFCMUMzQkVCMDUwMDI0MUY1
MyAvKiBBc3NlbWJsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjRFNTQxMTdFQTlG
NTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZCNzY3
RTdCMjY3OTFGMjcwMDE3RjhEMSAvKiBBc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFTVEJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCThCNjAxNkY2MUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzODkzQTFEMjIwM0E3QzYw
MEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyog
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEJDMDY0OEIxRTFB
QkE5NDAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOEJDMDY0OEExRTFBQkE3QjAwQjJCOENBIC8qIEFzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCThCQzA2NDkyMUUxQURDQzQw
MEIyQjhDQSAvKiBBc3luY0dlbmVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OEIzQkY1RTQxRTNEMzY4QjAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOEJDMDY0OTYxRTFEODQ1QzAwQjJCOENBIC8qIEFzeW5jSXRl
cmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZBMzhDRkFBMUUzMkI1QUIwMDYw
MjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0NGOTU3MURD
MTI1OTAwMDk4Q0MxMiAvKiBBdG9taWNzT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI0
Njc3RjFGRERBNkU5MDAzRkNCMDkgLyogQXRvbUluZGljZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1RUE3MEU3MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MzhEMkEyMUQ0NDE5NjgwMDY4MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjM4RDJBMzFENDQxOTZEMDA2ODA0OTkgLyogQXV4aWxpYXJ5QmFycmllcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NEZGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Fy
Z3VtZW50UmVnVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0I3MUU2MzQzRUQwMEMx
MzgzOSAvKiBCM0F0b21pY1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVCRjE2NzFGMjNB
MDk4MDAyOUQ5MUQgLyogQjNCYWNrd2FyZHNDRkcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUJG
MTZCMUYyM0EwQzEwMDI5RDkxRCAvKiBCM0JhY2t3YXJkc0RvbWluYXRvcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMkM2M0IwMUU2MEFFNDMwMEMxMzgzOSAvKiBCM0JhbmsuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGRUM4NTAxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRUM4NTAyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyog
QjNCYXNpY0Jsb2NrVXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzM4RTFDMUJGMjg2RUEw
MDEzQzg4RiAvKiBCM0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVD
ODUwNDFCREFDREFDMDA4MEZGNzQgLyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlEQ0ZERkJEOTFEMUY1RDlCMDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM5MkU2RjkyNEQyNUZBOTAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2QjhBRTMxQzRFRkUxNzAwOTY5MDUyIC8qIEIz
QnJlYWtDcml0aWNhbEVkZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlEQzlBMEMyMDFEMkQ5Q0Iz
MDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJREM5QTBD
MUYxRDJEOUNCMTAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjMzOERGQTFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjMzRkNGQjFDMTYyNUJFMDAzMjNGNjcgLyogQjNDRkcuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRUM4NTA2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NoZWNrU3BlY2lh
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MDgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ2hl
Y2tWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MEExQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQ29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUwQzFCREFDREFDMDA4MEZGNzQg
LyogQjNDb21tdXRhdGl2aXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTE5Qjc4MDFFMDM1NTlD
MDA1QkVFRDggLyogQjNDb21waWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjg2QUUyMDFDNTMx
MUM1MDA2QkU4RUMgLyogQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZFQzg1MEUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29uc3QzMlZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVDODUxMDFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDY0VmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRUM4NTEyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91
YmxlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAv
KiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1QjMxQkRFRDk1
NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMzhE
RjYxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYzMzhFMEUxQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMzNGQ0ZDMUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWluYXRvcnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNkI4QUQ5MUM0RUREQTIwMDk2OTA1MiAvKiBCM0R1cGxpY2F0
ZVRhaWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODVDMTFCRTE2N0EwMDA4MEZGNzQgLyog
QjNFZmZlY3RzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjcyNUNBODFDNTAzREVEMDBBRDk0M0Eg
LyogQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzM5NUM3MDcyMjU1NUY2RDAwQkRCRkFEIC8qIEIzRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNUJGMTcxMUYyM0E1QTEwMDI5RDkxRCAvKiBCM0Vuc3VyZUxvb3BQcmVI
ZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkU2NUExRTI3NjgyNzcxMDAyQjRDMEEgLyog
QjNFc3RpbWF0ZVN0YXRpY0V4ZWN1dGlvbkNvdW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMx
ODA0NUMyMkVBQUM0QjAwNEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjY5NzFFQTFEOTJGNDI0MDBCQTAyQTUgLyogQjNGZW5jZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjZCOEFFNTFDNEVGRTE3MDA5NjkwNTIgLyogQjNGaXhTU0EuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNzI1Q0IwMUM1MDZEM0IwMEFEOTQzQSAvKiBCM0ZvbGRQYXRoQ29uc3Rh
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUxNjFCREFDREFDMDA4MEZGNzQgLyogQjNG
cmVxdWVuY3lDbGFzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MTcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzRnJlcXVlbnRlZEJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUxOTFC
REFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQzYz
QjgxRTYzNDNGNzAwQzEzODM5IC8qIEIzR2VuZXJpY0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkVDODUxQTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVl
bnRlZEJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODVDMzFCRTE2N0EwMDA4MEZGNzQg
LyogQjNIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUJGMTY0MUYyMzE3MTIwMDI5
RDkxRCAvKiBCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
REM2OUI5OUQxRDE1RjkxNDAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZFQzg1QkExQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkVDODVCQjFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25T
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRGNjdEMjFEOUM2RDI3MDAxQjk4MjUg
LyogQjNLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzZFNTQ1MzFDNDY4RTc0MDBCNUFGNzMg
LyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzM4RTFF
MUJGMjg2RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MzE5REEwNDFDMUJFNDBEMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93
ZXJUb0Fpci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8q
IEIzTWF0aEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MjAxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzTWVtb3J5VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkM2M0M0MUU2OUVG
OTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYzMzhFMTAxQkYwMjc2QzAwMTNDODhGIC8qIEIzTW92ZUNvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyQzYzQzIxRTY2NEE1QzAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjVCRjE2OTFGMjNBMEFBMDAyOUQ5MUQgLyogQjNOYXR1cmFsTG9v
cHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NTIyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM09w
Y29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
T3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjRDOTE2NjFDMjlGNEYyMDA0MzQxQTYgLyog
QjNPcmlnaW5EdW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUyNjFCREFDREFDMDA4MEZG
NzQgLyogQjNQYXRjaHBvaW50U3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1Mjgx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3OTlFRjdDNDFDNTZFRDk2MDAyQjA1MzQgLyogQjNQQ1RvT3JpZ2luTWFwLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVDODUyQTFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjM3MzA4RDFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJl
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MkMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJv
Y2VkdXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyog
QjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjcyNUNBQTFDNTAzREVE
MDBBRDk0M0EgLyogQjNQdXJlQ1NFLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzQyMkE2NzFDMTYy
Njc4MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVu
Z3RoLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQgLyogQjNT
bG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCQkQ5NjFDNUZGM0Y1MDAyM0VG
MjMgLyogQjNTcGFyc2VDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZCOEFERDFD
NEVGQUMzMDA5NjkwNTIgLyogQjNTU0FDYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjMzRkNGODFDMTM2RTI1MDAzMjNGNjcgLyogQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFw
U3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMzhERjIxQkU5M0FEMTAwMTNDODhGIC8q
IEIzU3RhY2ttYXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1MzYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZF
Qzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZFQzg1M0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDU3MDQxMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkVDODUzQzFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyogQjNUeXBlTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkVDODUzRTFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNpbG9u
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NTQwMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQzg1NDIxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUM4NTQ0MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0IyQTU0NzIyNjUzNDgxMDA1
QTBGNzkgLyogQjNWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzM4RTE1MUJG
MDI3NkMwMDEzQzg4RiAvKiBCM1ZhbHVlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMzOEUx
NjFCRjAyNzZDMDAxM0M4OEYgLyogQjNWYWx1ZUtleUlubGluZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRUM4NTQ3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1ZhbHVlUmVwLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjJCQkQ5ODFDNUZGM0Y1MDAyM0VGMjMgLyogQjNWYXJpYWJsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZGNEI0Q0IxRTg4OUQ3RTAwREJCRTg2IC8qIEIzVmFyaWFibGVMaXZlbmVz
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkJEOUExQzVGRjNGNTAwMjNFRjIzIC8qIEIzVmFy
aWFibGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNENDQ0REMxREFGMDhBQjAwQjkyNzg0
IC8qIEIzV2FzbUFkZHJlc3NWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM0MUZDNzIxREFD
MzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkM2M0IyMUU2MEFFNDcwMEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MkREMDAwODI2RTAzOUI5MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFu
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNC
bG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NUU4OUZEMjVDNTBGODcwMDcxRUUxRSAvKiBCaWdJbnQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4Njk3NkU1RjFGQTNFOEJDMDBFN0M0RTEgLyogQmlnSW50Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmln
SW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzVFODlGRTI1QzUwRjg3MDA3MUVF
MUUgLyogQmlnVWludDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjRCMjcyMUE3ODRC
QUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQjkxNkMy
MTREQTAxNEUwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY3REYxNDYxRTJCRUY2QTAwOTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJv
b2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCNDY5NDM5MUY5NzQzOUUwMENDQjNG
OSAvKiBCb29sZWFuUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCNzMxOTFCREEw
NjgwMDAzMzFCODQgLyogQm9vbGVhblByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2MUFGNjA3MjVEMThDOUQwMDBCNjNFMSAvKiBCcmFuZGVkU3RydWN0dXJlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJREUyNkU5MDMxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRh
YmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc1RUU5QjIxOEFB
QjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAw
QTcxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlu
c19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJ
CTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNf
d3JhcHBlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQk0MTI5NTI3ODFEMkNGNkJDMDBF
NzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRp
b24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBOTFCRDU5OTMxMDBGNDU3NUMgLyogYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlE
QTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxl
bWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBMzFCRDU5OTMxMDBG
NDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAw
QTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBI
ZWFkZXJzICovLAorCQkJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGluVXRpbHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQ
YXRoLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0
dGVyZmx5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyog
QnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJGQ0FFMTExN0E5QzI0RTAw
MzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQzNTk1
MjEyMkE1MjFDRDAwRTgwODZEIC8qIEJ5dGVjb2RlQ2FjaGVFcnJvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzRDg3Nzc0MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1
bXBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MzY2M0ZEQTIzNTYyRjk2MDA1RUE2OEMgLyogQnl0ZWNvZGVJbmRleC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzA5NEM0REYxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRkNBRTEzMTdBOUMyNEUwMDM0Qzcz
NSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjY2
RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1M0QzNTQ5OTI0MEQ4OEJEMDA4OTUwREQgLyogQnl0ZWNvZGVP
cGVyYW5kc0ZvckNoZWNrcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQw
MDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTE0
RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
Rjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFOERFNTRCMjNBQzFEQUQwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRThERTU0RDIzQUMxRTg2MDA1QzkxNDIgLyogQ2FjaGVhYmxl
SWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NENBMzUwMjIyNDE4MDEw
MDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVCODM5MkUx
QkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzlFRUFGMzIyODEyNDUwMDA4NDc0RjQgLyogQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEYwOUMyQTIyMzE5MjMx
MDBDRjg4RUIgLyogQ2FjaGVkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MDlFQ0MxMjI1
RTE3OEMwMEJFREQ1NCAvKiBDYWNoZVBheWxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MDlF
Q0MwMjI1RTE3ODEwMEJFREQ1NCAvKiBDYWNoZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZFQzNDNjAxRjM3OUY1MzAwRjU5QjZDIC8qIENhZ2VkQmFycmllclB0ci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxOEMzRUQwRTE2RjVDRDAwQjM0NDYwIC8qIENhbGxEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTc5NkRBQTJCMUU4OUNDRDYwMDVERjI0QSAvKiBDYWxsZWVCaXRzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkgLyogQ2FsbEZyYW1lLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2FsbEZyYW1l
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjJFQzlCQjcxQjdFQjA3QzAwMzAzQUQxIC8q
IENhbGxGcmFtZVNodWZmbGVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk2MkQ3NTVENzFCODRG
QjRBMDAxODAxRkEgLyogQ2FsbEZyYW1lU2h1ZmZsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNjI3NjczMjQxQjY4MEMxRTAwRkQ5RjJFIC8qIENhbGxNb2RlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFODBDMTk3MUQ3NzVDREQwMDg1MTBDMCAvKiBDYXRjaFNjb3Bl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxI
ZWxwZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk2MzAzQTFENDE5MkM4MDA1NjA5RDkgLyog
Q2VsbEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDcwQTQ3MUQ1NDNBOEIwMDZF
NzIzMiAvKiBDZWxsQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA3MEE0ODFENTQz
QTkwMDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFMUJEMDFFMUU3MjAwMkEwMDEzNEJDOSAvKiBDZWxsTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkUxQkQwMjExRTcyMDI3OTAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRUMxNjAzMjIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhp
dFNpZGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYyODFFRjQyNUI2MUFGMDAwMzY3MDA0
IC8qIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjI4MUVG
MDI1QjYxNjAwMDAzNjcwMDQgLyogQ2hlY2tQcml2YXRlQnJhbmRWYXJpYW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkUwNTAyNjFBQTkwOTU2MDBEMzNCMzMgLyogQ2xvbmVkQXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogQ0xvb3BT
dGFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIENM
b29wU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NjlBMDc5NzBFRDFEM0FFMDBG
MUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjhGOTQ0MTE2Njc2MzMy
MDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDOTdGMzQx
ODIwMjBENzAwMkM5QjI2IC8qIENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEZEOEEzMTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9j
a1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURF
MyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc3RjE4MjIx
NjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZFMTE2
QjEwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDBFNUYyMUU0NkM4QUYwMDA2QUIwOCAvKiBDb2xsZWN0
aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTc2MjA1MURCOTI0MjkwMEI3QTJGRCAv
KiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDBFNUU5MUU0M0QzNDkw
MDA2QUIwOCAvKiBDb2xsZWN0b3JQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgx
ODU2QTQ4OTAwMkVENjkyIC8qIENvbWJpbmVkRG9tYWlucy5qc29uIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkMxOEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9u
U2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdFNUEzQTgxNzk3NDMyRDAw
RTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjRGMTFF
ODIwOUJDREFCMDA3MDk2NTQgLyogQ29tcGlsZXJUaW1pbmdTY29wZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZEQ0UxMkExRkFGQTg1RjAwNkYzOTAxIC8qIENvbXBsZXRlU3Vic3BhY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRDJGRDk0MjBCNTJCREUwMEYwOTQ0MSAvKiBDb21wbGV0ZVN1YnNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEMzRjQwRTE2RjVDRDAwQjM0NDYw
IC8qIENvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNkZDNzUxMTk2MTEwQTgwMEUx
RDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZFRENFNTI0
RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGREIy
Q0VBMTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SlNMb2NrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzE4QzNGNTBFMTZGNUNEMDBCMzQ0NjAgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywK
KwkJCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmlsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMTQ0ODM2RTcxMzJEQTdCRTAwNUJFNzg1IC8qIENvbnNlcnZhdGl2ZVJvb3RzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTNDRTA4QTE4QkMyMUMzMDBCRURGNzYgLyogQ29uc29sZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVGRDAwN0ExODlCMDUxMDAwNjMzMjMxIC8qIENv
bnNvbGVNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTU3MTRCRTFDRDgwNDlGMDAwNEQy
QzYgLyogQ29uc29sZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVGRDAwNzQxODlCMDM4
QzAwNjMzMjMxIC8qIENvbnNvbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQzk5RDEx
ODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
MTU0NUIxRkQyMEIyMjAwMUI1OEY2IC8qIENvbnN0cmFpbnRDb25jdXJyZW5jeS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0RDhDNzUxRkM3QTk3RDAwMUQzMkFDIC8qIENvbnN0cmFpbnRQYXJhbGxl
bGlzbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3REYxMzQxRTI5NzBENzAwOTU5NTFCIC8qIENv
bnN0cmFpbnRWb2xhdGlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzU0NjIyQjFCNjA2NUQx
MDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEMz
RjYwRTE2RjVDRDAwQjM0NDYwIC8qIENvbnN0cnVjdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRkNDQjY0MjMxMEE5MEQwMDIzOEU3MiAvKiBDb25zdHJ1Y3RvcktpbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1N0QyM0YyMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjY3OEY5MTFBMDQxNzdDMDA2QTMwNkQgLyogQ29u
dHJvbEZsb3dQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzRGNEI2RjQxQTA1Qzk0NDAw
NUNBQjc2IC8qIGNwcF9nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlDNEY0QjZGMzFB
MDVDOTQ0MDA1Q0FCNzYgLyogY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAq
LywKKwkJCQkwRjMwRDdDMDFEOTVENjMyMDA1MzA4OUQgLyogQ1BVLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1REU2RTVCMzBFMTcyOEVDMDAxODA0MDcgLyogY3JlYXRlX2hhc2hfdGFibGUgaW4gSGVh
ZGVycyAqLywKKwkJCQk1MzVDMjQ2MTFGNzg5MjhFMDA2RUM0MEUgLyogY3JlYXRlX3JlZ2V4X3Rh
YmxlcyBpbiBIZWFkZXJzICovLAorCQkJCTk5NTlFOTJCMUJEMTdGQTQwMDFBQTQxMyAvKiBjc3Nt
aW4ucHkgaW4gSGVhZGVycyAqLywKKwkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3Vz
dG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQyNkE0QjE0NjBDRDZFMDAx
MzFGOEYgLyogRGF0YUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2REYxN0I2QjVB
QjAwQTdBRTNGIC8qIERhdGFWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDM0QTBFMTcx
MzVFMDAyQzdFODIgLyogRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZC
NzMxQTFCREEwOEQxMDAzMzFCODQgLyogRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzExNjYwMjBFMTk5N0I0MDA4MDY2REQgLyogRGF0ZUluc3RhbmNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEExNTYzMjEwOTY2MzY1MDA2RkEyNjAgLyogRGF0ZUlu
c3RhbmNlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRDIwMzRDMEUxNzEzNUUwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDNFODBFMTcxOEY0
MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThD
M0ZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBEZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMx
OEMzRkIwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LywKKwkJCQk2QUQyQ0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTVGQzg0QjIxRDFEREFENjAwNkI1QzQ2IC8qIERlYnVnZ2Vy
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QTFBMDk0MUQ4Q0IzM0UwMDRDMkVCOCAv
KiBEZWJ1Z2dlclBhcnNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVBMDg2MjExODJCN0Ew
NDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdDLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTlGQTdDNTI3M0M4QjI2MDA1RDlFNzAgLyogRGVmZXJHQ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNDYzODc1MUU3
MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU5RjNGQzgyNjE2M0NBOTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBE
ZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3M0FEMDYyOTIzRkY2NjI2
MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTczMTFGQTMy
MjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0
cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAv
KiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVFMEZEODIw
N0M3MjczMDA5N0YwREUgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlckNsb2JiZXJTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjYyMDE3NzE0M0ZDRDNG
MDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0RjEx
RUIyMDlENDI2NjAwNzA5NjU0IC8qIERGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRDNFNDAyMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMThE
M0QwMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2Vu
Y3lMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyog
REZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyREQ4MTIxQUIzRDhC
RTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMkREODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0
aE1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBE
RkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjYzOTQ4
NTE1RTQ4MTFCMDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0Q5QTI5NTE3QTBCQzc0MDBFRTI2MTggLyogREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY2NjZFQzcxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjlDRTMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR0F2
YWlsYWJpbGl0eU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRENFRTIyMDkxQ0VCOTg5NTAwMEMy
Mzk2IC8qIERGR0JhY2t3YXJkc0NGRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRENFRTIyMEExQ0VC
OTg5NTAwMEMyMzk2IC8qIERGR0JhY2t3YXJkc0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYzRUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZH
QmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQjkyMUExNkQwMkVDNTAwNTVBNURC
IC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4OUNGNDE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZDM0NDRkUxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2Nr
U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkJGMTU4RDE5QjdBNTMxMDA2OTVERDAgLyogREZH
QmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2
QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY4MzY0Qjcx
NjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxs
b2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkRCOUFEMUFC
MEZCQzYwMDBCNTdFNSAvKiBERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBE
RkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3
MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVBM0JCQUMyMTJDOTdD
QjAwRTkzQUQxIC8qIERGR0NGRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjNBMjgxNTQ0Qzk5
NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGOUQzNjk1MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3N0E0MjQwMTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9iYmVyaXplLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNzdBNDI0MjE3QTBCQkZEMDBBOERCODEgLyogREZHQ2xvYmJl
clNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERG
R0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzQ5QTc4MTI0OTFGMTYx
MDAxQkEzMzYgLyogREZHQ29kZU9yaWdpblBvb2wuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDQz
OTZFMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVBMEEzMjE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVENjdCQTFCMjYyNTZEMDA2NkNF
MTUgLyogREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEQ0VF
MjIwQjFDRUI5ODk1MDAwQzIzOTYgLyogREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGQkUwRjczMTZDMURCMDUwMDgyQzVFOCAvKiBERkdDUFNSZXRo
cmVhZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4OUNGNjE3QTBCOENDMDA3NzNB
RDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZGRkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjJGQzc3MzE2RTEyRjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzQkZBNUQwMjFFODUzQTEwMDlDMEVCQSAvKiBERkdEZXNpcmVkR2xvYmFsUHJv
cGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOEYyQjlBMTcyRjA1MDEwMDdEQkRBNSAvKiBE
RkdEZXNpcmVkSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQzBGN0NFMTdCQkZD
NUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUExMjc0MTkyRDlG
REYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4
NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZE
ODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8qIERGR0RyaXZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NkUxNkMxNERGM0YxNjAwQjdCMkU0IC8qIERGR0VkZ2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDlBMjk2MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdFZGdl
RG9taW5hdGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjhGMTQzNDFBREYwOTAxMDBFRDc5MkMg
LyogREZHRXBvY2guaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJE
RCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc4QTk3NzUxNzk3MzhC
ODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdC
RkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3OEE5Nzc3MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIwMTc4MDFEQ0FEQzM1MDBFQTU5NTAgLyogREZHRmxv
d0luZGV4aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIwMTc4MjFEQ0FERDQyMDBFQTU5NTAg
LyogREZHRmxvd01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RDMzOTcxN0ZGQzRFNjAwNzND
MkJDIC8qIERGR0ZsdXNoZWRBdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODlDRjgxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJERDgx
NTFBQjNEOEJFMDBCQkI4RTggLyogREZHRm9yQWxsS2lsbHMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNjlDQzg5MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGgu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkZDQ0ZBMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFw
aFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJB
IC8qIERGR0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMTRFMjExODEyNTcw
QjAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZCMTRFMjMxODEzMDk1NTAwOUI2QjREIC8qIERGR0lubGluZUNhY2hlV3JhcHBlcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDREOTA2MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDMjExNTFFODAzQjAw
Q0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMDBCN0Mx
OEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjg5OEYzMjFCMjc2ODlGMDA4M0EzM0MgLyogREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzk3RjNFMTgyMDIxMTkw
MDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkVBMEEzNDE3MEQ0MEJGMDBCQjcyMkMgLyogREZHSklUQ29kZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODZFQzlEQ0MxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzhBOTc3OTE3OTczOEI4MDA5REY3NDQgLyogREZHSklU
RmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkM5N0Y0MDE4MjAyMTE5MDAyQzlCMjYg
LyogREZHSnVtcFJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzNBNTM1QjE3OTlD
RDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTYyRjJB
QTM4MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzlDNEIxNUUxQkEyMTU4RjAwRkQ1OTJFIC8qIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJl
c2VydmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4
aXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkJEQzQ1MTUyMjgwMUIwMENEODkxMCAvKiBERkdN
aW5pZmllZEdyYXBoLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJFODkyRDE2RDAyQkFGMDA5RTRG
RDIgLyogREZHTWluaWZpZWRJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4NTBCMTUyMjZFRDY0
MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjJCREM0NjE1MjI4MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkYyQ0Q1QzFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERh
dGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdO
YXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFE
NyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIwMTc4OTFEQ0I5NDI0MDBFQTU5
NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE1
ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjIwMTc4NTFEQ0FFMTQ5MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdp
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEQ0VFMjIwRDFDRUJBRjc1MDAwQzIzOTYgLyog
REZHTnVsbEFic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI5Q0U3MTlEMEJB
N0QwMEIxRDFCNSAvKiBERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZFQzlERDAxMzI4REY4MjAwMkIyQUQ3
IC8qIERGR09wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZGMUM5MEM1NUIw
MDQ4MDE1MSAvKiBERkdPcEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDg5Q0ZFMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMDk3NkExNDY4QTZGNzAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjM1QkVDMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQjky
MUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzkyQzhBMUI0NjE4ODQwMDg0NDcyOCAv
KiBERkdPU1JFeGl0RnV6ei5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFRkM5QUIxNjgxQTNCNjAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNjIzNzk4MUFFNDVDQTcwMEQ0MDJFQSAvKiBERkdQaGFudG9tSW5zZXJ0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRkZDOTVDMTRFRjkwQUYwMEM3MjUzMiAvKiBERkdQaGFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjlDRUIxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1BoaUNo
aWxkcmVuLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzhBOTc3QjE3OTczOEI4MDA5REY3NDQgLyog
REZHUGxhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJREMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8q
IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkUwRjc1
MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjlDRUQxOUQwQkE3RDAwQjFE
MUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZD
OTIxNjFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAv
KiBERkdSZWdpc3RlckJhbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RkM4QTA4MUUzMkU5RjAw
MEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
OTgwQzE2RDFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTc3QTQyNDMxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4
ZWN1dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBE
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODZFQ0EzRkExMzJERjI1QTAwMkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMUUzQTY3MTUzQTIxRTIwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNh
dmVQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZCOTIxRDE2RDAyRjMwMDA1NUE1REIgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjJFNUEzMURBNjQ0
MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkVD
OUREMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVKSVQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNjgyRkIzMTlCQ0IzNjQwMEZBM0JBRCAvKiBERkdTU0FDYWxjdWxhdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0Q4OUQwMDE3QTBCOENDMDA3NzNBRDggLyogREZHU1NBQ29udmVy
c2lvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMyMENCQTE4NTU2QTM1MDBDOUU5NTQg
LyogREZHU1NBTG93ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RkI0RjUxN0ZD
QjkxNzAwQ0I2N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNEYyOUUwMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3Rjk4OEMxRDk1OTZDODAwRjRGMTJF
IC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5RTMyNjQxQjA1QUIwNDAwODAxRUQ1IC8qIERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMyMENCNjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2Mzk0NzgxNURDRTM0
QjAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVu
a3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4QTMyQTE3
RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRDhBMzJDMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZv
ck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkU3MjExRTE5M0I5QzU5MDAzMUY2RUQgLyogREZHVHJhbnNpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2Mzk0M0YxNUM3NUYxOTAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5n
UGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBE
RkdVbmlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM0QjE0QTE2RDQyMDEz
MDAxQ0RBNUEgLyogREZHVXNlS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjNBMkMxNTQ3
NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkM1NTU2
NjIyNEMyQUVBMDA5OUY1Q0MgLyogREZHVmFsdWVSZXBSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQkRDNDgxNTIyODAyOTAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjAxMjMzMzE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVT
dHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMjU0RjcxQUJEREQyMjAwQTdDNkQyIC8q
IERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjIwMTc0
MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRERCRkI2MTY2NkVFREEwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCREM0OTE1MjI4MDk2MDBDRDg5MTAgLyogREZH
VmFyaWFibGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDNEIxNTIyODA5RDAwQ0Q4
OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRkZD
OTYwMTRFRjkwQkQwMEM3MjUzMiAvKiBERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzk3RjQyMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkUwNTAxODFBQTkw
OTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkUw
NTAxNjFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5NjlBMDc5ODBFRDFEM0FFMDBGMUY2ODEgLyogRGlyZWN0RXZhbENvZGVDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQzODZBNzUxREQ2OTg5NTAwODY1MkM0IC8qIERpcmVj
dEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM3MzA4RjFDMENENjg1MDAw
NTJCRkEgLyogRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTU0REVGRjFFOEQ3NkZBMDBBODkyQzUgLyogRGlzYWxsb3dTY29wZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU1NERFRkIxRThDNkQ4ODAwQTg5MkM1IC8qIERpc2FsbG93Vk1FbnRy
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNDI3MzExNThFQkQ1NDAwNENCOUZGIC8qIERpc2Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8q
IERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMTYxODE1MUVDNUZFMjcwMDA2
QTIxOCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NUNBMTU2MURCQzNBNUYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzNTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVy
U25pcHBldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8q
IERPTUpJVEVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGRjc1MzMxRDlDRUExODAwQzdF
MTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1Q0ExNTQx
REJDM0E1QzAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM1MDcwOEExREM0OUJCRjAwODlCQ0Q2IC8qIERPTUpJVFNpZ25hdHVyZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcwNDQ3RUUxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNDVGRjJDODI0M0JCOUQ2MDA1NjlFNzEgLyogRUNNQU1vZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTM0RUUyMTI0Mzk4QUFFMDBBQTJFN0Mg
LyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMDg2QkNBMjEy
M0RFRkIwMDNGMjkyOSAvKiBFbnRyeUZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUQyRURG
QjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzMwNDYwNzBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMDJFOTBEMEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzAyRTk4RDBFMTgzRTM4MDAwRjkyOTcgLyogRXJyb3JJ
bnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMwMkU5MEYwRTE4MzlEQjAwMEY5Mjk3IC8q
IEVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCNzMxQjFCREEwOEQxMDAz
MzFCODQgLyogRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0VFMTM3
NjIxRkJENDM1MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEFE
OTEwQzFEQ0E5Mjk0MDAxNEY5RkUgLyogRXZhbENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTQ3MzQxRDIxREMwMkUyRTAwQUEyOUJBIC8qIEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyogRXhjZXB0aW9uRXZlbnRM
b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MzAyNjJBMzM4QjAwMTZFNzc2IC8q
IEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjEyREUxMDE5NzlE
NUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
MDAwRTE2RjVDRDAwQjM0NDYwIC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRENCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZGMDU0RkExQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0
aW9uRnV6ei5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8q
IEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NzM0MUNDMURDMDJE
NzIwMEFBMjlCQSAvKiBFeGVjdXRhYmxlQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1QTBC
OUQyMjBBRDg3QTAwQUM0NDc0IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMTQxNDJFNTMxQjc5NkVERDAwRjRCRjRCIC8qIEV4ZWN1dGFibGVJbmZvLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjUxOTNGNzI2NkM0MzJEMDA0ODNBMkMgLyogRXhlY3V0YWJsZU1l
bW9yeUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBB
IC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTZB
MUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ0QTdCMDIwQkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYzQUM3NTQxODhFNUVDODAwMzIwMjlGIC8qIEV4aXRpbmdKSVRU
eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkIxMDU4NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhp
dEtpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBF
eHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MjY3Q0Y4MjI0OTMxNkIx
MDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVD
M0M1NzFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNFQ0ZBRDM3MjM3MkRBRDQwMDI5MTU5OSAvKiBGaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyMEJEMDUyMzdEM0UyMzAwNDZF
NTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMz
RDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUVFN0JBMjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGMzgxN0FE
QjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFG
MzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0QxRjlCM0EyNzBCOUFBRDAwNjE3RUI2IC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjRFNTQzMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGREIyQ0M5MTczREE1MjAwMDdCM0MxQiAvKiBGVExBYmJyZXZp
YXRlZFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMg
LyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVBMEExRjE3MDhCMDA3
MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRM
Q29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RDRDMEQxQzNFMUMxMTAw
NkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMzVC
RDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0
UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjlDRjcxOUQwQkFDMTAwQjFE
MUI1IC8qIEZUTEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjIzNUJEQjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0YyOTk2QzE3QTBCQjY3MDAxMDQxN0EgLyogRlRMRmFpbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZFQTBBMkMxNzBCNjYxOTAwQkI3MjJDIC8qIEZUTEZvcm1hdHRlZFZhbHVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4QTMxQTE3RDUxRjIyMDBDQTJDNDAgLyogRlRMRm9y
T1NSRW50cnlKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzhBOTc3RjE3OTczOEQ1MDA5
REY3NDQgLyogRlRMR2VuZXJhdGVkRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEw
QTBFMTcwNTEzREIwMEJCNzIyQyAvKiBGVExKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NzhBOTc4MTE3OTczOEQ1MDA5REY3NDQgLyogRlRMSklURmluYWxpemVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkI0RkI3NDFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQYXRoLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRkI0RkI3NTFCQzg0MzE0MDAyNUNBNUEgLyogRlRMTGF6eVNsb3dQ
YXRoQ2FsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8q
IEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAv
KiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTExvd2VyREZHVG9CMy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODlEMDIxN0Ew
QjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMkI5Q0Y5MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjIzNUJFMDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENv
bXBpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlCMURCODFDMEU0MkJEMDBFNUJGRDIgLyog
RlRMT1NSRXhpdEhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjY5RDYzNkUxQkZCRTVEMTAw
MTAxQjFEIC8qIEZUTE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RDRDMTExQzNFMkM3
NDAwNkNEOTg0IC8qIEZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZDRUZBQUMxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0
b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIgLyogRlRM
U2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjVGMUIyMTgxNjM1
RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjVG
MUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExTbmlwcGV0UGFyYW1zLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjIzNUJENzE3MTc4RTFDMDA2OTBDN0YgLyogRlRMU3RhY2ttYXBB
cmd1bWVudExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTEyMTcwNTEzREIwMEJCNzIy
QyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdGQ0MyNkQxN0EwQjZBQTAwNzg2
RDFBIC8qIEZUTFN3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjM1QkUyMTcxNzhF
MUMwMDY5MEM3RiAvKiBGVExUaHVua3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRUEwQTIwMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExUeXBlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
REIyQ0NBMTczREE1MjMwMDdCM0MxQiAvKiBGVExWYWx1ZUZyb21CbG9jay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY1QTYyODQxODhDOThENDAwNzJDOURGIC8qIEZUTFZhbHVlUmFuZ2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMDMzMkM2MThCNTNGQTkwMDVGOTc5QSAvKiBGVExXZWlnaHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRl
ZFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8q
IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDQyNTI1MTFFNUQw
RTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2
MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MkVFRDc5NDI0OTJCODcwMDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0QUQ5MTBEMURDQTkyOTQwMDE0RjlGRSAvKiBGdW5jdGlv
bkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MDQwRTE2RjVDRDAwQjM0NDYw
IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NzM0MUQ4MURD
MDJGOTkwMEFBMjlCQSAvKiBGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRjBGMUEwMTZCNzJBMUEwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFMzQwMEVDMTIyQTFDQzdCMDA5REVENTQgLyogRnVuY3Rpb25FeGVj
dXRhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJCMzEwRkIxOTc0QUU2MTAwODA4
NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU0
QkZGMkMxQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzE4QzQwNTBFMTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJh
cmVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNBOTQ5NzIyNTUzMjMzMDBENDJCMDYgLyog
RnV6emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFQ0ZBRDM2MjM3MkRBRDAwMDI5MTU5
OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3MTE5OTIyNTNG
QTg3RjAwQkE2OUEwIC8qIEdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBQUNFNjNEMThDQTVB
MDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
QkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNzY2RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRDBFNUVBMUU0M0QzNEQwMDA2QUIwOCAvKiBHQ0NvbmR1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCNDc2N0UxRDk5QUVBOTAwOEVBNkNCIC8qIEdDRGVm
ZXJyYWxDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI0NzY3RjFEOTlBRUFEMDA4RUE2
Q0IgLyogR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJC
NjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRl
ZElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkFFMTdCNkI1NDUwMEE3QUUzRiAv
KiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2QUYx
N0I2QjU0NTAwQTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTIyOTI3RDUyMzVGRDBCOTAwNUNCMTY5IC8qIEdDTWVtb3J5T3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5NzE1MzExRUIyOEJFRTAwQTE2NDVEIC8q
IEdDUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0RThFQjAxOEJGRkJCQjAwNTU2RDI4
IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NEU4RUIxMThCRkZC
QkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTk1OUU5MzExQkQxODI3MjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ3MDNDQzAxOTI4NDQ5NjAwMTNGQkVB
IC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSBpbiBIZWFkZXJzICov
LAorCQkJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5w
eSBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0
ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAq
LywKKwkJCQlBNUVGOUIxNDFBMUQ0M0Y2MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVGOUIxNTFBMUQ0M0ZB
MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1RUY5QjE2MUExRDQ0MDAwMDcwMkU5MCAvKiBnZW5l
cmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJ
CQlBNUVGOUIxNzFBMUQ0NDAzMDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVGOUIxODFBMUQ0
NDA2MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovLAorCQkJCUE1RUY5QjE5MUExRDQ0MDcwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBf
cHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQlDNDcw
M0NDRTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfanNfYmFja2VuZF9jb21tYW5kcy5weSBp
biBIZWFkZXJzICovLAorCQkJCUE1RUE3MTAzMTlGNkRFNkYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9v
YmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVB
NzEwNDE5RjZERTcyMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzEwNTE5RjZERTc0MDA5
OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovLAorCQkJCUE1RUE3MTA2MTlGNkRFNzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZp
Z3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzEwODE5
RjZERTdBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcxMDkxOUY2REU3QzAwOThGNUVD
IC8qIGdlbmVyYXRlX29iamNfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTVFQTcxMEEx
OUY2REU3RTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyLnB5IGluIEhl
YWRlcnMgKi8sCisJCQkJQTVFQTcxMDcxOUY2REU3ODAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNf
cHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5
OTBEQTY3RjFDOEUzMTZBMDAyOTUxNTkgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2Nv
bnZlcnNpb25zX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQzRGNEI2RjUx
QTA1Qzk4NDAwNUNBQjc2IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50
YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQlDNDcwM0NENjE5Mjg0NENDMDAxM0ZCRUEgLyog
Z2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ3MDNDRDUxOTI4NDRDQzAwMTNGQkVB
IC8qIGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5NTFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBCNzkxOTcxQzAyNEEyOTAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5OTFDMDI0QTI5MDAyNDgxRTIg
LyogR2VuZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEI3OTE5RDFDMDI0
QTU2MDAyNDgxRTIgLyogR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZFMDUwMTkxQUE5MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRTA1MDFBMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRz
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFMDUwMUIxQUE5MDkxMTAwRDMzQjMzIC8q
IEdlbmVyaWNPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkUwMTdCNkI1QUIwMEE3
QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2
NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNDk4Q0FENjIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJZE1ldGFk
YXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYgLyogR2V0
QnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyMEQ5OUYxMjM4OENDODEwMDA1MDlBMyAv
KiBHZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM0MThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5NjQ2NTZBMUI5
NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U3
QTI1RDVFQzNCMDBGOTc3NzYgLyogR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MzRFMDM1ODFFNTNCRjJGMDAyMTNGNjQgLyogR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkUxRDZENkYyMzYyNThGRTAwN0E1QzI2IC8qIEdldFZNLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkVDM0M1QjFGMzNBNDg5MDBGNTlCNkMgLyogR2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEFEOTEwRTFEQ0E5Mjk0MDAx
NEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzU1RDM4RjIy
NDQ2ODc3MDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyNEU1NDQxN0VBOUY1OTAwQUJCMjE3IC8qIEdQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0QxRjlCNDkyNzBDRkRDQzAwNjE3RUI2IC8qIEhhbmRsZUZvcndh
cmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5k
bGVySW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQyRTMxMzYxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3ODI5N0IxMzc5RThBODAwQTdDMkEz
IC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI1NzA2OTI2N0E2NDJFMDA4
MEZBOEIgLyogSGFzaGFibGVSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlBMDkw
ODAxRDc2ODQ2NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3OURGQ0JEQjFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENBMiAvKiBIZWFwQW5h
bHl6ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBI
ZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwNzBBNDkxRDU0M0E5MzAwNkU3MjMyIC8q
IEhlYXBDZWxsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMjIxRkFFODU4QzAw
NkYzOTAxIC8qIEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQ0FFRkYxRUM0
REE4ODAwOTcwRDEyIC8qIEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9u
U2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MzM5RUM5MUJCNEI0NjAwMDU0RjAwNSAvKiBI
ZWFwT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1Mzk4RkFCMUM3NTBEQTQwMDYwQTk2
MyAvKiBIZWFwUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NEMyQUIxMUM2NTQ0RjIw
MEExOEQ3OCAvKiBIZWFwU25hcHNob3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MzExQzM2MUM3
N0NFQzUwMEU2QjFCNiAvKiBIZWFwU25hcHNob3RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTJDQzkzMDI3NTZCMkI5MDAzRjVBQjggLyogSGVhcFN1YnNwYWNlVHlwZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGQURFNjczMUQ0RDIzQkUwMDc2ODQ1NyAvKiBIZWFwVXRpbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkUxQkQwMjUxRTcyMDUzODAwMTM0QkM5IC8qIEhlYXBWZXJpZmllci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4ODY5IC8qIElDU3RhdHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3MSAvKiBJQ1N0YXR1
c01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMzk5QkUyMEFGNkIzRDAwMTdFMjEzIC8qIElD
U3RhdHVzVXRpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjA2RERFQTE4REE0NEFCMDBB
MzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RkQwMDc2
MTg5QjAzOEMwMDYzMzIzMSAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUEzOEQ1QkZDMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkgLyogSW5CeVZhcmlhbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRl
eGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCN0YzOUIx
NUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQz
ODZBNzkxREQ2OTg5QzAwODY1MkM0IC8qIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRjhCREVCMUFENENGNzEwMERGRTg4NCAvKiBJbmZlcnJlZFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjRBRTA0MzFGRTBEMjU3MDBFMjA4MzkgLyogSW5mZXJyZWRW
YWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTEzRTVCODE4
NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
MTRCMkMzMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1MTNFNUJFMTg1QkZBQ0MwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1MTNFNUNCMTg1Rjk2MjQwMDdFOTVBRCAvKiBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1ODQwRTIxMTg3QjdCODYwMDg0
M0IxMCAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUxM0U1
QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5
bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk3OTA1QkI2OTFEMTIw
NTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDhBN0JG
MDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjdGMTg0MDM2MkMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzEw
RTE5RjZERjgxMDA5OEY1RUMgLyogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTI3OEQ1NTIxREVCODI2MDBCNTcxODQgLyogSW5zcGVj
dG9yQXVkaXRBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2MjMxRTkxOEQxODA0MjAwQzAz
RkRBIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpbiBIZWFkZXJzICovLAorCQkJCUE1
OTNDRjdEMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVGRDAwODIxODlCMTkxQTAw
NjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU3
RDIzRTYxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE1RDBBMUJCMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZpcm9u
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTUxODI0NzlFQjAwQ0MzODQzIC8qIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOEExODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5RjFBNzAxMUI5OEZCRUMwMDQ2M0IyNiAvKiBJbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMzlFQzYxQkIzOTlBNjAwNTRGMDA1IC8qIElu
c3BlY3RvckhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOEMxODU2ODMzNTAw
MkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NTE2NUQzMUJERjBCOUUwMDNCNzVDMSAv
KiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTU1
RkYzQjIxNTlEMkY1MDBGQ0Q4MjYgLyogSW5zcGVjdG9yVGFyZ2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNTJDOTVGRjIxNTlENDMyMDA3RDhBQzAgLyogSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDlFOUFBMjBBQjREMDAwMDFDQTBBQSAvKiBJbnN0YW5jZU9m
QWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMzk5QkYyMEFGNkIzRjAwMTdFMjEz
IC8qIEluc3RhbmNlT2ZTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjM5OUMwMjBBRjZC
NDMwMDE3RTIxMyAvKiBJbnN0YW5jZU9mVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRB
NDY4MEMyMTZGQTU2NTAwMEQyQjFBIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxNEMyNUI5RTIxNkVBMzZBMDAxMzc3NjQgLyogSW5zdHJ1Y3Rpb25TdHJlYW0uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0E4QUYzQzE3QURCNUYzMDA1QUIxNzQgLyogSW50MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGM0ExN0FEQjVGMzAwNUFCMTc0IC8qIEludDhBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDNTc5NzYyMzEwNUY0RTAwQkNBODNGIC8qIEludGVn
cml0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIElu
dGVncml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTE2NjdCMEUxOTlDMDUwMDgw
NjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Y2QkY2RDFD
M0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNDI5RDc3QzBFRDIwRDczMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnBy
ZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMUMzMTMyMjUxMUFGRDcwMEU3QTNB
MCAvKiBJbnRsQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNBMUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNDMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE4MTkzRTQxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdENzUxQjREQzFDNjAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc2MUI0
REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2NUYzM0EyNEFB
NjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzNTNDMTIxMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVz
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIg
LyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
MThDQTZDMjU0NDA2QjYwMDREQzEyOSAvKiBJbnRsTGlzdEZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMxOENBNkIyNTQ0MDZCNjAwNERDMTI5IC8qIEludGxMaXN0Rm9ybWF0Q29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThDQTZEMjU0NDA2QjYwMDREQzEyOSAvKiBJbnRs
TGlzdEZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3OEUyNEM3ODI5
RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhEMjRD
NzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzMDcxNzhDMjRDNzgyOTgwMERGMDY0NCAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUx
QjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzMjMxMTY5MjRBMURDMzUwMDY5M0RBNSAvKiBJbnRsTnVtYmVyRm9y
bWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4
NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2Jq
ZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3OEIyNEM3ODI4RjAwREYwNjQ0
IC8qIEludGxQbHVyYWxSdWxlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3OEEyNEM3ODI4
QzAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzA3MTc4OTI0Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4MzI0Qzc4MjcxMDBERjA2NDQgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODQyNEM3ODI3NzAw
REYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzg3MjRDNzgyN0UwMERGMDY0
NCAvKiBJbnRsU2VnbWVudGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4NjI0Qzc4MjdD
MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzA3MTc4ODI0Qzc4MjgxMDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5MzcyNEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1MyAv
KiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0Yy
MTkzOTI0Qzc4ODM0MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFM0YyMTkzQTI0Qzc4ODM2MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMzIxQUE2RDI2MjYzNTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91
bmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MEJEODAxMTQ4RUE2RjIwMDExMkIyRiAvKiBJbnRy
aW5zaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNEUwMzU0MUU1M0JEMjkwMDIxM0Y2NCAvKiBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzhDQTU5RTI2
REQ4NERFMDBDOEQ4NEMgLyogSVNPODYwMS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEQ0UxMzIx
RkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGQjQ2NzgwMUZEREE2RjEwMDNGQ0IwOSAvKiBJc29DZWxsU2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkI0Njc4MTFGRERBNkY3MDAzRkNCMDkgLyogSXNvQ2VsbFNldElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQkYxQkFFMjM4QUFFREIwMDNBMUMyQiAvKiBJc29I
ZWFwQ2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQzhFRDQzMjNBMURCQ0IwMDEzMTk1
OCAvKiBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTY1QjE1
MTI3NDg2MDFGMDBEQjVCMTYgLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRENFMTJEMUZBRkI0RTUwMDZGMzkwMSAvKiBJc29TdWJzcGFjZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZEMkZEOTUyMEI1MkJFMjAwRjA5NDQxIC8qIElzb1N1YnNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1RTBGRTcyMDg2QUQ0ODAwOTdGMERF
IC8qIElzb1N1YnNwYWNlUGVyVk0uaCBpbiBIZWFkZXJzICovLAorCQkJCThCOUY2RDU2MUQ1OTEy
RkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Q0MUVD
OTIzQzAwODFBMDBBRTk4NEIgLyogSXRlcmF0aW9uTW9kZU1ldGFkYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTRENTVCODFBRTcxNkNBMDA1MkU0NTkgLyogSXRlcmF0aW9uU3RhdHVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVy
YXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MERDM0UwQTFCMkRGMkM3MDAwNTQyOTkgLyog
SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDEzMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTAzRkExQTE4OEUw
RkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkMxOEM0MTQwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzE4QzQxNTBFMTZGNUNEMDBCMzQ0NjAgLyogSmF2YVNjcmlwdENvcmVQcmVmaXgu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0MjlEOTMwMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFMTIyMDI3MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzVBMDY2MjAxM0U0RjEwMDM4RTJDRiAvKiBK
SVRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFM0EwNkIyMUMxMENCODkwMDM5MEZE
RCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFM0EwNkE4MUMx
MEJDODEwMDM5MEZERCAvKiBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTNBMDZCNDFDMTBDQjkzMDAzOTBGREQgLyogSklUQml0WG9yR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyog
SklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGQjgwQkMyMEE3OTQ3MzAwMDZBQUY2IC8q
IEpJVENvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTQ3NkZGNDIwN0U4NUQ1MDA5
M0NBMkQgLyogSklUQ29kZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZENDQ2RUMyNUIyMTI2
MDAwRUNBRTc1IC8qIEpJVENvbXBpbGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA3NzZC
RjE0RkYwMDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTcyNkI5MUJBMjY1ODI2M0QwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbktleS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzI2QjkxQjMyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0
aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8q
IEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxODdBMEQxQzAzMEQ1QzAw
MzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwODIx
NEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
QjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0U2hp
ZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5MjMzQzJCMUQzNDcxNTcwMEM1QTgz
NCAvKiBKSVRNYXRoSUMuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5QjE3ODhFMUQzOTlCODAwMEIx
QTU2NyAvKiBKSVRNYXRoSUNGb3J3YXJkcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlBRjBCRTQx
RDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU5OUIyNDkxQzI0QzNEMzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZENDQ2RUIyNUIyMTI1QzAwRUNBRTc1IC8qIEpJVE9w
YXF1ZUJ5cHJvZHVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZENDQ2RUEyNUIyMTI1MzAwRUNB
RTc1IC8qIEpJVE9wYXF1ZUJ5cHJvZHVjdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQ0EzQTRF
MjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNkIyMzYwQ0UyNkM2MjUzRDAwNTRBRUVDIC8qIEpJVE9wZXJhdGlvblZhbGlkYXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNkI5MUI3MjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQ
bGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjEzMUJGQTI2NTg3RUYyMDA3MTE0Q0YgLyogSklU
UGxhblN0YWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTNBMDZDMDFDMTEwNDFBMDAzOTBGREQg
LyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxMzFCRjky
NjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIx
MzFCRjgyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTJCNTEwMEQyNjVFRkNEQjAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzY2RDJDMTVBOENDM0EwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1RUY5MUYxNjg3OEY3RDAwM0U1QzI1
IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDNzEyRTMxN0NEODc5MzAwOEND
OTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKKwkJCQlEQzAxODQxOTFEMTBDMTg5MDA1N0IwNTMgLyogSklUV29ya2xpc3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcyMTMxQkZDMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNkI5MUIwMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRX
b3JrbGlzdFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNDNEY2NkIyMUIxQTQwOTAwMkZE
MDA5IC8qIEpTQVBJR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDA0ODAxMzEw
MjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDMThDNDE3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0FycmF5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJCNjZFMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RTUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RTcxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUEz
OEQyNTBFMjU4MDBENDQwMDQyQkZERCAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RTkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlC
dWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZFQTE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzlGQjhC
QTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzOUREN0Y1MjNDMUJCQjUwMDkwNUYxMyAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTVCNzBDRkRFMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOUZFQkUzMjMzOUM1RDkwMEI0MEFCMCAvKiBKU0FzeW5jR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4QkMwNjQ4OTFFMUFCQTY0MDBCMkI4Q0EgLyog
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQxODBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTg3MkM0ODIy
MUJCQUYzMDA4QzY5NjkgLyogSlNCYXNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg2RkE5RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMThDNDE5MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDFBMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDFCMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4
QzQxQzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNjU3Q0Y0NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1M0I2MDFFQzIwMzRCOEM1MDA2QkU2NjcgLyogSlNDYXN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFNDhCRDQ0MjMyNDVFOTMwMEYxMzZEMCAvKiBKU0NDb25m
aWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0Nl
bGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0Nl
bGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEg
LyogSlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MkIwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTQ0pTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NUEzMEYxMTM1MDA3RTEw
MENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
MUQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2xhc3NSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2
RTNDNjEzMTY3QkFCRDcwMDZENzYwQSAvKiBKU0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg2RTNDNjE3MTY3QkFCRUUwMDZENzYwQSAvKiBKU0NvbnRleHRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTU4QzAyNDIxOEU0QTQxQTAwMDMyQkM1IC8qIEpTQ29udGV4dFByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDFFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0NvbnRl
eHRSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MEVFMTlGNUI1QzQwMDk4RjVFQyAvKiBK
U0NvbnRleHRSZWZJbnNwZWN0b3JTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUQyRTY2
NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTc0OTdFNjIwOTAwMUIxMDAwMzU2NUIgLyogSlNDUHRyVGFn
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U4MDI1RDVFQzZBMDBGOTc3
NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMjNF
N0YyNUQ1RUM2QTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJCNjZFRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2QjczMUMxQkRBMDhERDAwMzMxQjg0IC8qIEpT
RGF0YVZpZXdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Nzg4MDE0MTE0NzFB
RDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJBN0Y2ODgx
NjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjdERjEzQzFFMjk3MTEzMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkUzQzYxNDE2N0JBQkQ3MDA2RDc2
MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIz
OEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMzRDA3NDcyMkMy
RDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyQjY2RjAxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQxRjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhE
QjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwQjc5MTlDMUMwMjRBNDkw
MDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJC
NjZGMTE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMkI2NkYyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGMzE3QjZCNUFC
MDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NkY1MTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZGNjE3
QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDIxMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk2Qjcz
MUQxQkRBMDhFRjAwMzMxQjg0IC8qIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTEyNzhENTgyMURFREE5NjAwQjU3MTg0IC8qIEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5NDU1OTMxODI0
NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1N0QyM0VBMTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNzU2RkM5MEUyMDMx
QjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzlCODE5OTMxREQyNUNGNTAwRERDNzE0IC8qIEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTUxMDA3QzExODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUwRTRCNjQxODgw
OURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjBDQUVGQzFFQzREQTZCMDA5NzBEMTIgLyogSlNIZWFwRmluYWxpemVyUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNGMTFGNDEyMDkxMzhENzAwRTQxMUE3IC8qIEpTSW1t
dXRhYmxlQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3
RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1MTNF
NUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50MTZBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RjkxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50
MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RjcxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzZDNTE3NjExODI3NDhEMDA3MTVC
MDUgLyogSlNJbnRlcmZhY2VKSVQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMzA5NUREMjMyMTBB
MUIwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzM5NzAwNTIzMjEwRTBCMDBCMEFFMjEgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRjUwNzkxQjg0MjI1
NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2
IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTAz
RkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQxNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDIzMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0xvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0ODZBOEMwMjRBQkVENDgwMDczOTIy
RCAvKiBKU0xvY2tSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjVENzA5QzE2REU5
OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEJC
N0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCMjg2RDFFQjhFNkQ1MDAwRUI1RDIgLyogSlNNYXJr
aW5nQ29uc3RyYWludFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwMTNDQThDMUI0OTFB
OTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk1OUU5MkQx
QkQxN0ZBNDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJRTNEMjM5Qzkx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTk2QjczMjAxQkRBMDhFRjAwMzMxQjg0IC8qIEpTTW9kdWxlTG9hZGVyLmx1
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlEQTRBNzFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0U4RDFE
MUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzE4QzQyNDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNPYmplY3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGOTMyNzVGMUMyMUVGN0YwMENGNjU2NCAvKiBKU09iamVjdElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMThDNDI1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU09iamVjdFJlZi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTcyODBBMjgxMTU1N0UzMDAwRDU2OTU3IC8qIEpTT2JqZWN0
UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRkVBMkQyNzQ0OEYzNzAwRkY0MUMx
IC8qIEpTT05BdG9tU3RyaW5nQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkZFQTJDMjc0
NDhGMzcwMEZGNDFDMSAvKiBKU09OQXRvbVN0cmluZ0NhY2hlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdGOTkzNUYwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDODdDREI5MTA3MTJBRDQwMDA2MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMUIxN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlz
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJv
bWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCNzMxRTFCREEwOEVGMDAz
MzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTZCNzMxRjFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBl
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkEwNUFCRDYxOTYxREYyNDAwMzQxNzUwIC8qIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYyNTUzRDIxNjEz
NkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NTJDMzgwMUFE
REI4RkUwMDEzOTcyNiAvKiBKU1JlbW90ZUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MzQ2Mzg3MTFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTE0ODc0QUU2MTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1M0VFMDFCNjIxOEY2OTE2MDBBRDFGOEQgLyogSlNTY3JpcHQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkwNjQzMzdERDRCMDQwMkJBRjM0QTU5MiAvKiBKU1NjcmlwdEZldGNo
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjAxQzFEMUY4RTgyMzYwMDc2QTAzMiAvKiBKU1Nj
cmlwdEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNFRTAxQjgyMThGN0VG
RjAwQUQxRjhEIC8qIEpTU2NyaXB0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QzBD
NEFDMTY4MTAzMDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTE0RDAxQTc3MjFGQjM1MUYwMEJDNTRFOSAvKiBKU1NjcmlwdFNvdXJjZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRFN0QgLyogSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcyOTlEOUUxN0QxMjgz
NzAwNUY1RkY5IC8qIEpTU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyOTI2MjhCNTI0
MDAxNkU3NzYgLyogSlNTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzkwREQ3MDE4
MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkRG
Q0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyODBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDI5MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1N0cmluZ1JlZkNGLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTI4RDRBODE3N0I3
MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjkxOUQwRDE1N0VFMEEyMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDVDMzZFQTFGNzVBRDZBMDAwQkNBQUYg
LyogSlNUb1dhc20uaCBpbiBIZWFkZXJzICovLAorCQkJCTUyN0NFMzU0MjI1NTVGRTUwMEM2RjM4
MiAvKiBKU1RvV2FzbUlDQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQyQTBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzQ4NkJCNzFDMTc5
NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjZG
QjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90
eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZB
NyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURF
QTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MDIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NzAzMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U1VpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjcwMDE3QjZCNUFCMDBBN0FF
M0YgLyogSlNVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJCNjcwMTE3QjZCNUFC
MDBBN0FFM0YgLyogSlNVaW50OENsYW1wZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZF
M0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2
RTNDNjFCMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzRTFGOEY4MjE1NDcxNUEwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMxOEM0MkMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFsdWVSZWYuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxN
YWNoaW5lLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkUzQzYxRDE2N0JBQkVFMDA2RDc2MEEgLyog
SlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTVBQzYxODIw
QTIzNTVFMDA1MkM3NkMgLyogSlNWaXJ0dWFsTWFjaGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFRjVCNDI3MjYyOEFCRDkwMDE2RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2Jq
ZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NDgyQjkzMTE2NzExNDcw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MzlCRkJCMDIyQUQzQ0RDMDAyM0Y0QzAgLyogSlNXZWFrT2JqZWN0UmVmLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjBCMjg2QjFFQjhFNkNGMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzA5RkI4NjgxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0E5Nzc0QTgyMDZCODJFNDAwOEQwM0QwIC8qIEpTV2Vha1Zh
bHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDVDMzZFQjFGNzVBRDczMDAwQkNBQUYgLyogSlNX
ZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRTMxREI1OERBRDAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDAx
QkVEMjZERUVGMzgwMENBRTBEMCAvKiBKU1dlYkFzc2VtYmx5RXhjZXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFM0JGM0M0RDIzOTBEMUU4MDA4QkM3NTIgLyogSlNXZWJBc3NlbWJseUdsb2Jh
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzk2RkI0M0ExREZGOEMzRjAwMzlDOTVEIC8qIEpTV2Vi
QXNzZW1ibHlIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JFNTFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBREU4
MDI5OTFFMDhGMURFMDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQUQyRkNCRTcxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1v
cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzA1MURCNThEQUQwMEIzRTczNiAvKiBKU1dl
YkFzc2VtYmx5TW9kdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JFOTFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUQyRkNCRUIxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlUYWJsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTREMDFCRUMyNkRFRUYzODAwQ0FFMEQwIC8qIEpTV2ViQXNzZW1ibHlUYWcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0NDI1NjYyMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpT
V3JhcHBlck1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MkUwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNGRDhDOTMwRUVCMkVF
NzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcyRkZENjQxMzk5
ODVBODAwRTUzNjVBIC8qIEtleXdvcmRMb29rdXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTk2OUEw
NzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTYwMDk3
QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURD
RjNENTZBMUNEMjk0NzAwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURDRjNENTZCMUNEMjk0NzIwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyog
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURDRjNENTZDMUNE
Mjk0NzUwMDNENUM2NSAvKiBMYXp5UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJCURDRjNE
NTZEMUNEMjk0NzYwMDNENUM2NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovLAorCQkJCTE0MDlFQ0JGMjI1RTE3NzQwMEJFREQ1NCAvKiBMZWFmRXhlY3V0YWJsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2MzdFRTkyMzZFNTZCMDAwOTZCRDBBIC8qIExp
bmtUaW1lQ29uc3RhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RTJFQTZCMEZCNDYwQ0YwMDYw
MUYwNiAvKiBMaXRlcmFsUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MERFOUEwOTFCRTdE
NjlFMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUyMENF
OUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYzOEIwMTIxN0NGMDc4MzAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50
T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVEMjg3QjIxNUVDOUE1NzAw
REE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3OUNGQzZGMDFDMzNC
MTAwMDBDNzY4RUEgLyogTExJbnRQQ1Jhbmdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNGQTJB
RTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzVBMDYxMjAw
RDI2MTgwMDM4RTJDRiAvKiBMb2NhbEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3
NUEwNjAyMDBEMjYwQjAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9ySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNo
aW5lQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRCNzIzQjgxMkQ3REE2RjAwM0JENUVE
IC8qIE1hY2hpbmVTdGFja01hcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZDMzZFRUEwRUUx
Mjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUEw
MDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkUxRTJDM0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRF
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9B
c3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYzQjIzRTAwRkM2MTE4OTAwNzAz
QUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyQUIy
NDQxRENENzVGNDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYwMTYxRTUwRjNBODNDMTAwRjg0
NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAxNjFF
NjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1RUYxM0Y5MUYwNzMyMDQwMDBGMDQ0MiAvKiBtYWtlLWpzLWZpbGUtYXJyYXlz
LnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTcwMDg3M0ExN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzRERUY5NDE4MkQ5OTE0MDA1MjJDMjIg
LyogTWFwSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MDA4NzNFMTdD
QkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MkQ2
RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY3QzVGQjgxRDg4OEEwQzAwNDRGNUUyIC8qIE1hcmtlZEJsb2NrSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFM0QzNTE1RjI0MUI4OUQ3MDA4REMxNkUgLyogTWFya2VkSlNW
YWx1ZVJlZkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEw
MzEgLyogTWFya2VkU3BhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0RGMTM1MUUyOTcwREMw
MDk1OTUxQiAvKiBNYXJrZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjYw
RTM4MUUwNTE3QkIwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUzMzZCNTMyNURCNDk3RDAwOThGMDM0IC8qIE1hcmtpbmdDb25zdHJhaW50RXhlY3V0
b3JQYWlyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY2MEUzQTFFMDUxN0MxMDAzMTQ2MkMgLyog
TWFya2luZ0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOURBQTA5MUZEMUMz
Q0YwMDc5QzVCMiAvKiBNYXJraW5nQ29uc3RyYWludFNvbHZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY2NDUzMTgxRkQyNDZBNzAwMjQzMkExIC8qIE1hcmtTdGFja01lcmdpbmdDb25zdHJh
aW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjEyRTRDRDE1MjM4OUVDMDBDODM2QkUgLyogTWF0
Y2hSZXN1bHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQzNDBBNDg1MUE5MDUxQUYwMEQ3M0NDQSAv
KiBNYXRoQ29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0
NjAgLyogTWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOEM2QzcxREE0MzA0NTAw
RDI1NUZEIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5MDIxM0UzRTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTQyRjE2RTAyMTU1ODgwMjAwM0Q0OUM5IC8qIE1ldGFkYXRhVGFibGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGQjU0NjdCMTRGNUM3RTEwMDJDMjk4OSAvKiBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzAwOENFNzE4NzYz
MUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTJBODc2MDFG
MDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RkYgLyogTUlQU1JlZ2lzdGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5w
eSBpbiBIZWFkZXJzICovLAorCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8q
IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0QUQ5MTBG
MURDQTkyOTQwMDE0RjlGRSAvKiBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxNDczNDFENjFEQzAyRUI5MDBBQTI5QkEgLyogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1
bGVTY29wZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMUZCMzk5MUUxRjY1RkIwMEE5QkU1
MCAvKiBNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkE3NjIwNzFEQjky
NDMzMDBCN0EyRkQgLyogTXV0YXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzAyRTkx
MTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDczNDFEMDFEQzAyREI0MDBBQTI5QkEgLyogTmF0aXZl
RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxNDA5MDcyMDU2RjNGRjAwQ0ZFMzE4
IC8qIE5hdGl2ZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZCOTIyMDE2RDAzM0I3
MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
M0YwRTE2RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U3
ODI1RDVFQzE5MDBGOTc3NzYgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NDMyM0U3OTI1RDVFQzI4MDBGOTc3NzYgLyogTnVsbFNldHRlckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzE4QzQ0MTBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
dW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQzMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDQ0
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5NkI3MzIxMUJEQTA4RUYwMDMzMUI4NCAvKiBOdW1iZXJQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNDJEMzkzOTEwM0U0NTYwMDA3RENCNTIgLyogTnVtZXJpY1N0cmluZ3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCUE1RUE3MTBDMTlGNkRFODIwMDk4RjVFQyAvKiBvYmpjX2dl
bmVyYXRvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUM0RjRCNkY2MUEwNUM5ODQwMDVDQUI3NiAv
KiBvYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk4NkYzRUVC
RDE2OENERTkzMDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTg2RjNFRUJGMTY4Q0RFOTMwMDc3QjkyQSAvKiBPYmpjUnVudGltZUV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTRDQTk1OEQxNkFCNTBGQTAwOTM4QTA2IC8qIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3OUFDMzBGRjFGOTk1MzY0MDA0ODRG
RDcgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzE4QzQ0NTBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk5NkI3MzIyMUJEQTA4RUYwMDMzMUI4NCAvKiBPYmplY3RDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzQxNjZFMjY5MTJCQzcwMEM4MDc4OSAvKiBP
YmplY3RDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNDhFNjM4MUVC
MTE4RDIwMDVEN0E5NiAvKiBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0MyOTVERDFFRDJDQkRBMDBEMzAxNkYgLyogT2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDNFNDBBMUI2MThCNjYw
MEM4MEUxRSAvKiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZEM0U0MEMxQjYxOEI2NjAwQzgwRTFFIC8qIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ0NjBFMTZGNUNEMDBCMzQ0NjAgLyogT2JqZWN0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0Rjc5RjcwMjE2RUFGRDIwMDA0
NkQzOSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjQ4NzJFMjE0MUQwNDgwMEFC
MEQzRSAvKiBPcGNvZGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEE0NjgwRDIxNkZB
NTZBMDAwRDJCMUEgLyogT3Bjb2RlU2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQkRDMkMx
NTFGREU5MTAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzA0NDdF
QTE3QTBCRDQ2MDBGNTg5OEUgLyogT3BlcmFuZHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzE4QzQ0ODBFMTZGNUNEMDBCMzQ0NjAgLyogT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM1Njk4NzIyMjg0MTE4NzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQdHIuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGOURBQTBBMUZEMUMzRDMwMDc5QzVCMiAvKiBQYXJhbGxlbFNv
dXJjZUFkYXB0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNEU2NTc1MjA2NjhFQUEwMEZCODFB
QyAvKiBQYXJzZUhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTM3QzczOEQyMUVEQjU2RTQwMDNG
MkIwQiAvKiBQYXJzZUludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NEIwRTE2RjVDRDAw
QjM0NDYwIC8qIFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMwNTJDMzUwRkI3OTIxOTAw
NDhGREMzIC8qIFBhcnNlckFyZW5hLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkNDQUU0NTE2RDBD
Rjc0MDBEMEM2NUIgLyogUGFyc2VyRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3N0YxODI1
MTY0MTkyQzcwMDY0MEE0NyAvKiBQYXJzZXJNb2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjUz
MDNENjQxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzkyQ0IzNEExQzRFRUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNUFCNDlERDFCRUM4MDg2MDA3MDIwRkIgLyogUGVyR2xvYmFsT2JqZWN0
V3JhcHBlcldvcmxkLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY5Q0U3NDFCOUNENkQwMDA0RURD
QTYgLyogUG9seW1vcnBoaWNBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTgzNDE4MUE2
RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTIxMTMxRjcxRjgyQkYxNDAwN0NDRUVFIC8qIFBvbHlQcm90b0FjY2Vzc0NoYWlu
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA3MEE0QjFENTQzQTk4MDA2RTcyMzIgLyogUHJlY2lz
ZUFsbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQw
MiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQTQyMTQzMUQ2
RjU4OTMwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRTIwQkQwNzIzN0QzRTQ4MDA0NkU1MjAgLyogUHJlZGljdGlvbkZpbGVDcmVhdGlu
Z0Z1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkJCNzNCODFERUYzQUFFMDAyQzAw
OUUgLyogUHJldmVudENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2M0RE
NTQxRUE5QjYxRTAwMTAzQTY5IC8qIFByaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2Qjg2
OTAxMjRCODlFQTQwMDQ4N0M5NSAvKiBQcml2YXRlRmllbGRQdXRLaW5kLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUHJvZmls
ZXJCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEz
IC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjEzOTEyQTE2Nzcx
QzM2MDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkY3MjlCQTE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29t
cGlsYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVC
QTMgLyogUHJvZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3
MjlCRDE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREM2MDVCNUUxQ0UyNkVBMjAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRjcyOUJFMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckV4ZWN1dGlv
bkNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMTkwQ0FEMTg5RDgyRjYwMDBBRTVGMCAv
KiBQcm9maWxlckpldHRpc29uUmVhc29uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY3MjlCRjE2
NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
RjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRkIxMDU4QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJP
U1JFeGl0U2l0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxMzkxMkMxNjc3MUMzRDAwOUNDQjA3
IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCURDNjA1
QjYwMUNFMjZFQTcwMDU5MzcxOCAvKiBQcm9maWxlclVJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MTRBRDkxMTAxRENBOTI5NDAwMTRGOUZFIC8qIFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCTE0NzM0MUQ0MURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5
Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjE1OEFCMzE1NUM4
QjQwMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1
NDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvcGVydHlOYW1lQXJyYXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRjcxNjhDMTVBM0IyMzUwMDhGNURBQSAvKiBQcm9wZXJ0eU9mZnNldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMxOEM0NTUwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZCN0YzOUMxNUVEOEU0NjAwRjE2N0IyIC8qIFByb3BlcnR5U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFBy
b3BlcnR5VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFENkQ3NTIzNjI2NDlGMDA3QTVD
MjYgLyogUHJvdG9DYWxsRnJhbWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc0Qjkz
QjFGODk2MTQ4MDBCOTM1RDMgLyogUHJvdG90eXBlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MzRFMDM1NjFFNTNCRURFMDAyMTNGNjQgLyogUHJveHlhYmxlQWNjZXNzQ2FzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTc5QjAwQ0JGMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzkxNjBEQkUxQzhFM0VDODAwOEMwODVBIC8qIFBy
b3h5UmV2b2tlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjU3ODBBMjE4RkUxRTk4MDAxRTcyRDkg
LyogUHVyZU5hTi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQz
IC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MzMyQTQxNENBN0REOTAw
ODVGM0M2IC8qIFB1dEJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjkzQjRBQTE4Qjky
QzREMDAxNzhBM0YgLyogUHV0QnlWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBDRDRD
MjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMzQTk0OTYyMjU1MzIzMDAwRDQyQjA2IC8qIFJhbmRvbWl6aW5nRnV6
emVyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY2MEFDMjE2NzQwRjgz
MDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzNjM3
QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5NkI3MzIzMUJEQTA4RUYwMDMzMUI4NCAvKiBSZWZsZWN0T2JqZWN0Lmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEZBN0E4RUMxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkMxOEM0NUEwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ0V4cC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFM0FDMjc3NzIxRkRCNDk0MDAyNDQ1MkMgLyogUmVnRXhwQ2FjaGVkUmVz
dWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0QyMDJDMjBFMTcwNkE3MDAyQzdFODIgLyogUmVn
RXhwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRDIwMkQ2MEUxNzA3MDgwMDJD
N0U4MiAvKiBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMzRD
QkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzI1OTU2NDIxRkRBMkM5MDA4RURDOUMgLyogUmVnRXhwR2xvYmFsRGF0YUlubGluZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0MzOUZCMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyog
UmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ1QjBFMTZGNUNEMDBCMzQ0NjAg
LyogUmVnRXhwT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdDMzlGRDFDOEY2NTk1MDA0
ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNEMjAy
QzQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzI4QzZDOTFEQTQzMkY5MDBEMjU1RkQgLyogUmVnaXN0ZXJBdE9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMyOEM2QzgxREE0MzA2MTAwRDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyog
UmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDk5
IC8qIFJlZ2lzdGVySW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUxRDZENkQyMzYyNTQ0QjAw
N0E1QzI2IC8qIFJlZ2lzdGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjIzQTM3RUMx
Qjg3QTdDMDAwNzU0MjA5IC8qIFJlZ2lzdGVyTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkMz
MTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGRDBFNUYwMUU0NkJGMjUwMDA2QUIwOCAvKiBSZWdpc3RlclN0YXRlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTBGN0NGOTRGMURCRUVFODgwMDk4Q0MxMiAvKiBSZWxlYXNlSGVh
cEFjY2Vzc1Njb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUQ2QTExNjFCRUFEMzREMDBFMjVD
MzcgLyogUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1
RUIxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTk4RUQ2NzUxQkVENzY4QzAwREQ4MDE3IC8qIFJlbW90ZUNvbnRyb2xsYWJs
ZVRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVCQTE1RjAxODIzNDVBRjAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1QkExNUU4MTgy
MzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
QkExNUVBMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5MkY1NkI3MUU0RTg0QjIwMDM1OTUzQiAvKiBSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlFNDQ5MTI3NDhFM0Y4MDBF
REQyQTUgLyogUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RTQ0OTMyNzQ4RTNGODAw
RUREMkE1IC8qIFJlcGF0Y2hJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTlGM0ZCOTI2
MTNDNzg5MDA2OUU4OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkUzQjY0MkYyNUQ2RkI0RDAwMUFEREI0IC8qIFJvb3RNYXJrUmVhc29uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJDNjNBQTFFNEZBNDJFMDBDMTM4MzkgLyogUnVubmluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZs
YWdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEgLyogUnVu
dGltZVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAv
KiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RDVDRDVCMUMxMTA2QTkw
MENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkUwNTAy
ODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIyMzk3MjU2NTAw
QUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUZEMDA2ODE4OUFGRTlD
MDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNUZEMDA2
RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNUZEMDA3MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3MzQxQ0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNj
cmlwdEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNB
QkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzIwMUMxRTFGOEU4
MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTRDRjJGQTE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTUxNjVENTFCREYxMzVBMDAzQjc1QzEgLyogU2NyaXB0UHJv
ZmlsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0Yx
OSAvKiBTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcyOTlEQTYxN0QxMjg1ODAw
NUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzkwREQ2RTE4
MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg2NURBMEM4MjVCODk2MEMwMDg3NTc3MiAvKiBTZXRQcml2YXRlQnJhbmRTdGF0dXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTg2NURBMEM1MjVCODk1NzQwMDg3NTc3MiAvKiBTZXRQcml2YXRl
QnJhbmRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVG
RjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkVFOTg0MTFBODg2NUI3
MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCURDMTdF
ODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2MDI5NjAyMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIg
LyogU2hhZG93UmVhbG1PYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2MDI5NjA1MjZGQjU1
MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29u
c3RyYWludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8q
IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEJBNzhG
MTEzQUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMy
MTYwRkU3MTVGN0U5NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFMDQxNTUzMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTcwOUYyRjAxN0EwQUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRo
Q2FsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4QzAzMTIyNjRBNjkxMTAwMUE0NEFEIC8qIFNs
b3dQYXRoRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNUI0QTMzMUM4NEYwRDYwMEYx
QjE3RSAvKiBTbG93UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMzA0MDA0
MEU2QTc0OTQwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
RjIzQTgyMUVDRjEzRkUwMDk3OEQ5OSAvKiBTbmlwcGV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTE4N0EwRjFDMDMwRDZDMDAzOEJCQ0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzRjIzQTgxMUVDRjEzRkEwMDk3OEQ5OSAvKiBTbmlwcGV0UGFyYW1zLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkgLyogU25pcHBldFJlZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93
UGF0aENhbGxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDIwMUQ1OTFERUNGMjZBMDA5MDRCRDMg
LyogU291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBCNzkxOTExQzAyNEExMzAwMjQ4
MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNTAzNTY1MjcxNDdF
NUEwMEVDMUE3RSAvKiBTb3VyY2VJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQzNDJGMzZGNzI0
NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0
NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkRFODdGQzFERkU2RTUxMDA2NEMzOTAg
LyogU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCN0Yz
OUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXplZFRodW5rSklULmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3ODVGNkJDMThDNTUzRkUwMEYxMDYyNiAvKiBT
cGlsbFJlZ2lzdGVyc01vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGM0FDNzUyMTgzRUExMDQw
MDMyMDI5RiAvKiBTdGFja0FsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2REI3RTkx
RDYxMjRCNTAwQ0RCRjhFIC8qIFN0YWNrRnJhbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QzFF
QUYyMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTE0REYwNERBMTZCMzk5NkQwMDE2QTUxMyAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNENBOTU4QjE2QUI1MERFMDA5MzhBMDYgLyogU3RhdGljUHJvcGVy
dHlBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0RjgyOEMxRTMxQjk3NjAwNzUxODRD
IC8qIFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjdDRjk1MjFEQzAyN0Q5MDA5OENDMTIgLyogU3RvcElmTmVjZXNzYXJ5VGltZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUE3MzBCNjEyMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYw
IC8qIFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCNzMyNTFCREEw
OEVGMDAzMzFCODQgLyogU3RyaW5nQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUJDMThDNDY4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJp
bmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjVBMzYwMjIyMTE1OTAwMDczNDlB
MSAvKiBTdHJpbmdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJFMzEz
QjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDFGOUI0
QjI3MENGRTBGMDA2MTdFQjYgLyogU3Ryb25nRm9yd2FyZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MTQ1NzIyODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1Y3R1cmVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3Ry
dWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVB
MzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZEMkM5MjQxNkQw
MUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMy
RkUxOEE0MTZCQUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzIwQkE5MkQxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVEYXRhSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MzMyQTUxNENBN0RERDAwODVGM0M2IC8qIFN0
cnVjdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NjZEMzkxNUFFNEExRjAwOEYzNjNF
IC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDQ0YwRDA4MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkM5MDQxNDgwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NDc2NzAyMEM1RTJCNDAwOEIyQzM2IC8q
IFN0dWJJbmZvU3VtbWFyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3REYxMzcxRTI5NzBFMTAw
OTU5NTFCIC8qIFN1YnNwYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzkwMDYyMTIyMDhCRkM0
MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0RGMTM4
MUUyOTcwRTQwMDk1OTUxQiAvKiBTdWJzcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNEEzOEZBMUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUzMEE2NkNEMUZCMTM0NkQwMDI2QTU0NSAvKiBTdXBlclNhbXBsZXJCeXRlY29kZVNj
b3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQwRTVFRTFFNDY4QTU3MDAwNkFCMDggLyogU3dl
ZXBpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzA1QjQxQUMxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzA1QjQxQUUxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTZCNzMyNzFCREEw
OEVGMDAzMzFCODQgLyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MDVCNDFCMDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MDVCNDFCMjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OTZCNzMyODFCREEwOEVGMDAzMzFCODQgLyogU3ltYm9sUHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOEM0NkIwRTE2RjVDRDAwQjM0NDYwIC8q
IFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlCRjM5OTIyQTIyODhCMDBCRDE4
M0UgLyogU3ltYm9sVGFibGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzExNzlBQTIy
ODgzODYxMDA1MTRCMkMgLyogU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGRDc5QTJEMUVCQkJEQkIwMERBODhEMyAvKiBTeW5jaHJvbm91c25lc3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMUZCMzhGMUUxNzNBNjcwMEE5QkU1MCAvKiBTeW5jaHJvbm91c1N0
b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3ODRBMjY0
MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlE
Qzc5OTc4MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyRDRERTkyNkRBRkQ0MzAwRDQ1MzNBIC8qIFRl
bXBvcmFsQ2FsZW5kYXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMkQ0REVBMjZEQUZENDMwMEQ0
NTMzQSAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzOURBMURCMjZEQjVFNTEwMDEwMDQzNyAvKiBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzJENERFNzI2REFGRDQzMDBENDUzM0EgLyogVGVt
cG9yYWxDYWxlbmRhclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5REExREEyNkRC
NUU0QzAwMTAwNDM3IC8qIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBM0M3RURCOTI2QjBEQjM4MDA0QzM0QzUgLyogVGVtcG9yYWxEdXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTNDN0VEQkEyNkIwREIzODAwNEMzNEM1IC8qIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTNDN0VEQjYyNkIwREIz
ODAwNEMzNEM1IC8qIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY2RDY3RDQwMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUY2RDY3RDQyMjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDcyNkY5MTMwQzAwNkUwMzQ5
IC8qIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjZENjdENDQyNkY5MDJFOTAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRjZENjdENDgyNkY5MTMwQzAwNkUwMzQ5IC8qIFRlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY2RjE1MDIxMjY5M0Q0NTAw
MDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzODZG
RDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM4NkZEN0IyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzODZGRDdGMjZFODY3QjgwMEU0QzI4QiAvKiBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwRThBNTYy
NkRFMkU0ODAwREE0OTE1IC8qIFRlbXBvcmFsVGltZVpvbmUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzMEU4QTU3MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzMEU4QTU0MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjI0RTU0RjE3RUUyNzQ5
MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGQTJDMTdDMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjU3MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBU
aHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1
QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTU5ODk4MTdD
ODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY5NTJBQkQxQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDRDFGOUIzQzI3MEMwQzFBMDA2MTdFQjYgLyogVHlwZWRBcnJheUFk
YXB0ZXJzRm9yd2FyZERlY2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MDYx
N0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjRCOTREQzE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlu
bGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMkI2NzA5MTdCNkI1QUIwMEE3QUUzRiAvKiBU
eXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyQjY3MEIxN0I2QjVBQjAwQTdBRTNG
IC8qIFR5cGVkQXJyYXlUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkI3RjM5RDE1RUQ4RTQ2
MDBGMTY3QjIgLyogVHlwZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJENERFQTE5ODMy
REFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkIzMTEw
MTE5NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGRkI2QzM5MUFGNDhEREMwMERCMUJGNyAvKiBUeXBlb2ZUeXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MkM5NTJCNzE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjJENERFQzE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9n
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjJENERGMDE5ODMyREQ2MDA3RDRCMTkgLyogVHlwZVNl
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdBOEFGNDExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQx
NkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjY3MzlEMzEzQkZERTcxMDAyM0Q4N0MgLyog
VWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0MjE3QURCNUYz
MDA1QUIxNzQgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3QThBRjNGMTdB
REI1RjMwMDVBQjE3NCAvKiBVaW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0E4QUY0
MDE3QURCNUYzMDA1QUIxNzQgLyogVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMyQzNDNjkyM0U5NEMxRTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEFEOTEyNDFEQ0E5RkE0MDAxNEY5
RkUgLyogVW5saW5rZWRFdmFsQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEFEOTEy
MzFEQ0E5RkE0MDAxNEY5RkUgLyogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMTQxNDJFNTExQjc5NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEFEOTEyMjFEQ0E5RkE0MDAxNEY5RkUg
LyogVW5saW5rZWRHbG9iYWxDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0NkMzODRC
MjE3N0FDREYwMDc5RjZEOSAvKiBVbmxpbmtlZE1ldGFkYXRhVGFibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTE0QUQ5MTI1MURDQTlGQTQwMDE0RjlGRSAvKiBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0QUQ5MTI2MURDQTlGQTQwMDE0RjlGRSAv
KiBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTE0QUI2Njc2
MURFQ0Y0MDkwMEE1NkMyNiAvKiBVbmxpbmtlZFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFs
dWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNkM3MzUxMUFD
OUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEZFMDUwMkQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkUyODdEMDIyNTJGQjJFODAwRDcyM0Y5IC8qIFZlcmlmaWVyU2xvdFZpc2l0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZCQ0NFQzA0MjVEMUZBMjcwMDBGMzkxRCAvKiBWZXJpZmll
clNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0MjZBNDkxNDYwQ0JC
NzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0RDhD
NzQxRkM3QTk3QTAwMUQzMkFDIC8qIFZpc2l0Q291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5NTJBQTExREY3ODYwOTAwRTA2RkJEIC8qIFZpc2l0UmFjZUtleS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkMxOEM0MjAwRTE2RjVDRDAwQjM0NDYwIC8qIFZNLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY1QUUyQzQxREY0RjI4MDAwNjZFRkUxIC8qIFZNSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNw
ZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4
MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZF
Nzc2IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Mjg0N0FEQzIxRkZC
ODY5MDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQUQ0QjFERkExREYyNDRFMjAwNzFBRTMyIC8qIFdhc21CaW5kaW5nLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MjVDMEREQTFFOTM1ODQ3MDAyMTg0Q0QgLyogV2FzbUNhbGxl
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI2QUM0QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21D
YWxsZWVHcm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGQjg1M0EyMkYzNjY3QjAwOEY5MEVE
IC8qIFdhc21DYWxsZWVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNGRDA0RDQxRDdB
QjI5MTAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMzN0I5NjcyMjQzMjRFQTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzQkQyQjc2MjJGMjc1MDIwMDExNzY1QyAvKiBXYXNtQ29tcGlsYXRpb25N
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2Fz
bUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTc1OTNDODk4QkU3MTRBNjRCRTkzQTZFNyAv
KiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkNDOTQ3MjA4NjMx
NEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDVD
MzZERDFGNjg4QjY1MDAwQkNBQUYgLyogV2FzbUVtYmVkZGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3OURBRTI3QTFFMDNDODIyMDBCNTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUzODFCOTM5MUU2MEU5N0QwMDkwRjc5NCAvKiBXYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkM1NDdEMzFCNjk1OUExMDA5NTlCNTggLyog
V2FzbUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ1MEZBMUMyMzU3QkRCRTAwOTNDRDRE
IC8qIFdhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTNGNDBFOEIxRDU5MDFCQjAwOTlBMUI2IC8qIFdhc21GdW5jdGlvblBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM4MzUwMEEyMzkwRDkzQjAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTE0ODUyMUQ4MjZFQUVCRkUwMENDMUQxQSAvKiBXYXNtSGFuZGxlcklu
Zm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUFEOEZGMzk4MUVCNUJEQjIwMDg3RkY4MiAvKiBXYXNt
SW5kZXhPck5hbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFENUMzNkUyMUY2OTlFQzAwMDBCQ0FB
RiAvKiBXYXNtSW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMDA2NTlFMUVDQUM4MTIw
MDBDQTkyNiAvKiBXYXNtTGltaXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDUwRkExRjIzNTdC
RUM5MDA5M0NENEQgLyogV2FzbUxMSW50VGllclVwQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTNFOUUwQUMxRUFFODNERjAwRkVFMjUxIC8qIFdhc21NYWNoaW5lVGhyZWFkcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM1NTU3MTQxRDlEOUVBNTAwNkQ1ODNCIC8qIFdhc21NZW1vcnkuaCBp
biBIZWFkZXJzICovLAorCQkJCTc5Qjc1OTc1MURGQTRDNjAwMDUyMTc0QyAvKiBXYXNtTWVtb3J5
SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUFENUMzNkVGMUY3QTI2M0EwMDBCQ0FB
RiAvKiBXYXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzkwMDgxMzkxRTk1QThF
QzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRTc3N0U0MUU5
MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUFENUI0MTZGMUVCQUZCNzcwMDhFRkE0MyAvKiBXYXNtTmFtZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlERjc5IC8qIFdhc21OYW1lU2VjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQUREOEZBNDYxRUIzMDc5NzAwREY1NDJGIC8qIFdhc21OYW1lU2VjdGlv
blBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxMUJENEIxRUE1ODFFNTAwNTI1MjgxIC8q
IFdhc21PTUdQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0M2RkVFRjFFOEFERkE5MDBCMTg0
MjUgLyogV2FzbU9wY29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDhCMkUyMzAy
MUUyNjAwMjY1ODUyIC8qIFdhc21PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0I0
QkQxMjFGNjhCMzI1MDBEMkJFQTMgLyogV2FzbU9wcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTND
Njk0QjMyMzAyNjg3NzAwNkZCRTQyIC8qIFdhc21PU1JFbnRyeURhdGEuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUyN0U2Q0VDMjc3MkI5Q0IwMDVFMDc4MiAvKiBXYXNtT1NSRW50cnlQbGFuLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3OUI3NTk3NjFERkE0QzYwMDA1MjE3NEMgLyogV2FzbVBhZ2VDb3Vu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2IC8qIFdhc21Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBX
YXNtUGxhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBMDUzMUMyMTM0MkI2ODAwMjJFQzE0IC8q
IFdhc21TZWN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Y0MEU4NTFENThGOTc3
MDA5OUExQjYgLyogV2FzbVNlY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDc0MzhDMDFF
MDQ1N0E0MDBGRDBDMkEgLyogV2FzbVNpZ25hdHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEJB
QTA3Q0VCODFGNDlBMjk2RTAyMjAzIC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzNCQkUwOTI1QkZBMDQxMDA1MzY5MEYgLyogV2FzbVN0cmVhbWluZ0NvbXBp
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0EwNTMxQTIxMzQyQjY4MDAyMkVDMTQgLyogV2Fz
bVN0cmVhbWluZ1BhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNDNzNBOTEyNUJGQTczQjAw
RUZFMzAzIC8qIFdhc21TdHJlYW1pbmdQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDVDMzZF
NjFGNjlFQzkxMDAwQkNBQUYgLyogV2FzbVRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEQw
MUJGNTI2REVFRjUzMDBDQUUwRDAgLyogV2FzbVRhZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI1
MEQyRDIxRThEQTA1QTAwMjlBOTMyIC8qIFdhc21UaHVua3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzRTlFMEFGMUVBRUM0NTcwMEZFRTI1MSAvKiBXYXNtVGllclVwQ291bnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUFENUMzNkVDMUY3NUFEN0MwMDBCQ0FBRiAvKiBXYXNtVG9KUy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MzBGQjMwMjFFN0EwQjZFMDAzQzE5REQgLyogV2FzbVdv
cmtsaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyog
V2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRBNEU3RCAv
KiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFE
QjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRFODRGOUYxNEVFMUFDQzAwRDZENUQ0
IC8qIFdlYWtCbG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFMkZBRkYyNjA5MTc4MjAwMEE1
MTBGIC8qIFdlYWtHQ0hhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRCRkNFNjkxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQ4NkE5M0Ux
QUE0RDg4RDAwMkZFNzdGIC8qIFdlYWtHQ01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDRTJGQUZCMjYwOTE2RUYwMDBBNTEwRiAvKiBXZWFrR0NTZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDRTJGQUZEMjYwOTE2RkYwMDBBNTEwRiAvKiBXZWFrR0NTZXRJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNEY3MjU2NjE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEU4NEZBMjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0lt
cGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBMzJCQzcxRkM4MzE0
NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzkzQUREODFG
RTcwMkQwMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTJGREFCQzMyNzg4MDc2QjAwQzE1QjU5IC8qIFdhc21JUkdlbmVyYXRvckhl
bHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzOTkzMEM4MjJBRDNCOUEwMDUxQ0RFMiAvKiBX
ZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzOUJGQkFFMjJB
RDNDM0EwMDIzRjRDMCAvKiBXZWFrT2JqZWN0UmVmUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNEU4NEZBMTE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzA5RkI4NkExQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTQxNTAxMzMxNTRCQjEzRjAwNUQ4Qzk4IC8qIFdlYWtTZXRJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUQxREI1OERBRDAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUFEMkZDQzE2MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRUYxREI1OERBRDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBRDJGQ0MxNzFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEQwMUJFRjI2REVFRjM4MDBD
QUUwRDAgLyogV2ViQXNzZW1ibHlFeGNlcHRpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMTREMDFCRTkyNkRFRUYzODAwQ0FFMEQwIC8qIFdlYkFzc2VtYmx5RXhjZXB0aW9uUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDQ5MzdENDFEREQyN0RFMDA3N0M4MDcgLyog
V2ViQXNzZW1ibHlGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTIxMzIyNDYxRUNCQ0U4
MjAwRjY1NjE1IC8qIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFM0JGM0M1MzIzOTBEMjA1MDA4QkM3NTIgLyogV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNCRjNDNTIyMzkwRDIwMjAwOEJDNzUyIC8qIFdlYkFz
c2VtYmx5R2xvYmFsUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0JGMTFEQjU4
REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBRDJGQ0MxODFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRjMxREI1OERBRDAw
QjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUFEMkZDQzE5MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90
eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8q
IFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUFE
RTgwMjlDMUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzFBMURCNTlD
QjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQUQyRkNCRjcxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MxQjFEQjU5Q0IyMDBCM0U3MzYg
LyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
RDJGQ0MwMTFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNDMUMxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MwMzFE
QjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUFEMkZDQzFEMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFENDkzN0M4MURERDBBQUUwMDc3Qzgw
NyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNC
RjkxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUFEMkZDQzFFMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQy
RkNCRkIxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBRDJG
Q0JGRDFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBRDJGQ0MyMDFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUQyRkNCRkYxREI1OERB
RDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUFEMkZDQzIxMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTREMDFCRTYyNkRFRUYzODAwQ0FFMEQwIC8qIFdl
YkFzc2VtYmx5VGFnQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDAxQkU3MjZE
RUVGMzgwMENBRTBEMCAvKiBXZWJBc3NlbWJseVRhZ1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTJGNkMzNUUxRTcxRUIwODAwODFGNENDIC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE4QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyogV2Vi
S2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNjFCRDU5OTMxMDBG
NDU3NUMgLyogd2tidWlsdGlucy5weSBpbiBIZWFkZXJzICovLAorCQkJCUE3RENCOTczMTJFNTE5
M0YwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQjZENzUz
MThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkyIC8qIFg4Nl82NFJlZ2lz
dGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDkx
IC8qIFg4NlJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk1OUU5MkUxQkQxN0ZBNDAw
MUFBNDEzIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAorCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVG
N0FDNCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFG
NzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTNGRjlCQzcyMjM0NzQ5
MTAwQjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3MDRCODUxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3
MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1
M0JDNDNGMjZEMDEzQTYwMEQ4QkUyMCAvKiBZYXJySklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0YwRkM5NTI2QTExQjRBMDA5OUZGQTAgLyogWWFyck1hdGNoaW5nQ29udGV4dEhv
bGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTlDREE1QjFG
Njc1M0YyMDBEM0U1M0YgLyogWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0ExMEU4MjI3ODAzRTNCMDBEM0FDRDAgLyogWnljb3JlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzNEMjA1NTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzNEMjA1RDI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQml0c2V0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA0OTI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlQ29t
cGFyaXNvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwM0MyNzdGMzA0MDAwQTQ1RkJCIC8q
IFp5Y29yZURlZmluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDhCMjc3RjMwQUEwMEE0
NUZCQiAvKiBaeWNvcmVFeHBvcnRDb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDZG
Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
M0QyMDczMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWNvcmVMaWJDLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzNEMjA4NDI3N0YzMDQwMDBBNDVGQkIgLyogWnljb3JlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMzRDIwN0IyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMzRDIwNTcyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZVN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwNjYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29yZVN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwNjgyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5Y29y
ZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA2RTI3N0YzMDQwMDBBNDVGQkIgLyog
Wnljb3JlVmVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA1MzI3N0YzMDQwMDBBNDVG
QkIgLyogWnlkaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDU5Mjc3RjMwNDAwMEE0NUZC
QiAvKiBaeWRpc0RlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDg1Mjc3RjMwNDAw
MEE0NUZCQiAvKiBaeWRpc0RlY29kZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIw
NTYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzRXhwb3J0Q29uZmlnLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzNEMjA3OTI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNGb3JtYXR0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzM0QyMDU0Mjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwNjMyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5
ZGlzR2VuZXJhdGVkRW51bUluc3RydWN0aW9uQ2F0ZWdvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzM0QyMDVGMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1JU0FFeHQuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzM0QyMDUyMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0dlbmVy
YXRlZEVudW1JU0FTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDgyMjc3RjMwNDAwMEE0
NUZCQiAvKiBaeWRpc0dlbmVyYXRlZEVudW1NbmVtb25pYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMzRDIwMzkyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzR2VuZXJhdGVkRW51bVJlZ2lzdGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA0ODI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNJbnRl
cm5hbERlY29kZXJEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA1MDI3N0YzMDQwMDBB
NDVGQkIgLyogWnlkaXNJbnRlcm5hbEZvcm1hdHRlckFUVC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMzRDIwNkIyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzSW50ZXJuYWxGb3JtYXR0ZXJCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA0NzI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNJbnRl
cm5hbEZvcm1hdHRlckludGVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA3MjI3N0YzMDQw
MDBBNDVGQkIgLyogWnlkaXNJbnRlcm5hbFNoYXJlZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzM0QyMDRDMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc0ludGVybmFsU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzNEMjA3MTI3N0YzMDQwMDBBNDVGQkIgLyogWnlkaXNNZXRhSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwNjQyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzTW5l
bW9uaWMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzM0QyMDZDMjc3RjMwNDAwMEE0NUZCQiAvKiBa
eWRpc1JlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzNEMjA0QTI3N0YzMDQwMDBBNDVG
QkIgLyogWnlkaXNTaGFyZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMzRDIwNzgyNzdG
MzA0MDAwQTQ1RkJCIC8qIFp5ZGlzU2hvcnRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
M0QyMDQxMjc3RjMwNDAwMEE0NUZCQiAvKiBaeWRpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMzRDIwNzYyNzdGMzA0MDAwQTQ1RkJCIC8qIFp5ZGlzVXRpbHMuaCBpbiBIZWFkZXJzICov
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY2MTgzMzgxQzQ1RjYyQTAwNzI0NTBCIC8qIHRl
c3RhaXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMEY2MTgzM0UxQzQ1RjYyQTAwNzI0NTBCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0YWlyIiAqLzsKKwkJCWJ1aWxkUGhhc2Vz
ID0gKAorCQkJCTBGNjE4MzM5MUM0NUY2MkEwMDcyNDUwQiAvKiBTb3VyY2VzICovLAorCQkJCTBG
NjE4MzNCMUM0NUY2MkEwMDcyNDUwQiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0Q0ZCMTEzMjMwMzVG
NTgwMEYwMDQ4QyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSB0
ZXN0YWlyOworCQkJcHJvZHVjdE5hbWUgPSB0ZXN0YXBpOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDBGNjE4MzQzMUM0NUY2MkEwMDcyNDUwQiAvKiB0ZXN0YWlyICovOworCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJMEY5MzI3NEUxQzIwQkNC
QTAwQ0Y2NTY0IC8qIGR5bmJlbmNoICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGOTMyNzU0MUMyMEJDQkEwMENGNjU2NCAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZHluYmVuY2giICov
OworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY5MzI3NEYxQzIwQkNCQTAwQ0Y2NTY0IC8qIFNv
dXJjZXMgKi8sCisJCQkJMEY5MzI3NTExQzIwQkNCQTAwQ0Y2NTY0IC8qIEZyYW1ld29ya3MgKi8s
CisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkJMTRDRkIxMTEyMzAzNUY1MzAwRjAwNDhDIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkpOworCQkJbmFtZSA9IGR5bmJlbmNoOworCQkJcHJvZHVjdE5hbWUgPSB0ZXN0YXBpOworCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IDBGOTMyNzU5MUMyMEJDQkEwMENGNjU2NCAvKiBkeW5iZW5jaCAq
LzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07
CisJCTBGRUM4NTk0MUJEQjVDRjEwMDgwRkY3NCAvKiB0ZXN0YjMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEZFQzg1QTgxQkRC
NUNGMTAwODBGRjc0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJ0ZXN0YjMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEZFQzg1OTUxQkRCNUNG
MTAwODBGRjc0IC8qIFNvdXJjZXMgKi8sCisJCQkJMEZFQzg1QTIxQkRCNUNGMTAwODBGRjc0IC8q
IEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJMTRDRkIxMEYyMzAzNUY0RDAwRjAwNDhDIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IHRlc3RiMzsKKwkJCXByb2R1Y3ROYW1lID0g
dGVzdGFwaTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRkVDODVBRDFCREI1Q0YxMDA4MEZGNzQg
LyogdGVzdGIzICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50
b29sIjsKKwkJfTsKKwkJMEZGOTIyQzMxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAwRkY5MjJDQTE0RjQ2QjEzMDA0MUEyNEUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRkY5MjJDNDE0RjQ2QjEzMDA0MUEyNEUg
LyogU291cmNlcyAqLywKKwkJCQkwRkY5MjJDNjE0RjQ2QjEzMDA0MUEyNEUgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCQkxNENGQjEwOTIzMDM1RjEzMDBGMDA0OEMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCQk2NTc4OEFBQjE4QjQwQTNCMDBDMTg5RkYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCQkwRkY5MjJEMzE0RjQ2QjJGMDA0MUEyNEUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVj
dEluc3RhbGxQYXRoID0gL3Vzci9sb2NhbC9iaW47CisJCQlwcm9kdWN0TmFtZSA9IGpzYzsKKwkJ
CXByb2R1Y3RSZWZlcmVuY2UgPSAwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3Qt
dHlwZS50b29sIjsKKwkJfTsKKwkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20g
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovLAorCQkJCTE0MTIxMTFF
MEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovLAorCQkJCTE0NDAwNUM3MEE1MzM4QzYw
MDA1RjA2MSAvKiBIZWFkZXJzICovLAorCQkJCTVEQkIxNTI0MTMxRDBCQTEwMDU2QUQzNiAvKiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOwor
CQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0Q0ZCMTAwMjMwMzVFRjMwMEYwMDQ4QyAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBtaW5pZG9tOworCQkJcHJvZHVj
dE5hbWUgPSBtaW5pZG9tOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDE0MTIxMTIwMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBtaW5pZG9tICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3Rh
cGkgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTRCRDU5RDYwQTNFOEZDOTAwQkFGNTlDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0YXBpIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0g
KAorCQkJCUUzRDZGNkVFMjVENzhDRjYwMEMyMEVCNCAvKiBHZW5lcmF0ZSBFbnRpdGxlbWVudHMg
Ki8sCisJCQkJMTRCRDU5QkMwQTNFOEY5MDAwQkFGNTlDIC8qIFNvdXJjZXMgKi8sCisJCQkJMTRC
RDU5QkQwQTNFOEY5MDAwQkFGNTlDIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJNTM2NkZEQjIyMkQ1
NDg1QjAwQkY5NEFGIC8qIENvcHkgU3VwcG9ydCBTY3JpcHRzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0Q0ZCMTBCMjMwMzVG
MUEwMEYwMDQ4QyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSB0
ZXN0YXBpOworCQkJcHJvZHVjdE5hbWUgPSB0ZXN0YXBpOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovOworCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJMTRCRDY4ODEyMTUxOTEz
MTAwNTBEQUZGIC8qIEpTQ0xMSW50U2V0dGluZ3NFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTRCRDY4ODkyMTUx
OTEzMTAwNTBEQUZGIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJKU0NMTEludFNldHRpbmdzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTE0QkQ2ODg2MjE1MTkxMzEwMDUwREFGRiAvKiBTb3VyY2VzICovLAorCQkJCTE0QkQ2ODg4
MjE1MTkxMzEwMDUwREFGRiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMg
PSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0Q0ZCMTA3MjMwMzVGMEYwMEYw
MDQ4QyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTE0QkQ2ODgyMjE1MTkxMzEwMDUw
REFGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTE0QkQ2ODlCMjE1MTkxNzQwMDUw
REFGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTElu
dFNldHRpbmdzRXh0cmFjdG9yOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gL3Vzci9sb2NhbC9i
aW47CisJCQlwcm9kdWN0TmFtZSA9IGpzYzsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNEJENjg4
RTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRTZXR0aW5nc0V4dHJhY3RvciAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisJCTUyQ0Qw
RjU5MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovID0geworCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDUyQ0QwRjVGMjI0MkY1NjkwMDRB
MThBNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAidGVz
dGRmZyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1MkNEMEY1QTIyNDJGNTY5MDA0QTE4
QTUgLyogU291cmNlcyAqLywKKwkJCQk1MkNEMEY1QzIyNDJGNTY5MDA0QTE4QTUgLyogRnJhbWV3
b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQkxNENGQjExOTIzMDM1RjY5MDBGMDA0OEMgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CisJCQluYW1lID0gdGVzdGRmZzsKKwkJCXByb2R1Y3ROYW1lID0gdGVzdGFw
aTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyogdGVz
dGRmZyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7
CisJCX07CisJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0gewor
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1
MTEyMzAwMTQwNDZBNEMwMDJCMTAxRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAidGVzdFJlZ0V4cCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk2
NTExMjJGQTE0MDQ2QTRDMDAyQjEwMUQgLyogU291cmNlcyAqLywKKwkJCQk2NTExMjJGQzE0MDQ2
QTRDMDAyQjEwMUQgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAor
CQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkxNENGQjEwRDIzMDM1RjQ2MDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gdGVzdFJlZ0V4cDsK
KwkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9IC91c3IvbG9jYWwvYmluOworCQkJcHJvZHVjdE5hbWUg
PSB0ZXN0UmVnRXhwOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDY1MTEyMzA1MTQwNDZBNEMwMDJC
MTAxRCAvKiB0ZXN0UmVnRXhwICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJNzkyODFCQkQyMEI2MkIzRTAwMkUyQTYwIC8qIHRlc3Rt
ZW0gKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNzkyODFCRDcyMEI2MkIzRTAwMkUyQTYwIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0bWVtIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0g
KAorCQkJCTc5MjgxQkJFMjBCNjJCM0UwMDJFMkE2MCAvKiBTb3VyY2VzICovLAorCQkJCTc5Mjgx
QkQwMjBCNjJCM0UwMDJFMkE2MCAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTE0Q0ZCMTE3MjMwMzVGNjMw
MEYwMDQ4QyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSB0ZXN0
bWVtOworCQkJcHJvZHVjdE5hbWUgPSB0ZXN0YXBpOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDc5
MjgxQkRDMjBCNjJCM0UwMDJFMkE2MCAvKiB0ZXN0bWVtICovOworCQkJcHJvZHVjdFR5cGUgPSAi
Y29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKwkJOTMyRjVCM0UwODIyQTFDNzAw
NzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyNzVEMDg5MDJBRkUwMDhBOUVGQyAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSmF2YVNjcmlw
dENvcmUiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNUQyRjdDRjkwQzY4NzVCQjAwQjVC
NzJCIC8qIFVwZGF0ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiAqLywKKwkJ
CQlBNTNGMUFCRjE4QzkwRjhCMDA3MkVCNkQgLyogUmVzb3VyY2VzICovLAorCQkJCTkzMkY1QjNG
MDgyMkExQzcwMDczNjk3NSAvKiBIZWFkZXJzICovLAorCQkJCTM3MzI4MTFBMTdGQ0QyMzUwMDRB
RDUxOSAvKiBQb3N0cHJvY2VzcyBIZWFkZXJzICovLAorCQkJCTkzMkY1QjkxMDgyMkExQzcwMDcz
Njk3NSAvKiBTb3VyY2VzICovLAorCQkJCTkzMkY1QkQyMDgyMkExQzcwMDczNjk3NSAvKiBGcmFt
ZXdvcmtzICovLAorCQkJCTVEMjlEOEJFMEU5ODYwQjQwMEMzRDJEMCAvKiBDaGVjayBGb3IgV2Vh
ayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8sCisJCQkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdG
IC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovLAor
CQkJCTUzMjQyNEIwMjU0OTA1RDkwMEE2OTc1QiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBG
aWxlcyBJbiBGcmFtZXdvcmsgKi8sCisJCQkJQTU1REVBQTQxNjcwM0RGNzAwM0RCODQxIC8qIENo
ZWNrIEZvciBJbmFwcHJvcHJpYXRlIE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzICovLAorCQkJ
CTFBMDJEOUE4MUIzNEE4ODIwMDBEMTUyMiAvKiBBZGQgU3ltbGluayBpbiAvU3lzdGVtL0xpYnJh
cnkvUHJpdmF0ZUZyYW1ld29ya3MgKi8sCisJCQkJNTM2MDlGOTAyMURGRkE5QzAwOEZBNjBBIC8q
IENoZWNrIC54Y2ZpbGVsaXN0cyAqLywKKwkJCQk2NTc3RkZDNjI3NkFDOEQyMDAxMUFFQzggLyog
Q3JlYXRlIFN5bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVz
ID0gKAorCQkJCTUzNUUwOEMyMjI1NDVBQzgwMERGMDBDQSAvKiBQQlhCdWlsZFJ1bGUgKi8sCisJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTY1Nzg4QUFEMThCNDBBN0IwMEMxODlGRiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY1RkIzRjdFMDlEMTFFRjMwMEY0OURFQiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTUzQjRCRDE0MUY2OEMyQUEwMEQyQkVBMyAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKYXZhU2NyaXB0Q29y
ZTsKKwkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIke1NZU1RFTV9MSUJSQVJZX0RJUn0vRnJhbWV3
b3Jrcy9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcyI7CisJCQlwcm9kdWN0
TmFtZSA9IEphdmFTY3JpcHRDb3JlOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDkzMkY1QkQ5MDgy
MkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7CisJCX07CisJCTkzMkY1
QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJn
ZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NjcwODkwMkFGRTAwOEE5RUZD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJqc2MiICov
OworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJRTNENkY2RUQyNUQ3OEMwMTAwQzIwRUI0IC8qIEdl
bmVyYXRlIEVudGl0bGVtZW50cyAqLywKKwkJCQk5MzJGNUJEQzA4MjJBMUM3MDA3MzY5NzUgLyog
U291cmNlcyAqLywKKwkJCQk5MzJGNUJERTA4MjJBMUM3MDA3MzY5NzUgLyogRnJhbWV3b3JrcyAq
LywKKwkJCQk1RDVEOEFCRjBFMEQwQjAzMDBGOUM2OTIgLyogQ3JlYXRlIC91c3IvbG9jYWwvYmlu
L2pzYyBzeW1saW5rICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVw
ZW5kZW5jaWVzID0gKAorCQkJCTE0RDlEOURBMjE4NDYyQjUwMDkxMjZDMiAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBqc2M7CisJCQlwcm9kdWN0SW5zdGFsbFBh
dGggPSAvdXNyL2xvY2FsL2JpbjsKKwkJCXByb2R1Y3ROYW1lID0ganNjOworCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDkzMkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworCQlGRTUzM0NBMTFG
MjE3REIzMDAxNkExRkUgLyogdGVzdG1hc20gKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJn
ZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRkU1MzNDQTcxRjIxN0RCMzAwMTZBMUZF
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0bWFz
bSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlGRTUzM0NBMjFGMjE3REIzMDAxNkExRkUg
LyogU291cmNlcyAqLywKKwkJCQlGRTUzM0NBNDFGMjE3REIzMDAxNkExRkUgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCQkxNENGQjExNTIzMDM1RjVFMDBGMDA0OEMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCSk7CisJCQluYW1lID0gdGVzdG1hc207CisJCQlwcm9kdWN0TmFtZSA9IHRlc3RhcGk7
CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gRkU1MzNDQUMxRjIxN0RCNDAwMTZBMUZFIC8qIHRlc3Rt
YXNtICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsK
KwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KKwkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJ
CQkJRGVmYXVsdEJ1aWxkU3lzdGVtVHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOworCQkJCUxh
c3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTE0MDsK
KwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQk1MzI1QkRCRjIxREZGMkIxMDBBMERFRTEg
PSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMC4xOworCQkJCQkJUHJvdmlzaW9u
aW5nU3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOworCQkJY29t
cGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0g
ZW47CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCWtub3duUmVnaW9ucyA9ICgK
KwkJCQllbiwKKwkJCQlCYXNlLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAy
OEZDMDJBQUMwNyAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDAz
NDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRo
ID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk5MzJGNUJF
MzA4MjJBMUM3MDA3MzY5NzUgLyogQWxsICovLAorCQkJCTkzMkY1QjNFMDgyMkExQzcwMDczNjk3
NSAvKiBKYXZhU2NyaXB0Q29yZSAqLywKKwkJCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyog
RGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTE0QkQ2ODhGMjE1MTkxNDUwMDUwREFGRiAvKiBMTElu
dCBTZXR0aW5ncyAqLywKKwkJCQkxNEJENjg4MTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRT
ZXR0aW5nc0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJ
bnQgT2Zmc2V0cyAqLywKKwkJCQkwRkY5MjJDMzE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTY1Nzg4QTlEMThCNDA5RUIwMEMxODlGRiAvKiBPZmZs
aW5lIEFzc2VtYmxlciAqLywKKwkJCQk1M0I0QkQwNDFGNjhBRjg5MDBEMkJFQTMgLyogR2VuZXJh
dGUgVW5pZmllZCBTb3VyY2VzICovLAorCQkJCUUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RCAvKiBV
bmxvY2sgS2V5Y2hhaW4gKi8sCisJCQkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8sCisJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCisJCQkJ
OTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKKwkJCQk2NTExMjJGNzE0MDQ2QTRD
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRkVDODU5NDFCREI1Q0YxMDA4MEZGNzQg
LyogdGVzdGIzICovLAorCQkJCTVENkIyQTQ3MTUyQjlFMTcwMDUyMzFERSAvKiBUZXN0IFRvb2xz
ICovLAorCQkJCTBGOTMyNzRFMUMyMEJDQkEwMENGNjU2NCAvKiBkeW5iZW5jaCAqLywKKwkJCQkw
RjYxODMzODFDNDVGNjJBMDA3MjQ1MEIgLyogdGVzdGFpciAqLywKKwkJCQlGRTUzM0NBMTFGMjE3
REIzMDAxNkExRkUgLyogdGVzdG1hc20gKi8sCisJCQkJNzkyODFCQkQyMEI2MkIzRTAwMkUyQTYw
IC8qIHRlc3RtZW0gKi8sCisJCQkJNTMyNUJEQkYyMURGRjJCMTAwQTBERUUxIC8qIEFwcGx5IENv
bmZpZ3VyYXRpb24gdG8gWENGaWxlTGlzdHMgKi8sCisJCQkJNTJDRDBGNTkyMjQyRjU2OTAwNEEx
OEE1IC8qIHRlc3RkZmcgKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQTUz
RjFBQkYxOEM5MEY4QjAwNzJFQjZEIC8qIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFJl
c291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkJQTUzRjFBQzAxOEM5MEY4RjAwNzJFQjZEIC8qIGZyYW1ld29yay5zYiBp
biBSZXNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4
MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7
CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
CXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuT0ZGTElO
RUFTTV9BUkdTPVwiXCJcbmlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwiID09IFwiWUVT
XCIgXV07IHRoZW5cbiAgICBPRkZMSU5FQVNNX0FSR1M9XCIke09GRkxJTkVBU01fQVJHU30gLS13
ZWJraXQtYWRkaXRpb25zLXBhdGg9JHtXS19XRUJLSVRBRERJVElPTlNfSEVBREVSU19GT0xERVJf
UEFUSH1cIlxuZmlcblxubWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZz
ZXRzLyR7QVJDSFN9XCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiLUkke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc21cIiAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRT
ZXR0aW5nc0V4dHJhY3RvclwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy8k
e0FSQ0hTfS9MTEludERlc2lyZWRPZmZzZXRzLmhcIiBcIiR7QVJDSFN9IENfTE9PUFwiIFwiJHtC
VUlMRF9WQVJJQU5UU31cIiAke09GRkxJTkVBU01fQVJHU31cbiI7CisJCX07CisJCTE0QkQ2ODky
MjE1MTkxNDUwMDUwREFGRiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuT0ZGTElORUFT
TV9BUkdTPVwiXCJcbmlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwiID09IFwiWUVTXCIg
XV07IHRoZW5cbiAgICBPRkZMSU5FQVNNX0FSR1M9XCIke09GRkxJTkVBU01fQVJHU30gLS13ZWJr
aXQtYWRkaXRpb25zLXBhdGg9JHtXS19XRUJLSVRBRERJVElPTlNfSEVBREVSU19GT0xERVJfUEFU
SH1cIlxuZmlcblxubWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRz
LyR7QVJDSFN9XCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20v
Z2VuZXJhdGVfc2V0dGluZ3NfZXh0cmFjdG9yLnJiXCIgXCItSSR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0
cy8ke0FSQ0hTfS9MTEludERlc2lyZWRTZXR0aW5ncy5oXCIgXCIke0FSQ0hTfSBDX0xPT1BcIiAk
e09GRkxJTkVBU01fQVJHU31cbiI7CisJCX07CisJCTFBMDJEOUE4MUIzNEE4ODIwMDBEMTUyMiAv
KiBBZGQgU3ltbGluayBpbiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQlu
YW1lID0gIkFkZCBTeW1saW5rIGluIC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3JrcyI7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJpZiBbWyAke0ZBTExCQUNLX1BMQVRGT1JNOi0kUExBVEZPUk1fTkFNRX0gIT0gXCJpcGhvbmVv
c1wiIF1dOyB0aGVuXG4gICAgZXhpdCAwXG5maVxuXG5pZiBbWyAhIC1kIFwiJHtJTlNUQUxMX1JP
T1R9LyR7U1lTVEVNX0xJQlJBUllfRElSfS9Qcml2YXRlRnJhbWV3b3Jrc1wiIF1dOyB0aGVuXG4g
ICAgbWtkaXIgLXAgXCIke0lOU1RBTExfUk9PVH0vJHtTWVNURU1fTElCUkFSWV9ESVJ9L1ByaXZh
dGVGcmFtZXdvcmtzXCJcbmZpXG5cbmxuIC1zIC1oIC1mIC4uL0ZyYW1ld29ya3MvSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIFwiJHtJTlNUQUxMX1JPT1R9LyR7U1lTVEVNX0xJQlJBUllfRElSfS9Q
cml2YXRlRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmtcIlxuIjsKKwkJfTsKKwkJ
MzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVj
dGl2ZS1DIENsYXNzIE5hbWVzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
KTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChFWEVDVVRB
QkxFX1BBVEgpIiwKKwkJCSk7CisJCQluYW1lID0gIkNoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9i
amVjdGl2ZS1DIENsYXNzIE5hbWVzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBc
Imluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIGV4aXQgMDtcbmZpXG5cbmlmIFsgLWYgLi4vLi4v
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIF07
IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9i
amMtY2xhc3MtbmFtZXMgSlMgV1RGXG5maVxuIjsKKwkJfTsKKwkJMzczMjgxMUExN0ZDRDIzNTAw
NEFENTE5IC8qIFBvc3Rwcm9jZXNzIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIlBvc3Rw
cm9jZXNzIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOwor
CQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7WENPREVfVkVSU0lPTl9BQ1RVQUx9XCIgLWdlIFwi
MTE0MFwiIC1hIFwiJHtXS19VU0VfTkVXX0JVSUxEX1NZU1RFTX1cIiA9IFwiWUVTXCIgXTsgdGhl
blxuICAgICMgSW4gdGhpcyBjb25maWd1cmF0aW9uLCBwb3N0LXByb2Nlc3NpbmcgaXMgcGVyZm9y
bWVkIGF0IHRoZSBzYW1lIHRpbWUgYXMgY29weWluZyBpbiB0aGUgcG9zdHByb2Nlc3MtaGVhZGVy
LXJ1bGUgc2NyaXB0LCBzbyB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoaXMgc2VwYXJhdGUgc3RlcC5c
biAgICBleGl0IDBcbmZpXG5cbmV4ZWMgJHtTUkNST09UfS9wb3N0cHJvY2Vzcy1oZWFkZXJzLnNo
XG4iOworCQl9OworCQkzNzRGOTVDOTIwNUY5OTc1MDAyQkY2OEYgLyogTWFrZSBsaWJXVEYuYSBT
eW1ib2xpYyBMaW5rICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJNYWtlIGxpYldURi5hIFN5bWJvbGlj
IExpbmsiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAic2V0IC1lXG5cbmlmIFtbIC1mIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L2xpYldU
Ri5hXCIgXV07IHRoZW5cbiAgICBsbiAtcyAtZiAtaCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9s
aWJXVEYuYVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL2xpYldURi5hXCJcbmVsc2VcbiAgICBsbiAtcyAtZiAtaCBcIiR7U0RLX0RJUn0ke1dL
X0FMVEVSTkFURV9XRUJLSVRfU0RLX1BBVEh9L3Vzci9sb2NhbC9saWIvbGliV1RGLmFcIiBcIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYu
YVwiXG5maVxuIjsKKwkJfTsKKwkJNTMyNDI0QjAyNTQ5MDVEOTAwQTY5NzVCIC8qIENoZWNrIEZv
ciBJbmFwcHJvcHJpYXRlIEZpbGVzIEluIEZyYW1ld29yayAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkNoZWNrIEZvciBJbmFwcHJvcHJpYXRl
IEZpbGVzIEluIEZyYW1ld29yayI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
ImlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdIHx8IFsgXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbGFwaVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4u
Ly4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtZmlsZXMtaW4tZnJhbWV3
b3JrIF07IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJp
YXRlLWZpbGVzLWluLWZyYW1ld29yayB8fCBleGl0ICQ/XG5maVxuIjsKKwkJfTsKKwkJNTMyNUJE
QzUyMURGRjJCQTAwQTBERUUxIC8qIFNoZWxsU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlp
bnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOwor
CQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
ZXZhbCBcIiR7V0tfU1VCTEFVTkNIX1NDUklQVF9QQVJBTUVURVJTW0BdfVwiXG4iOworCQl9Owor
CQk1MzYwOUY5MDIxREZGQTlDMDA4RkE2MEEgLyogQ2hlY2sgLnhjZmlsZWxpc3RzICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ2hlY2sgLnhj
ZmlsZWxpc3RzIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0
UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiU2NyaXB0cy9j
aGVjay14Y2ZpbGVsaXN0cy5zaFxuIjsKKwkJfTsKKwkJNTM2NkZEQjIyMkQ1NDg1QjAwQkY5NEFG
IC8qIENvcHkgU3VwcG9ydCBTY3JpcHRzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhz
ID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBTdXBwb3J0IFNjcmlwdHMiOworCQkJb3V0cHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJyc3luYyAtciAke1NSQ1JPT1R9L0FQSS90ZXN0cy90
ZXN0YXBpU2NyaXB0cyAke0JVSUxUX1BST0RVQ1RTX0RJUn1cbiI7CisJCX07CisJCTUzOTk2NkUz
MjM3Q0Q2NzQwMDMzQjBEMiAvKiBDcmVhdGUgVmVyc2lvbnMvQ3VycmVudC9IZWxwZXJzIHN5bWxp
bmsgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxl
TGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9
ICJDcmVhdGUgVmVyc2lvbnMvQ3VycmVudC9IZWxwZXJzIHN5bWxpbmsiOworCQkJb3V0cHV0Rmls
ZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICIjIElmIG9uIGEgZGVlcC1idW5kbGUgc3lzdGVtLCBzZXQg
dXAgYSBsaW5rIGZyb20gSGVscGVycyB0byBWZXJzaW9ucy9BL0hlbHBlcnNcblxuaWYgW1sgXCIk
e0pBVkFTQ1JJUFRDT1JFX0hFTFBFUlNfRElSfVwiID1+IFwiVmVyc2lvbnNcIiBdXTsgdGhlblxu
ICAgIGlmIFtbIFwiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfVwiID09IFwiTk9cIiBdXTsgdGhlblxu
ICAgICAgICBsbiAtZmhzIFZlcnNpb25zL0N1cnJlbnQvSGVscGVycyBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS8ke0pBVkFTQ1JJUFRDT1JFX0hFTFBFUlNfRElSfS8uLi8uLi8uLlwiXG4gICAgZWxz
ZVxuICAgICAgICBsbiAtZmhzIFZlcnNpb25zL0N1cnJlbnQvSGVscGVycyBcIiR7SU5TVEFMTF9E
SVJ9Ly4uLy4uLy4uXCJcbiAgICBmaVxuZmlcbmV4aXQgMFxuIjsKKwkJfTsKKwkJNTNCNEJEMDkx
RjY4QUY4OTAwRDJCRUEzIC8qIEdlbmVyYXRlIFVuaWZpZWQgU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJ
CQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9TY3JpcHRzL2dlbmVyYXRl
LXVuaWZpZWQtc291cmNlcy5zaCIsCisJCQkJIiQoU1JDUk9PVCkvU291cmNlcy50eHQiLAorCQkJ
CSIkKFNSQ1JPT1QpL1NvdXJjZXNDb2NvYS50eHQiLAorCQkJCSIkKFNSQ1JPT1QpL2luc3BlY3Rv
ci9yZW1vdGUvU291cmNlc0NvY29hLnR4dCIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBV
bmlmaWVkIFNvdXJjZXMiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCQkiJChTUkNS
T09UKS9VbmlmaWVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCIsCisJCQkpOworCQkJb3V0cHV0
UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiU2NyaXB0cy9n
ZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2hcbiI7CisJCX07CisJCTVEMjlEOEJFMEU5ODYwQjQw
MEMzRDJEMCAvKiBDaGVjayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChUQVJHRVRfQlVJTERfRElSKS8kKEVYRUNVVEFCTEVfUEFUSCkiLAorCQkJKTsKKwkJCW5hbWUg
PSAiQ2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0ZXJuYWxzIjsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG5pZiBb
IC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxlcy1hbmQtZXh0ZXJu
YWxzIF07IHRoZW5cbiAgICAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJs
ZXMtYW5kLWV4dGVybmFsc1xuZmlcbiI7CisJCX07CisJCTVEMkY3Q0Y5MEM2ODc1QkIwMEI1Qjcy
QiAvKiBVcGRhdGUgSW5mby5wbGlzdCB3aXRoIHZlcnNpb24gaW5mb3JtYXRpb24gKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQki
JChTUkNST09UKS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnIiwKKwkJCSk7CisJCQlu
YW1lID0gIlVwZGF0ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZvcm1hdGlvbiI7CisJCQlv
dXRwdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9JbmZvLnBsaXN0IiwKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIjIFRvdWNoIEluZm8ucGxpc3QgdG8gbGV0IFhjb2Rl
IGtub3cgaXQgbmVlZHMgdG8gY29weSBpdCBpbnRvIHRoZSBidWlsdCBwcm9kdWN0XG5pZiBbWyBc
IiR7Q09ORklHVVJBVElPTn1cIiAhPSBcIlByb2R1Y3Rpb25cIiBdXTsgdGhlblxuICAgIHRvdWNo
IFwiJFNSQ1JPT1QvSW5mby5wbGlzdFwiO1xuZmk7XG4iOworCQl9OworCQk1RDVEOEFCRjBFMEQw
QjAzMDBGOUM2OTIgLyogQ3JlYXRlIC91c3IvbG9jYWwvYmluL2pzYyBzeW1saW5rICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoRFNUUk9PVCkkKElOU1RBTExfUEFUSCkvanNjIiwKKwkJCSk7CisJCQluYW1lID0gIkNyZWF0
ZSAvdXNyL2xvY2FsL2Jpbi9qc2Mgc3ltbGluayI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChEU1RST09UKS91c3IvbG9jYWwvYmluL2pzYyIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hl
bGxTY3JpcHQgPSAiaWYgW1sgXCIke1NLSVBfSU5TVEFMTH1cIiA9PSBcIk5PXCIgJiYgXCIke1dL
X1VTRV9BTFRFUk5BVEVfRlJBTUVXT1JLU19ESVJ9XCIgPT0gXCJOT1wiIF1dOyB0aGVuXG4gICAg
bWtkaXIgLXAgXCIke0RTVFJPT1R9L3Vzci9sb2NhbC9iaW5cIlxuICAgIGNkIFwiJHtEU1RST09U
fS91c3IvbG9jYWwvYmluXCJcbiAgICBpZiBbIC1MIGpzYyBdOyB0aGVuXG4gICAgICAgIHJtIC1m
IGpzY1xuICAgIGZpXG4gICAgbG4gLXMgXCIuLi8uLi8uLiR7SU5TVEFMTF9QQVRIfS9qc2NcIiBq
c2NcbiAgICBleGl0XG5maVxuIjsKKwkJfTsKKwkJNURGN0UxQ0MxODhFNkI4NzAwM0Y5QTQ2IC8q
IENvcHkganNjIGludG8gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9qc2MiLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBqc2MgaW50byBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS8kKEpBVkFTQ1JJUFRDT1JFX0hFTFBFUlNfRElSKS9qc2MiLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG4jIFNraXAgZm9yIFByb2R1
Y3Rpb24gYnVpbGRzLlxuaWYgW1sgJHtDT05GSUdVUkFUSU9OOj1EZWJ1Z30gPT0gXCJQcm9kdWN0
aW9uXCIgXV07IHRoZW5cbiAgICBleGl0XG5maVxuXG5ta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS8ke0pBVkFTQ1JJUFRDT1JFX0hFTFBFUlNfRElSfVwiXG5kaXR0byBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9qc2NcIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke0pBVkFTQ1JJUFRD
T1JFX0hFTFBFUlNfRElSfS9qc2NcIlxuIjsKKwkJfTsKKwkJNjU3N0ZGQzYyNzZBQzhEMjAwMTFB
RUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSA4OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0
UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQ
YXRoIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkJIiR7T1VUUFVUX0FMVEVSTkFURV9ST09UX1BBVEh9IiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
enNoOworCQkJc2hlbGxTY3JpcHQgPSAiXCIke1NSQ1JPT1R9L1NjcmlwdHMvY3JlYXRlLXN5bWxp
bmstdG8tYWx0cm9vdC5zaFwiXG4iOworCQl9OworCQk2NTc4OEFBMDE4QjQwOUVCMDBDMTg5RkYg
LyogT2ZmbGluZSBBc3NlbWJsZSAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiT2ZmbGluZSBBc3NlbWJs
ZSI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJpZiBbWyBcIiR7QUNUSU9OfVwiID09IFwiaW5zdGFsbGhkcnNcIiBdXTsgdGhlblxuICAg
IGV4aXQgMFxuZmlcblxuT0ZGTElORUFTTV9BUkdTPVwiXCJcbmlmIFtbIFwiJHtERVBMT1lNRU5U
X0xPQ0FUSU9OfVwiID09IFwiWUVTXCIgXV07IHRoZW5cbiAgICBPRkZMSU5FQVNNX0FSR1M9XCIk
e09GRkxJTkVBU01fQVJHU30gLS13ZWJraXQtYWRkaXRpb25zLXBhdGg9JHtXS19XRUJLSVRBRERJ
VElPTlNfSEVBREVSU19GT0xERVJfUEFUSH1cIlxuZmlcblxuY2QgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vdXNyL2Jpbi9lbnYgcnVi
eSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiBcIi1JJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCIgSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yXCIgTExJbnRBc3NlbWJseS5oIFwiJHtCVUlMRF9WQVJJQU5UU31cIiAk
e09GRkxJTkVBU01fQVJHU30gfHwgZXhpdCAxXG4iOworCQl9OworCQk2NUZCM0Y2NTA5RDExRTkx
MDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCQkiJChT
UkNST09UKS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IiwKKwkJCSk7CisJCQlpbnB1
dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3Vy
Y2VzLnNoIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJ
CQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IiwKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJTY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291
cmNlcy5zaFxuIjsKKwkJfTsKKwkJQTU1REVBQTQxNjcwM0RGNzAwM0RCODQxIC8qIENoZWNrIEZv
ciBJbmFwcHJvcHJpYXRlIE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoVEFS
R0VUX0JVSUxEX0RJUikvJChFWEVDVVRBQkxFX1BBVEgpIiwKKwkJCSk7CisJCQluYW1lID0gIkNo
ZWNrIEZvciBJbmFwcHJvcHJpYXRlIE1hY3JvcyBpbiBFeHRlcm5hbCBIZWFkZXJzIjsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAt
ZVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIGV4
aXQgMDtcbmZpXG5cbmlmIFsgLWYgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHBy
b3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVhZGVycyBdOyB0aGVuXG4gICAgLi4vLi4vVG9v
bHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1tYWNyb3MtaW4tZXh0ZXJuYWwtaGVh
ZGVycyBIZWFkZXJzIFByaXZhdGVIZWFkZXJzL0pTQmFzZVByaXZhdGUuaFxuZmlcbiI7CisJCX07
CisJCUUxQUMyRTJDMjBGN0I5NTgwMEIwODk3RCAvKiBVbmxvY2sgS2V5Y2hhaW4gKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7
CisJCQluYW1lID0gIlVubG9jayBLZXljaGFpbiI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0
aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJVTkxPQ0tfU0NSSVBUX1BBVEg9XCIke1NS
Q1JPT1R9Ly4uLy4uLy4uL0ludGVybmFsL1Rvb2xzL1NjcmlwdHMvdW5sb2NrLXNhZmFyaS1lbmdp
bmVlcmluZy1rZXljaGFpbi1pZi1uZWVkZWRcIlxuXG5bWyAteCBcIiR7VU5MT0NLX1NDUklQVF9Q
QVRIfVwiIF1dICYmIGV4ZWMgXCIke1VOTE9DS19TQ1JJUFRfUEFUSH1cIlxuXG5leGl0IDBcbiI7
CisJCX07CisJCUUzRDZGNkVEMjVENzhDMDEwMEMyMEVCNCAvKiBHZW5lcmF0ZSBFbnRpdGxlbWVu
dHMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxl
TGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkv
U2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaCIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5l
cmF0ZSBFbnRpdGxlbWVudHMiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJ
CQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChXS19QUk9DRVNTRURfWENFTlRfRklMRSkiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxl
bWVudHMuc2hcbiI7CisJCX07CisJCUUzRDZGNkVFMjVENzhDRjYwMEMyMEVCNCAvKiBHZW5lcmF0
ZSBFbnRpdGxlbWVudHMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoU1JDUk9PVCkvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaCIsCisJCQkpOworCQkJ
bmFtZSA9ICJHZW5lcmF0ZSBFbnRpdGxlbWVudHMiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9
ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChXS19QUk9DRVNTRURfWENFTlRf
RklMRSkiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIlNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2hcbiI7CisJCX07CisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkwRjYxODMzOTFDNDVGNjJBMDA3MjQ1MEIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNjE4MzQ1MUM0NUY2NjAwMDcyNDUwQiAvKiB0ZXN0YWly
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworCQkwRjkzMjc0RjFDMjBCQ0JBMDBDRjY1NjQgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGOTMyNzVCMUMyMEJDREYwMENG
NjU2NCAvKiBkeW5iZW5jaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJMEZFQzg1OTUxQkRCNUNGMTAw
ODBGRjc0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlFMzky
RTZGODI0RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUyRTY1QTFDMjc2ODI3NjAwMDJCNEMwQSAvKiBCM0VzdGltYXRlU3RhdGljRXhl
Y3V0aW9uQ291bnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUM4NUFGMUJEQjVENUUwMDgw
RkY3NCAvKiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzNBNzdCQTIyRjI0ODBG
MDAzODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzQTc3QjkyMkYy
NDgwQjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDM0E3N0I4
MjJGMjQ4MDkwMDM4MjdGRiAvKiB0ZXN0YjNfNC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzNB
NzdCNzIyRjI0ODA2MDAzODI3RkYgLyogdGVzdGIzXzUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUMzQTc3QjYyMkYyNDgwMzAwMzgyN0ZGIC8qIHRlc3RiM182LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTVDM0E3N0I1MjJGMjQ4MDAwMDM4MjdGRiAvKiB0ZXN0YjNfNy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1QzNBNzdCNDIyRjI0N0ZDMDAzODI3RkYgLyogdGVzdGIzXzguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisJCTBGRjkyMkM0MTRGNDZCMTMwMDQxQTI0RSAvKiBTb3VyY2VzICovID0geworCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEZGOTIyRDQxNEY0NkI0MTAwNDFBMjRFIC8qIExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJMTQxMjExMUQwQTQ4NzkzQzAw
NDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxNDQw
MDU3RjBBNTMzNTY0MDAwNUYwNjEgLyogSlNOb2RlLmMgaW4gU291cmNlcyAqLywKKwkJCQkxNDQw
MDc1ODBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
MTQxMjExMzQwQTQ4Nzk1ODAwNDgwMjU1IC8qIG1pbmlkb20uYyBpbiBTb3VyY2VzICovLAorCQkJ
CTE0NDAwNjNGMEE1MzU5OEEwMDA1RjA2MSAvKiBOb2RlLmMgaW4gU291cmNlcyAqLywKKwkJCQkx
NDQwMDc0QjBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxpc3QuYyBpbiBTb3VyY2VzICovLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkx
NEJENTlCQzBBM0U4RjkwMDBCQUY1OUMgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI5RUNCMDMxODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzIw
MzI4MjAxOTgxOTc5RDAwODhCNDk5IC8qIEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jIGlu
IFNvdXJjZXMgKi8sCisJCQkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUZFMEQ0QTA2MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQ0I4QjI3MUQyNUJCODUw
MDZGMjQ2MyAvKiBGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkUwRDRBMDkxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVz
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUgLyogSlNF
eHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGRjQ3QzVBMUVCRkU4NDYwMEYyODBC
NyAvKiBKU09iamVjdEdldFByb3h5VGFyZ2V0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
QzRFOEU5NjFEQkVCRTYyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxNDcxNDgzMDIwRDMyM0QzMDA5MEU2MzAgLyogSlNXcmFwcGVyTWFwVGVzdHMubW0g
aW4gU291cmNlcyAqLywKKwkJCQlGRUY0OUFBQjFFQjk0ODRCMDA2NTNCREIgLyogTXVsdGl0aHJl
YWRlZE11bHRpVk1FeGVjdXRpb25UZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFN0M0MTk2
MUI5N0ZDNEIwMEY0RDU5OCAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTY1NTcwRjVBMUFBNEMzRUEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3Mx
NDE4MDkubW0gaW4gU291cmNlcyAqLywKKwkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyog
dGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNTNFQUZFMkYyMDhERkFCNDAwN0Q1MjRCIC8q
IHRlc3RhcGkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0
IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MzBGREU3NTIxRkFCMDA2MDAwNTlE
NjUgLyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLywKKwkJCQk1MzQ5MDI4NTFDNzI3NkI3
MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkxNEJENjg4
NjIxNTE5MTMxMDA1MERBRkYgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJCTE0QkQ2ODlEMjE1MTkxQzEwMDUwREFGRiAvKiBMTEludFNldHRpbmdzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworCQk1MkNEMEY1QTIyNDJGNTY5MDA0QTE4QTUgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTUyQ0QwRjY4MjI0MkY3MUMwMDRB
MThBNSAvKiB0ZXN0ZGZnLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk2NTExMjJGQTE0MDQ2QTRDMDAy
QjEwMUQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTY1MTEy
MzA3MTQwNDZCMEEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk3
OTI4MUJCRTIwQjYyQjNFMDAyRTJBNjAgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTc5NTRCRTBCMjBCNjJENjQwMDlCQzgzQSAvKiB0ZXN0bWVtLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CisJCTkzMkY1QjkxMDgyMkExQzcwMDczNjk3NSAvKiBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERl
cHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMzM0JCREMy
MTEwRjdEOTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUzMzNCQkREMjExMEY3RTEwMDc2MThFQyAvKiBERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzQjJBNTQ4MjI2NTQzQkYwMDVB
MEY3OSAvKiBGVExMb3dlckRGR1RvQjMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUM0MTk2NjIy
MjcwRTAwMDAwNDdCN0NEIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyQ29tcGF0aWJpbGl0
eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk5QUVDMzI1NTk0NTdGMDBCNzg0ODUgLyogSW50
bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzNjY0NDFFMjU0NDA5QjMw
MDAxODc2RiAvKiBJbnRsTGlzdEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc4REM4
RDI3Mjc2Mjk0MDA0MjdCMEIgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMzA4NzNFNzI3MjU1OTQxMDA1M0I2MDEgLyogSW50bFBsdXJhbFJ1bGVzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUEzRUU4NTQzMjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29ya2Fyb3Vu
ZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzhFODc5MDI1NEI5Nzg0MDBGNkY5RTQgLyogSlNE
YXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE5RTFGNzM1RjE2MDAzN0ZDMzMg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERkJDMkNBNjI1
RTZENUI5MDA4MUJERDEgLyogU3ltYm9sU3R1YnNGb3JTYWZhcmlDb21wYXRpYmlsaXR5Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOUExRjczNUU3ODAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNUYxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTlCMUY3MzVFNzgw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIz
MTU3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MzZCMzE1ODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkExRkEzRTc4QjAwMjZBNTQ1IC8qIFVu
aWZpZWRTb3VyY2U0LW1tLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNjYxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzMEE2NkJC
MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNS1tbS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUzNkIzMTY3MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MzZCMzE2RjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNkUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2U3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTNDMUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlOC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzEzRDFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2
QjMxODYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MzZCMzE4MzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTExLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUzNkIzMThDMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlMTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOEQxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE3QzFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTE0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIz
MTdEMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMTUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTM2QjMxNzYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxNi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MzZCMzE3NTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTE3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTIxMUY3MUM1OTkwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlMTguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMjIxRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxOS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzEx
QTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTIwLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUzNkIzMTE5MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMjEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTM2QjMxMEYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Uy
Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzExMjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTIzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTIwMUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlMjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMjMx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UyNS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MzZCMzEyQjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTI2LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUzNkIzMTI4MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMjcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxN0IxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UyOC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE3RTFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTI5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTFGMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTM2QjMxMjQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzMS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzZCMzEyQTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTMyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTI5MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlMzMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMUIxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UzNC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzExODFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTM1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
NkIzMTEwMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlMzYuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTM2QjMxMTExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UzNy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE4NTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTM4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTg0MUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlMzkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMzQxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0MC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZC
MzEzMTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQxLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUzNkIzMTNCMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxM0UxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2U0My5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE0QzFGNzFDNTk5MDAzN0ZDMzMgLyog
VW5pZmllZFNvdXJjZTQ0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTUxMUY3MUM1OTkw
MDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMx
NDYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U0Ni5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MzZCMzE0NTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTQ3LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUzNkIzMTU0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNl
NDguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNUIxRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2U0OS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE0RDFGNzFDNTk5MDAz
N0ZDMzMgLyogVW5pZmllZFNvdXJjZTUwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTUw
MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTM2QjMxNDcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1Mi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MzZCMzE0NDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTUz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTMzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlm
aWVkU291cmNlNTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMzIxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2U1NS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzEzQTFG
NzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTU2LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUzNkIzMTNGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNTcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTM2QjMxNzAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U1OC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE2RDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmll
ZFNvdXJjZTU5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTU1MUY3MUM1OTkwMDM3RkMz
MyAvKiBVbmlmaWVkU291cmNlNjAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNUExRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MzZCMzE2MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTYyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUzNkIzMTVFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNzIxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2U2NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE2QjFGNzFDNTk5MDAzN0ZDMzMg
LyogVW5pZmllZFNvdXJjZTY1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTY1MUY3MUM1
OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNjYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2
QjMxNjgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U2Ny5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MzZCMzEzNTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTY4LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUzNkIzMTMwMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291
cmNlNjkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNzExRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U3MC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE2QzFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTcxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIz
MTY0MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTM2QjMxNjkxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3My5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MzZCMzE1NjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTc0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTU5MUY3MUM1OTkwMDM3RkMzMyAvKiBV
bmlmaWVkU291cmNlNzUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNjExRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3Ni5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE1
RDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTc3LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUzNkIzMTRFMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlNzguY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTM2QjMxNEYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U3
OS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE0MDFGNzFDNTk5MDAzN0ZDMzMgLyogVW5p
ZmllZFNvdXJjZTgwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTM5MUY3MUM1OTkwMDM3
RkMzMyAvKiBVbmlmaWVkU291cmNlODEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMkUx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MzZCMzEzNzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTgzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUzNkIzMTQzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNDgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2U4NS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE1MzFGNzFDNTk5MDAzN0ZD
MzMgLyogVW5pZmllZFNvdXJjZTg2LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTRBMUY3
MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlODcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTM2QjMxNUMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U4OC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MzZCMzE2MjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTg5LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTQyMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVk
U291cmNlOTAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNDkxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U5MS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzE1MjFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTkyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUz
NkIzMTRCMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTM2QjMxNDExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5NC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MzZCMzEzODFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNv
dXJjZTk1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzNkIzMTJGMUY3MUM1OTkwMDM3RkMzMyAv
KiBVbmlmaWVkU291cmNlOTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMzYxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5Ny5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzZC
MzE2QTFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUzNkIzMTYzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOTAxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMDAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxODkxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMDEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxODIxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2
QjMxODcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTM2QjMxNzMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNzgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxN0YxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMDYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxN0ExRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTM2QjMxMjcxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTM2QjMxMkMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMDku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNzQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMTAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxNzcxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMTEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxODAx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTM2QjMxNzkxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTM2QjMxOEYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Ux
MTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOEExRjcxQzU5OTAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMTUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxODExRjcxQzU5OTAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMx
ODgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTcuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTM2QjMxMTUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMTguY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMEMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3Vy
Y2UxMTkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMjYxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2UxMjAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMkQxRjcxQzU5
OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2
QjMxMjUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTM2QjMxMUUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMTQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRT
b3VyY2UxMjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMEQxRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2UxMjUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMTcxRjcx
QzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTM2QjMxMUMxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTM2QjMxOEUxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMjgu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOEIxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZp
ZWRTb3VyY2UxMjkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMTMxRjcxQzU5OTAwMzdG
QzMzIC8qIFVuaWZpZWRTb3VyY2UxMzAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxMEUx
RjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTM2QjMxMTYxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTM2QjMxMUQxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2Ux
MzMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOUMxRjczNUU3RDAwMzdGQzMzIC8qIFVu
aWZpZWRTb3VyY2UxMzQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM2QjMxOUQxRjczNUU3RDAw
MzdGQzMzIC8qIFVuaWZpZWRTb3VyY2UxMzUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM1QzI0
NkMxRjdBMTc3ODAwNkVDNDBFIC8qIFVuaWZpZWRTb3VyY2UxMzYuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTMwQTY2QkMxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxMzcuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkQxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3Vy
Y2UxMzguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkUxRkEzRTc4QjAwMjZBNTQ1IC8q
IFVuaWZpZWRTb3VyY2UxMzkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QkYxRkEzRTc4
QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMw
QTY2QzAxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDEuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTMwQTY2QzExRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QzIxRkEzRTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRT
b3VyY2UxNDMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QzMxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UxNDQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMwQTY2QzQxRkEz
RTc4QjAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2UxNDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTM4RjE1RjIyNjhGQkM3QjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDYuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTM4RjE1RUUyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNDcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1RTcyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZp
ZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1RjAyNjhGQkJCNjAwRDYw
MUM0IC8qIFVuaWZpZWRTb3VyY2UxNDkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1RUIy
NjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTM4RjE1RTgyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTM4RjE1RTkyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2Ux
NTIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1RUQyNjhGQkJCNjAwRDYwMUM0IC8qIFVu
aWZpZWRTb3VyY2UxNTMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1RUEyNjhGQkJCNjAw
RDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4RjE1
RUYyNjhGQkJCNjAwRDYwMUM0IC8qIFVuaWZpZWRTb3VyY2UxNTUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFM0ExMEU4MTI3ODAzRTNCMDBEM0FDRDAgLyogWnljb3JlLmMg
aW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjBBMjI3N0Y0MzZBMDBBNDVGQkIgLyogWnljb3JlQWxs
b2NhdG9yLmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjBBNjI3N0Y0MzZBMDBBNDVGQkIgLyog
Wnljb3JlQml0c2V0LmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjBBMTI3N0Y0MzZBMDBBNDVG
QkIgLyogWnljb3JlRm9ybWF0LmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjA5NTI3N0Y0MzZB
MDBBNDVGQkIgLyogWnljb3JlTGlzdC5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRDIwOTIyNzdG
NDM2QTAwQTQ1RkJCIC8qIFp5Y29yZVN0cmluZy5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRDIw
OUUyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5Y29yZVZlY3Rvci5jIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTMzRDIwOEQyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzLmMgaW4gU291cmNlcyAqLywKKwkJCQlF
MzNEMjA5MTI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNEZWNvZGVyLmMgaW4gU291cmNlcyAqLywK
KwkJCQlFMzNEMjBBNTI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNEZWNvZGVyRGF0YS5jIGluIFNv
dXJjZXMgKi8sCisJCQkJRTMzRDIwOUMyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVy
LmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjA5ODI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNG
b3JtYXR0ZXJBVFQuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzM0QyMDkwMjc3RjQzNkEwMEE0NUZC
QiAvKiBaeWRpc0Zvcm1hdHRlckJhc2UuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzM0QyMDlCMjc3
RjQzNkEwMEE0NUZCQiAvKiBaeWRpc0Zvcm1hdHRlckJ1ZmZlci5jIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTMzRDIwQTAyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzRm9ybWF0dGVySW50ZWwuYyBpbiBT
b3VyY2VzICovLAorCQkJCUUzM0QyMDk0Mjc3RjQzNkEwMEE0NUZCQiAvKiBaeWRpc01ldGFJbmZv
LmMgaW4gU291cmNlcyAqLywKKwkJCQlFMzNEMjA4RTI3N0Y0MzZBMDBBNDVGQkIgLyogWnlkaXNN
bmVtb25pYy5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRDIwQTQyNzdGNDM2QTAwQTQ1RkJCIC8q
IFp5ZGlzUmVnaXN0ZXIuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzM0QyMDkzMjc3RjQzNkEwMEE0
NUZCQiAvKiBaeWRpc1NoYXJlZERhdGEuYyBpbiBTb3VyY2VzICovLAorCQkJCUUzM0QyMDlBMjc3
RjQzNkEwMEE0NUZCQiAvKiBaeWRpc1N0cmluZy5jIGluIFNvdXJjZXMgKi8sCisJCQkJRTMzRDIw
QTMyNzdGNDM2QTAwQTQ1RkJCIC8qIFp5ZGlzVXRpbHMuYyBpbiBTb3VyY2VzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk5MzJG
NUJEQzA4MjJBMUM3MDA3MzY5NzUgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJCTkzMkY1QkREMDgyMkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CX07CisJCUZFNTMzQ0EyMUYyMTdEQjMwMDE2QTFGRSAvKiBTb3VyY2VzICovID0geworCQkJaXNh
ID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkJRkU1MzNDQUQxRjIxN0VBNTAwMTZBMUZFIC8qIHRlc3RtYXNt
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNjE4MzQ3
MUM0NUY2N0EwMDcyNDUwQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNjE4MzM4MUM0NUY2MkEwMDcyNDUw
QiAvKiB0ZXN0YWlyICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjYxODM0NjFDNDVGNjdBMDA3MjQ1
MEIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjkzMjc1RDFDMjBCRjNB
MDBDRjY1NjQgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjkzMjc0RTFDMjBCQ0JBMDBDRjY1NjQgLyogZHlu
YmVuY2ggKi87CisJCQl0YXJnZXRQcm94eSA9IDBGOTMyNzVDMUMyMEJGM0EwMENGNjU2NCAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGRUM4NUIxMUJEQjVEOEYwMDgwRkY3
NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDBGRUM4NTk0MUJEQjVDRjEwMDgwRkY3NCAvKiB0ZXN0YjMgKi87
CisJCQl0YXJnZXRQcm94eSA9IDBGRUM4NUIwMUJEQjVEOEYwMDgwRkY3NCAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGRjkyMkQzMTRGNDZCMkYwMDQxQTI0RSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRkY5MjJEMjE0RjQ2QjJGMDA0MUEyNEUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkxNEJENjg4MjIxNTE5MTMxMDA1MERBRkYgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAxNEJENjg4MzIxNTE5MTMxMDA1MERBRkYgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkxNEJENjg5MDIxNTE5MTQ1MDA1MERBRkYgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAxNEJENjg5MTIxNTE5MTQ1MDA1MERBRkYgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkxNEJENjg5OTIxNTE5MTZEMDA1MERBRkYgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAxNEJENjg4MTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRTZXR0aW5nc0V4dHJh
Y3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMTRCRDY4OTgyMTUxOTE2RDAwNTBEQUZGIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMTRCRDY4OUIyMTUxOTE3NDAwNTBEQUZG
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OworCQkJdGFyZ2V0ID0gMTRCRDY4OEYyMTUxOTE0NTAwNTBEQUZGIC8qIExMSW50IFNldHRp
bmdzICovOworCQkJdGFyZ2V0UHJveHkgPSAxNEJENjg5QTIxNTE5MTc0MDA1MERBRkYgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwMDIzMDM1RUYzMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjBGRjIzMDM1RUYzMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwNzIzMDM1RjBGMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjEwNjIzMDM1RjBGMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwOTIzMDM1RjEzMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjEwODIzMDM1RjEzMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwQjIzMDM1RjFBMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjEwQTIzMDM1RjFBMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwRDIzMDM1RjQ2MDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjEwQzIzMDM1RjQ2MDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjEwRjIzMDM1RjREMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjEwRTIzMDM1RjREMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjExMTIzMDM1RjUzMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjExMDIzMDM1RjUzMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjExMzIzMDM1RjU4MDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjExMjIzMDM1RjU4MDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjExNTIzMDM1RjVFMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjExNDIzMDM1RjVFMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjExNzIzMDM1RjYzMDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjExNjIzMDM1RjYzMDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNENGQjExOTIzMDM1RjY5MDBGMDA0OEMg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOworCQkJdGFyZ2V0UHJveHkgPSAxNENGQjExODIzMDM1RjY5MDBGMDA0OEMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkxNEQ5RDlEQTIxODQ2MkI1MDA5MTI2QzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3Vy
Y2VzICovOworCQkJdGFyZ2V0UHJveHkgPSAxNEQ5RDlEOTIxODQ2MkI1MDA5MTI2QzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk1MkNEMEY2NjIyNDJGNUEzMDA0QTE4QTUg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA1MkNEMEY1OTIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLzsK
KwkJCXRhcmdldFByb3h5ID0gNTJDRDBGNjUyMjQyRjVBMzAwNEExOEE1IC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNTNCNEJEMTQxRjY4QzJBQTAwRDJCRUEzIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gNTNCNEJEMDQxRjY4QUY4OTAwRDJCRUEzIC8qIEdlbmVyYXRlIFVuaWZpZWQgU291
cmNlcyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNTNCNEJEMTMxRjY4QzJBQTAwRDJCRUEzIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNUQ2OUU5MTIxNTJCRTU0NzAwMjhENzIw
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OworCQkJdGFyZ2V0ID0gOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gNUQ2OUU5MTExNTJCRTU0NzAwMjhENzIwIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNUQ2QjJBNEYxNTJCOUUyMzAwNTIzMURFIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CisJCQl0YXJnZXRQ
cm94eSA9IDVENkIyQTRFMTUyQjlFMjMwMDUyMzFERSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CisJCTVENkIyQTUxMTUyQjlFMjMwMDUyMzFERSAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDE0
QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovOworCQkJdGFyZ2V0UHJveHkgPSA1
RDZCMkE1MDE1MkI5RTIzMDA1MjMxREUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OworCQk1RDZCMkE1NTE1MkI5RTIzMDA1MjMxREUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2NTExMjJGNzE0
MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLzsKKwkJCXRhcmdldFByb3h5ID0gNUQ2QjJB
NTQxNTJCOUUyMzAwNTIzMURFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJ
NUQ2QjJBNTcxNTJCOUUyRTAwNTIzMURFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJ
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNUQ2QjJBNDcxNTJCOUUx
NzAwNTIzMURFIC8qIFRlc3QgVG9vbHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDVENkIyQTU2MTUy
QjlFMkUwMDUyMzFERSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTY1MjQ0
QkQzMThFQ0I1MDAwMDEwQjcwOCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDY1RkIzRjY2MDlEMTFFOTEwMEY0
OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CisJCQl0YXJnZXRQcm94eSA9IDY1MjQ0QkQyMThF
Q0I1MDAwMDEwQjcwOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTY1Nzg4
QTlFMThCNDA5RUIwMEMxODlGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGRjkyMkMzMTRGNDZCMTMwMDQx
QTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDY1
Nzg4QTlGMThCNDA5RUIwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTY1Nzg4QUFCMThCNDBBM0IwMEMxODlGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDY1RkIzRjY2MDlE
MTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CisJCQl0YXJnZXRQcm94eSA9IDY1
Nzg4QUFBMThCNDBBM0IwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTY1Nzg4QUFEMThCNDBBN0IwMEMxODlGRiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDY1Nzg4QTlEMThC
NDA5RUIwMEMxODlGRiAvKiBPZmZsaW5lIEFzc2VtYmxlciAqLzsKKwkJCXRhcmdldFByb3h5ID0g
NjU3ODhBQUMxOEI0MEE3QjAwQzE4OUZGIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKwkJNjVGQjNGN0UwOUQxMUVGMzAwRjQ5REVCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNjVGQjNGNjYw
OUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLzsKKwkJCXRhcmdldFByb3h5ID0g
NjVGQjNGN0QwOUQxMUVGMzAwRjQ5REVCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKwkJNzk1NEJFMEQyMEI2MzM0ODAwOUJDODNBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNzkyODFCQkQy
MEI2MkIzRTAwMkUyQTYwIC8qIHRlc3RtZW0gKi87CisJCQl0YXJnZXRQcm94eSA9IDc5NTRCRTBD
MjBCNjMzNDgwMDlCQzgzQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTkz
MkY1QkU3MDgyMkExQzcwMDczNjk3NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDkzMkY1QjNFMDgyMkExQzcw
MDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKKwkJCXRhcmdldFByb3h5ID0gOTMyRjVCRTYw
ODIyQTFDNzAwNzM2OTc1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJRkU1
MzNDQUYxRjIxN0VDNjAwMTZBMUZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlp
c2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gRkU1MzNDQTExRjIxN0RCMzAw
MTZBMUZFIC8qIHRlc3RtYXNtICovOworCQkJdGFyZ2V0UHJveHkgPSBGRTUzM0NBRTFGMjE3RUM2
MDAxNkExRkUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworLyogRW5kIFBCWFRh
cmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQlu
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3
MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNjE4MzNGMUM0
NUY2MkEwMDcyNDUwQiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBG
QzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY2MTgzNDAxQzQ1RjYyQTAwNzI0
NTBCIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8q
IFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY2MTgzNDExQzQ1RjYyQTAwNzI0NTBCIC8q
IFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNjE4MzQyMUM0NUY2MkEwMDcyNDUwQiAvKiBQ
cm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29s
RXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGOTMyNzU1MUMyMEJDQkEwMENGNjU2NCAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1
dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJMEY5MzI3NTYxQzIwQkNCQTAwQ0Y2NTY0IC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhj
Y29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMEY5MzI3NTcxQzIwQkNCQTAwQ0Y2NTY0IC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7
CisJCX07CisJCTBGOTMyNzU4MUMyMEJDQkEwMENGNjU2NCAvKiBQcm9kdWN0aW9uICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CisJCTBGRUM4NUE5MUJEQjVDRjEwMDgwRkY3NCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MEZFQzg1QUExQkRCNUNGMTAwODBGRjc0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFC
RjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEZFQzg1
QUIxQkRCNUNGMTAwODBGRjc0IC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEz
NjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGRUM4NUFD
MUJEQjVDRjEwMDgwRkY3NCAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2
OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGRjkyMkNC
MTRGNDZCMTMwMDQxQTI0RSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMz
MDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEZGOTIyQ0MxNEY0NkIxMzAw
NDFBMjRFIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3
IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEZGOTIyQ0QxNEY0NkIxMzAwNDFBMjRF
IC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyog
VG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsK
KwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGRjkyMkNFMTRGNDZCMTMwMDQxQTI0RSAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBU
b29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4
ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQxMjExM0IwQTQ4Nzk4NDAwNDgwMjU1IC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxl
LnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMTQxMjExM0MwQTQ4Nzk4NDAwNDgwMjU1IC8qIFByb2R1Y3Rpb24gKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhj
Y29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKKwkJMTQ5QzI3NUUwODkwMkFGRTAwOEE5RUZDIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQkxNDlDMjc1RjA4OTAyQUZFMDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAx
QzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkx
NDlDMjc2MTA4OTAyQUZFMDA4QTlFRkMgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkw
NTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFsOworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxNDlDMjc2ODA4OTAyQUZFMDA4QTlFRkMgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2Nv
bmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworCQkxNDlDMjc2OTA4OTAyQUZFMDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMTQ5QzI3NkIw
ODkwMkFGRTAwOEE5RUZDIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZC
Njg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0OUMyNzZEMDg5MDJBRkUwMDhB
OUVGQyAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBBbGw7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQkxNDlDMjc2RTA4OTAyQUZFMDA4QTlFRkMgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBBbGw7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTE0OUMyNzcwMDg5MDJBRkUwMDhBOUVGQyAvKiBQcm9kdWN0aW9uICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBS
T0RVQ1RfTkFNRSA9IEFsbDsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJ
MTQ5QzI3NzIwODkwMkFGRTAwOEE5RUZDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQ0
MEJBOUU4QTcwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQ5QzI3NzMwODkw
MkFGRTAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDQwQkE5RThBNzAw
ODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMTQ5QzI3NzUwODkwMkFGRTAwOEE5RUZDIC8qIFByb2R1Y3Rpb24gKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gMUM5MDUxNDUwQkE5RThBNzAwODFFOUQwIC8qIEJhc2UueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9
OworCQkxNEJENTlENzBBM0U4RkM5MDBCQUY1OUMgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTNE
NkY2RUYyNUQ3OTFCMzAwQzIwRUI0IC8qIFRlc3RBUEkueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTRCRDU5RDgwQTNF
OEZDOTAwQkFGNTlDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTNENkY2RUYyNUQ3OTFCMzAw
QzIwRUI0IC8qIFRlc3RBUEkueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNEJENTlEOTBBM0U4RkM5MDBCQUY1OUMg
LyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBFM0Q2RjZFRjI1RDc5MUIzMDBDMjBFQjQgLyog
VGVzdEFQSS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTE0QkQ2ODhBMjE1MTkxMzEwMDUwREFGRiAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFi
bGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNEJE
Njg4QjIxNTE5MTMxMDA1MERBRkYgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEz
NjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0QkQ2ODhDMjE1MTkxMzEwMDUwREFGRiAvKiBQ
cm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xF
eGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJ
CX07CisJCTE0QkQ2ODhEMjE1MTkxMzEwMDUwREFGRiAvKiBQcm9kdWN0aW9uICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAq
LzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMTRCRDY4OTQyMTUx
OTE0NTAwNTBEQUZGIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNEJENjg5NTIxNTE5MTQ1
MDA1MERBRkYgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNEJENjg5NjIxNTE5MTQ1
MDA1MERBRkYgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMTRCRDY4OTcyMTUx
OTE0NTAwNTBEQUZGIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMTRDRkIx
MDEyMzAzNUVGMzAwRjAwNDhDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBO
TzsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xF
VkVMID0gMDsKKwkJCQlQUk9EVUNUX05BTUUgPSAiVW5sb2NrIGtleWNoYWluIjsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCTE0Q0ZCMTAyMjMwMzVFRjMwMEYwMDQ4QyAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJ
T05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJUFJPRFVDVF9OQU1FID0gIlVubG9j
ayBrZXljaGFpbiI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTE0Q0ZCMTAz
MjMwMzVFRjMwMEYwMDQ4QyAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIlVu
bG9jayBrZXljaGFpbiI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMTRD
RkIxMDQyMzAzNUVGMzAwRjAwNDhDIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIlVubG9jayBrZXljaGFpbiI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTUyQ0QwRjYwMjI0MkY1NjkwMDRBMThBNSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAy
MUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk1MkNEMEY2MTIyNDJGNTY5MDA0QTE4QTUg
LyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTUyQ0QwRjYyMjI0MkY1NjkwMDRBMThBNSAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTUyQ0QwRjYzMjI0MkY1
NjkwMDRBMThBNSAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMw
MEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJNTMyNUJEQzAyMURGRjJCMjAwQTBERUUxIC8qIERlYnVn
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29y
ZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09ERV9TSUdOX1NUWUxF
ID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk1MzI1QkRDMTIxREZGMkIyMDBBMERFRTEgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNj
cmlwdENvcmUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPREVfU0lH
Tl9TVFlMRSA9IEF1dG9tYXRpYzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk1MzI1QkRDMjIxREZGMkIyMDBB
MERFRTEgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlE
MCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQ09ERV9TSUdOX1NUWUxFID0gQXV0b21hdGljOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRB
UkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJNTMyNUJE
QzMyMURGRjJCMjAwQTBERUUxIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMw
QkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlDT0RFX1NJR05fU1RZTEUgPSBBdXRvbWF0aWM7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKwkJNTNCNEJEMEIxRjY4QUY4OTAwRDJCRUEzIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQk1M0I0QkQwQzFGNjhBRjg5MDBEMkJFQTMgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQk1M0I0QkQwRDFGNjhBRjg5MDBEMkJFQTMgLyogUHJvZmlsaW5nICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsK
KwkJfTsKKwkJNTNCNEJEMEUxRjY4QUY4OTAwRDJCRUEzIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKKwkJNUQ2QjJBNDgxNTJCOUUxNzAwNTIzMURFIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVn
OworCQl9OworCQk1RDZCMkE0OTE1MkI5RTE3MDA1MjMxREUgLyogUmVsZWFzZSAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNl
OworCQl9OworCQk1RDZCMkE0QTE1MkI5RTE3MDA1MjMxREUgLyogUHJvZmlsaW5nICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2Zp
bGluZzsKKwkJfTsKKwkJNUQ2QjJBNEIxNTJCOUUxNzAwNTIzMURFIC8qIFByb2R1Y3Rpb24gKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKKwkJNjUxMTIzMDExNDA0NkE0QzAwMkIxMDFEIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54
Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVn
OworCQl9OworCQk2NTExMjMwMjE0MDQ2QTRDMDAyQjEwMUQgLyogUmVsZWFzZSAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQk2NTExMjMwMzE0MDQ2QTRDMDAyQjEwMUQgLyogUHJvZmlsaW5nICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJNjUxMTIzMDQxNDA0NkE0QzAwMkIxMDFEIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
KwkJNjU3ODhBQTMxOEI0MDlFQjAwQzE4OUZGIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1
MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNv
cHktSW5mby5wbGlzdCI7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTY1Nzg4QUE0MThCNDA5RUIwMEMx
ODlGRiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAv
KiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
SU5GT1BMSVNUX0ZJTEUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0g
UmVsZWFzZTsKKwkJfTsKKwkJNjU3ODhBQTUxOEI0MDlFQjAwQzE4OUZGIC8qIFByb2ZpbGluZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUlORk9QTElTVF9GSUxFID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3QiOworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJNjU3ODhBQTYxOEI0MDlFQjAwQzE4OUZGIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MUM5MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlJTkZPUExJU1RfRklMRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weS1JbmZvLnBsaXN0IjsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQk2NUZCM0Y3ODA5
RDExRUJEMDBGNDlERUIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThBNzAw
ODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCX07
CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTY1RkIzRjc5MDlEMTFFQkQwMEY0OURFQiAvKiBS
ZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2Ny
aXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTY1RkIzRjdBMDlEMTFFQkQwMEY0OURFQiAvKiBQcm9kdWN0aW9uICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2Nv
bmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVy
YXRlIERlcml2ZWQgU291cmNlcyI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTc5MjgxQkQ4MjBCNjJCM0UwMDJFMkE2MCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAy
MUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3OTI4MUJEOTIwQjYyQjNFMDAyRTJBNjAg
LyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9v
bEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTc5MjgxQkRBMjBCNjJCM0UwMDJFMkE2MCAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTc5MjgxQkRCMjBCNjJC
M0UwMDJFMkE2MCAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMw
MEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJQTc2MTQ4M0QwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2Zp
bGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNTE0NDBCQTlFOEE3MDA4MUU5RDAgLyogRGVidWdSZWxl
YXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTVFJJUF9JTlNUQUxM
RURfUFJPRFVDVCA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCUE3
NjE0ODNFMEU2NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1F
ID0gQWxsOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCUE3NjE0ODNGMEU2
NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThB
NzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQlBNzYxNDg0MDBFNjQw
MkY3MDBFMzU3RkEgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcw
MDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQl9
OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJQTc2MTQ4NDEwRTY0MDJGNzAwRTM1N0ZB
IC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyog
VG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsK
KwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCUE3NjE0ODQyMEU2NDAyRjcwMEUzNTdGQSAv
KiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gRTNENkY2RUYyNUQ3OTFCMzAwQzIwRUI0IC8qIFRl
c3RBUEkueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCUE3NjE0ODQzMEU2NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxp
bmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsK
KwkJfTsKKwkJRkU1MzNDQTgxRjIxN0RCMzAwMTZBMUZFIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUZFNTMzQ0E5MUYyMTdEQjMwMDE2
QTFGRSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAv
KiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJRkU1MzNDQUExRjIxN0RCMzAwMTZBMUZFIC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJRkU1MzNDQUIx
RjIxN0RCMzAwMTZBMUZFIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5
MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0
QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjYxODMzRTFDNDVGNjJBMDA3
MjQ1MEIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRl
c3RhaXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCisJCQkJMEY2MTgzM0YxQzQ1RjYyQTAwNzI0NTBCIC8qIERlYnVnICov
LAorCQkJCTBGNjE4MzQwMUM0NUY2MkEwMDcyNDUwQiAvKiBSZWxlYXNlICovLAorCQkJCTBGNjE4
MzQxMUM0NUY2MkEwMDcyNDUwQiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY2MTgzNDIxQzQ1RjYy
QTAwNzI0NTBCIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKKwkJMEY5MzI3NTQxQzIwQkNCQTAwQ0Y2NTY0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJkeW5iZW5jaCIgKi8gPSB7CisJCQlpc2EgPSBY
Q0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjkz
Mjc1NTFDMjBCQ0JBMDBDRjY1NjQgLyogRGVidWcgKi8sCisJCQkJMEY5MzI3NTYxQzIwQkNCQTAw
Q0Y2NTY0IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY5MzI3NTcxQzIwQkNCQTAwQ0Y2NTY0IC8qIFBy
b2ZpbGluZyAqLywKKwkJCQkwRjkzMjc1ODFDMjBCQ0JBMDBDRjY1NjQgLyogUHJvZHVjdGlvbiAq
LywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRkVDODVBODFCREI1
Q0YxMDA4MEZGNzQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgInRlc3RiMyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRkVDODVBOTFCREI1Q0YxMDA4MEZGNzQgLyogRGVi
dWcgKi8sCisJCQkJMEZFQzg1QUExQkRCNUNGMTAwODBGRjc0IC8qIFJlbGVhc2UgKi8sCisJCQkJ
MEZFQzg1QUIxQkRCNUNGMTAwODBGRjc0IC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRkVDODVBQzFC
REI1Q0YxMDA4MEZGNzQgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OworCQkwRkY5MjJDQTE0RjQ2QjEzMDA0MUEyNEUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRkY5MjJDQjE0RjQ2QjEzMDA0MUEyNEUgLyogRGVidWcgKi8sCisJ
CQkJMEZGOTIyQ0MxNEY0NkIxMzAwNDFBMjRFIC8qIFJlbGVhc2UgKi8sCisJCQkJMEZGOTIyQ0Qx
NEY0NkIxMzAwNDFBMjRFIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRkY5MjJDRTE0RjQ2QjEzMDA0
MUEyNEUgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OworCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQxMjExM0Ew
QTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovLAorCQkJCTE0MTIxMTNCMEE0ODc5ODQwMDQ4MDI1
NSAvKiBSZWxlYXNlICovLAorCQkJCUE3NjE0ODQxMEU2NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxp
bmcgKi8sCisJCQkJMTQxMjExM0MwQTQ4Nzk4NDAwNDgwMjU1IC8qIFByb2R1Y3Rpb24gKi8sCisJ
CQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMTQ5QzI3NUQwODkwMkFGRTAw
OEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJK
YXZhU2NyaXB0Q29yZSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDlDMjc1RTA4OTAyQUZFMDA4QTlFRkMgLyog
RGVidWcgKi8sCisJCQkJMTQ5QzI3NUYwODkwMkFGRTAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJ
CQkJQTc2MTQ4M0YwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAqLywKKwkJCQkxNDlDMjc2
MTA4OTAyQUZFMDA4QTlFRkMgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQkxNDlDMjc2NzA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImpzYyIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkx
NDlDMjc2ODA4OTAyQUZFMDA4QTlFRkMgLyogRGVidWcgKi8sCisJCQkJMTQ5QzI3NjkwODkwMkFG
RTAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJCQkJQTc2MTQ4NDMwRTY0MDJGNzAwRTM1N0ZBIC8q
IFByb2ZpbGluZyAqLywKKwkJCQkxNDlDMjc2QjA4OTAyQUZFMDA4QTlFRkMgLyogUHJvZHVjdGlv
biAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxNDlDMjc2QzA4
OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkFsbCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxNDlDMjc2RDA4OTAyQUZFMDA4QTlFRkMgLyog
RGVidWcgKi8sCisJCQkJMTQ5QzI3NkUwODkwMkFGRTAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJ
CQkJQTc2MTQ4M0UwRTY0MDJGNzAwRTM1N0ZBIC8qIFByb2ZpbGluZyAqLywKKwkJCQkxNDlDMjc3
MDA4OTAyQUZFMDA4QTlFRkMgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQkxNDlDMjc3MTA4OTAyQUZFMDA4QTlFRkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJKYXZhU2NyaXB0Q29yZSIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQkxNDlDMjc3MjA4OTAyQUZFMDA4QTlFRkMgLyogRGVidWcgKi8sCisJCQkJMTQ5QzI3NzMw
ODkwMkFGRTAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJCQkJQTc2MTQ4M0QwRTY0MDJGNzAwRTM1
N0ZBIC8qIFByb2ZpbGluZyAqLywKKwkJCQkxNDlDMjc3NTA4OTAyQUZFMDA4QTlFRkMgLyogUHJv
ZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxNEJE
NTlENjBBM0U4RkM5MDBCQUY1OUMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgInRlc3RhcGkiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTRCRDU5RDcwQTNFOEZDOTAwQkFG
NTlDIC8qIERlYnVnICovLAorCQkJCTE0QkQ1OUQ4MEEzRThGQzkwMEJBRjU5QyAvKiBSZWxlYXNl
ICovLAorCQkJCUE3NjE0ODQyMEU2NDAyRjcwMEUzNTdGQSAvKiBQcm9maWxpbmcgKi8sCisJCQkJ
MTRCRDU5RDkwQTNFOEZDOTAwQkFGNTlDIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMTRCRDY4ODkyMTUxOTEzMTAwNTBEQUZGIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludFNldHRp
bmdzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0QkQ2ODhBMjE1MTkxMzEwMDUwREFGRiAvKiBE
ZWJ1ZyAqLywKKwkJCQkxNEJENjg4QjIxNTE5MTMxMDA1MERBRkYgLyogUmVsZWFzZSAqLywKKwkJ
CQkxNEJENjg4QzIxNTE5MTMxMDA1MERBRkYgLyogUHJvZmlsaW5nICovLAorCQkJCTE0QkQ2ODhE
MjE1MTkxMzEwMDUwREFGRiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTE0QkQ2ODkzMjE1MTkxNDUwMDUwREFGRiAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgU2V0dGluZ3MiICov
ID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCisJCQkJMTRCRDY4OTQyMTUxOTE0NTAwNTBEQUZGIC8qIERlYnVnICovLAorCQkJCTE0
QkQ2ODk1MjE1MTkxNDUwMDUwREFGRiAvKiBSZWxlYXNlICovLAorCQkJCTE0QkQ2ODk2MjE1MTkx
NDUwMDUwREFGRiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMTRCRDY4OTcyMTUxOTE0NTAwNTBEQUZG
IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
KwkJMTRDRkIxMDUyMzAzNUVGMzAwRjAwNDhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJVbmxvY2sgS2V5Y2hhaW4iICovID0geworCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTRD
RkIxMDEyMzAzNUVGMzAwRjAwNDhDIC8qIERlYnVnICovLAorCQkJCTE0Q0ZCMTAyMjMwMzVFRjMw
MEYwMDQ4QyAvKiBSZWxlYXNlICovLAorCQkJCTE0Q0ZCMTAzMjMwMzVFRjMwMEYwMDQ4QyAvKiBQ
cm9maWxpbmcgKi8sCisJCQkJMTRDRkIxMDQyMzAzNUVGMzAwRjAwNDhDIC8qIFByb2R1Y3Rpb24g
Ki8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJNTJDRDBGNUYyMjQy
RjU2OTAwNEExOEE1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJ0ZXN0ZGZnIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTUyQ0QwRjYwMjI0MkY1NjkwMDRBMThBNSAvKiBE
ZWJ1ZyAqLywKKwkJCQk1MkNEMEY2MTIyNDJGNTY5MDA0QTE4QTUgLyogUmVsZWFzZSAqLywKKwkJ
CQk1MkNEMEY2MjIyNDJGNTY5MDA0QTE4QTUgLyogUHJvZmlsaW5nICovLAorCQkJCTUyQ0QwRjYz
MjI0MkY1NjkwMDRBMThBNSAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTUzMjVCREM0MjFERkYyQjIwMEEwREVFMSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiQXBwbHkgQ29uZmlndXJhdGlv
biB0byBYQ0ZpbGVMaXN0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1MzI1QkRDMDIxREZGMkIyMDBBMERFRTEg
LyogRGVidWcgKi8sCisJCQkJNTMyNUJEQzEyMURGRjJCMjAwQTBERUUxIC8qIFJlbGVhc2UgKi8s
CisJCQkJNTMyNUJEQzIyMURGRjJCMjAwQTBERUUxIC8qIFByb2ZpbGluZyAqLywKKwkJCQk1MzI1
QkRDMzIxREZGMkIyMDBBMERFRTEgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OworCQk1M0I0QkQwQTFGNjhBRjg5MDBEMkJFQTMgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkdlbmVyYXRlIFVuaWZp
ZWQgU291cmNlcyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1M0I0QkQwQjFGNjhBRjg5MDBEMkJFQTMgLyogRGVi
dWcgKi8sCisJCQkJNTNCNEJEMEMxRjY4QUY4OTAwRDJCRUEzIC8qIFJlbGVhc2UgKi8sCisJCQkJ
NTNCNEJEMEQxRjY4QUY4OTAwRDJCRUEzIC8qIFByb2ZpbGluZyAqLywKKwkJCQk1M0I0QkQwRTFG
NjhBRjg5MDBEMkJFQTMgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OworCQk1RDZCMkE0QzE1MkI5RTE3MDA1MjMxREUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlRlc3QgVG9vbHMiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJNUQ2QjJBNDgxNTJCOUUxNzAwNTIzMURFIC8qIERlYnVnICovLAorCQkJCTVENkIyQTQ5
MTUyQjlFMTcwMDUyMzFERSAvKiBSZWxlYXNlICovLAorCQkJCTVENkIyQTRBMTUyQjlFMTcwMDUy
MzFERSAvKiBQcm9maWxpbmcgKi8sCisJCQkJNUQ2QjJBNEIxNTJCOUUxNzAwNTIzMURFIC8qIFBy
b2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJNjUx
MTIzMDAxNDA0NkE0QzAwMkIxMDFEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJ0ZXN0UmVnRXhwIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTY1MTEyMzAxMTQwNDZBNEMw
MDJCMTAxRCAvKiBEZWJ1ZyAqLywKKwkJCQk2NTExMjMwMjE0MDQ2QTRDMDAyQjEwMUQgLyogUmVs
ZWFzZSAqLywKKwkJCQk2NTExMjMwMzE0MDQ2QTRDMDAyQjEwMUQgLyogUHJvZmlsaW5nICovLAor
CQkJCTY1MTEyMzA0MTQwNDZBNEMwMDJCMTAxRCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTY1Nzg4QUEyMThCNDA5RUIwMEMxODlGRiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiT2ZmbGlu
ZSBBc3NlbWJsZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJNjU3ODhBQTMxOEI0MDlFQjAwQzE4OUZGIC8qIERl
YnVnICovLAorCQkJCTY1Nzg4QUE0MThCNDA5RUIwMEMxODlGRiAvKiBSZWxlYXNlICovLAorCQkJ
CTY1Nzg4QUE1MThCNDA5RUIwMEMxODlGRiAvKiBQcm9maWxpbmcgKi8sCisJCQkJNjU3ODhBQTYx
OEI0MDlFQjAwQzE4OUZGIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKKwkJNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICov
ID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCisJCQkJNjVGQjNGNzgwOUQxMUVCRDAwRjQ5REVCIC8qIERlYnVnICovLAorCQkJCTY1
RkIzRjc5MDlEMTFFQkQwMEY0OURFQiAvKiBSZWxlYXNlICovLAorCQkJCUE3NjE0ODQwMEU2NDAy
RjcwMEUzNTdGQSAvKiBQcm9maWxpbmcgKi8sCisJCQkJNjVGQjNGN0EwOUQxMUVCRDAwRjQ5REVC
IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
KwkJNzkyODFCRDcyMEI2MkIzRTAwMkUyQTYwIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJ0ZXN0bWVtIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTc5MjgxQkQ4MjBCNjJC
M0UwMDJFMkE2MCAvKiBEZWJ1ZyAqLywKKwkJCQk3OTI4MUJEOTIwQjYyQjNFMDAyRTJBNjAgLyog
UmVsZWFzZSAqLywKKwkJCQk3OTI4MUJEQTIwQjYyQjNFMDAyRTJBNjAgLyogUHJvZmlsaW5nICov
LAorCQkJCTc5MjgxQkRCMjBCNjJCM0UwMDJFMkE2MCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCUZFNTMzQ0E3MUYyMTdEQjMwMDE2QTFG
RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAidGVzdG1h
c20iICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCisJCQkJRkU1MzNDQTgxRjIxN0RCMzAwMTZBMUZFIC8qIERlYnVnICovLAor
CQkJCUZFNTMzQ0E5MUYyMTdEQjMwMDE2QTFGRSAvKiBSZWxlYXNlICovLAorCQkJCUZFNTMzQ0FB
MUYyMTdEQjMwMDE2QTFGRSAvKiBQcm9maWxpbmcgKi8sCisJCQkJRkU1MzNDQUIxRjIxN0RCMzAw
MTZBMUZFIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RP
YmplY3QgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
aW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRj
OWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisK
KyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAg
ICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQor
CiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIg
KzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4u
YjU5MzA3MzNkYzAzMzhlNmVlMzdmYzM0YjMyOTc2MTFhOTQxZDJjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVt
R1BScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfR1BfUkVHSVNURVIo
RFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG51bUZQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0ZQ
X1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAjdW5kZWYgRFVNTVlf
UkVHSVNURVJfVkFMVUUKLSAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlcigpIHsgcmV0dXJu
IGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQg
c2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAg
TWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAx
ZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAor
CisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGlt
bSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCAwMGE1NTQ5
N2ZkNjNhZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0MGQyLi43N2U0YTZlOWVmM2Y4YWM3MmE1ZGQw
Yzc4MjhhMGJkY2VjMzVkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxl
RGF0YS5oIgogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgi
CkBAIC00NywxNCArNDgsNiBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7CiBzdHJ1Y3QgQ2Fs
bEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlua0luZm87CiAKLSNpZiBF
TkFCTEUoSklUKQotbmFtZXNwYWNlIEJhc2VsaW5lQ2FsbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgY2Fs
bExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLX0KLSNlbmRpZgotCiBjbGFzcyBDYWxs
TGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewog
cHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC00NjIs
OSArNDU1LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0
ZXJzOjpjYWxsZWVHUFI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0lu
Zm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUjsg
fQotICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsg
UkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6
Y2FsbExpbmtJbmZvR1BSKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQ
UigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVHUFI7IH0KKyAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSOyB9CisgICAgdm9pZCBzZXRD
YWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxFQVNFX0FTU0VSVChj
YWxsTGlua0luZm9HUFIgPT0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5m
b0dQUik7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1MWQyOWRh
ZmNhMDk3MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhkNjFhYWNj
MjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmlnaW5hbEhh
bmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2UgewotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcFRv
RXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAmbV92bTsK
ICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9FeGNl
cHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICAgICAg
fSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJm1f
dm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0LT5jYWxs
KE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAgICAgICAg
ICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNlbmRpZgog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggODA5ODQ2ZDNkZmQ4YWQxOGE0MThlOWRjNmU4NzE4ODUw
YmE1NDFlNi4uNTRkY2Q2MWU0NzUxYTIwNzU1YjJhNDgzNTM2M2I3OTIwM2Y0ZGViNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNpbmNsdWRlICJKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5j
bHVkZSAiUmVwYXRjaC5oIgogCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayos
IFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYg
dW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAv
LyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNS
IiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNl
dChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNS
KTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKQEAgLTUyNCw3OCArNTI0LDc4
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1
cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVu
dGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpG
YXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5
VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BS
ID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFnR1BSKCk7Ci0gICAg
ICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRh
Z0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAg
dmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpy
ZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVl
OwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IElu
dmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJ
ZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFz
ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50
YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsK
KyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBoYXND
b25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgcHJvdG90eXBlSXNLbm93bk9iamVj
dCA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJz
Ojp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnBy
b3RvdHlwZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJvdG9KU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3Rh
bmNlb2Y6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0
ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVU
YWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxp
bmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUi50
YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Oklu
QnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZTogCiAgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAogICAgICAgICBoYXNDb25zdGFudElkZW50aWZp
ZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGlu
ZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6
OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAg
ICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBi
YXNlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwot
ICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9w
ZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUluQnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnBy
b3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNS
LnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5CeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52YWxpZEdQ
UlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNl
bmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6CkBA
IC02MDMsNjUgKzYwMyw2NSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJv
bVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgIGNhc2UgQWNj
ZXNzVHlwZTo6R2V0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsK
ICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAg
ICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1Iu
dGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpH
ZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7Ci0g
ICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRo
aXNSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MudGhpc0dQ
UiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQ
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAg
ICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0
SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRo
VGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IudGFnR1BSKCk7Cisg
ICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhp
czo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZDoKICAgICAgICAgaGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxp
ZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBC
YXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAg
IHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIo
KTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpi
YXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0
UHJpdmF0ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0
dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
ICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1IucGF5
bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7
CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAgICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNz
VHlwZTo6UHV0QnlWYWwpCi0gICAgICAgICAgICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgICAgICAgICBtX2FycmF5UHJvZmls
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2
YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigp
OworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpi
YXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSLnRhZ0dQUigp
OwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0
ZUJyYW5kOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAg
IGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgICAgICB2YWx1ZUdQUiA9IEludmFs
aWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGlu
ZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBt
X3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAg
IG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpGYXN0
UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdmFsdWVU
YWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQcml2
YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYuYnJhbmRUYWdH
UFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IudGFnR1BSKCk7Cisg
ICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpi
YXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcC5vcmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcC5vcmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOTg0NmQzZGZkOGFk
MThhNDE4ZTlkYzZlODcxODg1MGJhNTQxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwLm9yaWcKQEAgLTAsMCAr
MSw2ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIK
KworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgor
I2luY2x1ZGUgIlJlcGF0Y2guaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoSklU
KQorCituYW1lc3BhY2UgU3RydWN0dXJlU3R1YkluZm9JbnRlcm5hbCB7CitzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVj
dHVyZVN0dWJJbmZvKCkgPSBkZWZhdWx0OworCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
R2V0QnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCk7CisgICAgQVNTRVJUKGhh
c0NvbnN0YW50SWRlbnRpZmllcik7CisgICAgc2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBl
OjpHZXRCeUlkU2VsZik7CisgICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBtX2lu
bGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUgPSBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLT5pZCgp
OworICAgIGNvZGVCbG9jay0+dm0oKS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICBieUlk
U2VsZk9mZnNldCA9IG9mZnNldDsKK30KKwordm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEFy
cmF5TGVuZ3RoKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlcikKK3sKKyAgICBB
U1NFUlQobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCk7CisgICAgc2V0Q2FjaGVUeXBl
KGxvY2tlciwgQ2FjaGVUeXBlOjpBcnJheUxlbmd0aCk7Cit9CisKK3ZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmluaXRTdHJpbmdMZW5ndGgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9j
a2VyKQoreworICAgIEFTU0VSVChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KTsKKyAg
ICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aCk7Cit9CisKK3Zv
aWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGlu
bGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX2NhY2hlVHlwZSA9PSBDYWNo
ZVR5cGU6OlVuc2V0KTsKKyAgICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5cGU6OlB1dEJ5
SWRSZXBsYWNlKTsKKyAgICBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIG1faW5saW5l
QWNjZXNzQmFzZVN0cnVjdHVyZSA9IGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUtPmlkKCk7Cisg
ICAgY29kZUJsb2NrLT52bSgpLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgIGJ5SWRTZWxm
T2Zmc2V0ID0gb2Zmc2V0OworfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0SW5CeUlk
U2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VS
VChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KTsKKyAgICBzZXRDYWNoZVR5cGUobG9j
a2VyLCBDYWNoZVR5cGU6OkluQnlJZFNlbGYpOworICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CisgICAgbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlID0gaW5saW5lQWNjZXNzQmFzZVN0
cnVjdHVyZS0+aWQoKTsKKyAgICBjb2RlQmxvY2stPnZtKCkud3JpdGVCYXJyaWVyKGNvZGVCbG9j
ayk7CisgICAgYnlJZFNlbGZPZmZzZXQgPSBvZmZzZXQ7Cit9CisKK3ZvaWQgU3RydWN0dXJlU3R1
YkluZm86OmRlcmVmKCkKK3sKKyAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CisgICAgY2FzZSBD
YWNoZVR5cGU6OlN0dWI6CisgICAgICAgIG1fc3R1Yi5yZXNldCgpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlk
U2VsZjoKKyAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNo
ZVR5cGU6OkluQnlJZFNlbGY6CisgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgorICAg
IGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjphYm91dFRvRGllKCkKK3sKKyAgICBzd2l0Y2ggKG1fY2FjaGVUeXBlKSB7CisgICAg
Y2FzZSBDYWNoZVR5cGU6OlN0dWI6CisgICAgICAgIG1fc3R1Yi0+YWJvdXRUb0RpZSgpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgIGNhc2UgQ2FjaGVU
eXBlOjpHZXRCeUlkU2VsZjoKKyAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6Cisg
ICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CisgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5
TGVuZ3RoOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAorICAg
IGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRUNNQU1vZGUgZWNtYU1vZGUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnQsIFJlZlB0cjxBY2Nlc3NDYXNlPiBhY2Nlc3NDYXNlKQor
eworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKworICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0o
KTsKKyAgICBBU1NFUlQodm0uaGVhcC5pc0RlZmVycmVkKCkpOworICAgIEFjY2Vzc0dlbmVyYXRp
b25SZXN1bHQgcmVzdWx0ID0gKFsmXSAoKSAtPiBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHsKKyAg
ICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAg
ICBkYXRhTG9nKCJBZGRpbmcgYWNjZXNzIGNhc2U6ICIsIGFjY2Vzc0Nhc2UsICJcbiIpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFhY2Nlc3NDYXNlKQorICAgICAgICAgICAgcmV0dXJuIEFjY2Vz
c0dlbmVyYXRpb25SZXN1bHQ6OkdhdmVVcDsKKyAgICAgICAgCisgICAgICAgIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQgcmVzdWx0OworICAgICAgICAKKyAgICAgICAgaWYgKG1fY2FjaGVUeXBlID09
IENhY2hlVHlwZTo6U3R1YikgeworICAgICAgICAgICAgcmVzdWx0ID0gbV9zdHViLT5hZGRDYXNl
KGxvY2tlciwgdm0sIGNvZGVCbG9jaywgKnRoaXMsIGFjY2Vzc0Nhc2UucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mb0ludGVy
bmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhZCBzdHViLCByZXN1bHQ6
ICIsIHJlc3VsdCwgIlxuIik7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQuc2hvdWxkUmVzZXRT
dHViQW5kRmlyZVdhdGNocG9pbnRzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KworICAgICAgICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgeworICAgICAgICAgICAgICAg
IGNsZWFyQnVmZmVyZWRTdHJ1Y3R1cmVzKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhp
Y0FjY2Vzcz4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8g
cHJldmlvdXNDYXNlID0gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvKHZtLCBjb2Rl
QmxvY2ssIGlkZW50LCAqdGhpcyk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNDYXNlKQorICAg
ICAgICAgICAgICAgIGFjY2Vzc0Nhc2VzLmFwcGVuZChXVEZNb3ZlKHByZXZpb3VzQ2FzZSkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92ZShhY2Nl
c3NDYXNlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdCA9IGFjY2Vzcy0+YWRk
Q2FzZXMobG9ja2VyLCB2bSwgY29kZUJsb2NrLCAqdGhpcywgV1RGTW92ZShhY2Nlc3NDYXNlcykp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoU3RydWN0dXJlU3R1YkluZm9JbnRlcm5h
bDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJDcmVhdGVkIHN0dWIsIHJlc3Vs
dDogIiwgcmVzdWx0LCAiXG4iKTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdC5zaG91bGRSZXNl
dFN0dWJBbmRGaXJlV2F0Y2hwb2ludHMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5idWZmZXJlZCgpKSB7CisgICAgICAgICAgICAg
ICAgY2xlYXJCdWZmZXJlZFN0cnVjdHVyZXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzZXRDYWNoZVR5
cGUobG9ja2VyLCBDYWNoZVR5cGU6OlN0dWIpOworICAgICAgICAgICAgbV9zdHViID0gV1RGTW92
ZShhY2Nlc3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBU1NFUlQobV9jYWNoZVR5
cGUgPT0gQ2FjaGVUeXBlOjpTdHViKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC5n
ZW5lcmF0ZWRTb21lQ29kZSgpKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGRpZG4ndCBi
dWZmZXIgYW55IGNhc2VzIHRoZW4gYmFpbC4gSWYgdGhpcyBtYWRlIG5vIGNoYW5nZXMgdGhlbiB3
ZSdsbCBqdXN0IHRyeSBhZ2FpbgorICAgICAgICAvLyBzdWJqZWN0IHRvIGNvb2wtZG93bi4KKyAg
ICAgICAgaWYgKCFyZXN1bHQuYnVmZmVyZWQoKSkgeworICAgICAgICAgICAgaWYgKFN0cnVjdHVy
ZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiRGlk
bid0IGJ1ZmZlciBhbnl0aGluZywgYmFpbGluZy5cbiIpOworICAgICAgICAgICAgY2xlYXJCdWZm
ZXJlZFN0cnVjdHVyZXMoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIFRoZSBidWZmZXJpbmcgY291bnRkb3duIHRlbGxzIHVzIGlm
IHdlIHNob3VsZCBiZSByZXBhdGNoaW5nIG5vdy4KKyAgICAgICAgaWYgKGJ1ZmZlcmluZ0NvdW50
ZG93bikgeworICAgICAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiQ291bnRkb3duIGlzIHRvbyBoaWdoOiAiLCBi
dWZmZXJpbmdDb3VudGRvd24sICIuXG4iKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZvcmdldCB0aGUgYnVmZmVyZWQgc3RydWN0
dXJlcyBzbyB0aGF0IGFsbCBmdXR1cmUgYXR0ZW1wdHMgdG8gY2FjaGUgZ2V0IGZ1bGx5IGhhbmRs
ZWQgYnkgdGhlCisgICAgICAgIC8vIFBvbHltb3JwaGljQWNjZXNzLgorICAgICAgICBjbGVhckJ1
ZmZlcmVkU3RydWN0dXJlcygpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gbV9zdHViLT5y
ZWdlbmVyYXRlKGxvY2tlciwgdm0sIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBlY21hTW9kZSwg
KnRoaXMpOworICAgICAgICAKKyAgICAgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvSW50ZXJuYWw6
OnZlcmJvc2UpCisgICAgICAgICAgICBkYXRhTG9nKCJSZWdlbmVyYXRpb24gcmVzdWx0OiAiLCBy
ZXN1bHQsICJcbiIpOworICAgICAgICAKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC5i
dWZmZXJlZCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghcmVzdWx0LmdlbmVyYXRlZFNvbWVD
b2RlKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIC8vIFdoZW4gd2Ug
Zmlyc3QgdHJhbnNpdGlvbiB0byBiZWNvbWluZyBhIFN0dWIsIHdlIG1pZ2h0IHN0aWxsIGJlIHJ1
bm5pbmcgdGhlIGlubGluZQorICAgICAgICAvLyBhY2Nlc3MgY29kZS4gVGhhdCdzIGJlY2F1c2Ug
d2hlbiB3ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIGJlY29taW5nIGEgU3R1Yiwgd2UgbWF5CisgICAg
ICAgIC8vIGJlIGJ1ZmZlcmVkLCBhbmQgd2UgaGF2ZSBub3QgeWV0IGdlbmVyYXRlZCBhbnkgY29k
ZS4gT25jZSB0aGUgU3R1YiBmaW5hbGx5IGdlbmVyYXRlcworICAgICAgICAvLyBjb2RlLCB3ZSdy
ZSBubyBsb25nZXIgcnVubmluZyB0aGUgaW5saW5lIGFjY2VzcyBjb2RlLCBzbyB3ZSBjYW4gdGhl
biBjbGVhciBvdXQKKyAgICAgICAgLy8gbV9pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLiBUaGUg
cmVhc29uIHdlIGRvbid0IGNsZWFyIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSB3aGlsZQor
ICAgICAgICAvLyB3ZSdyZSBidWZmZXJlZCBpcyBiZWNhdXNlIHdlIHJlbHkgb24gaXQgdG8gcmVz
ZXQgZHVyaW5nIEdDIGlmIG1faW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZQorICAgICAgICAvLyBp
cyBjb2xsZWN0ZWQuCisgICAgICAgIG1faWRlbnRpZmllciA9IG51bGxwdHI7CisgICAgICAgIG1f
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSA9IDA7CisgICAgICAgIAorICAgICAgICAvLyBJZiB3
ZSBnZW5lcmF0ZWQgc29tZSBjb2RlIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBhdHRlbXB0IHRvIHJl
cGF0Y2ggaW4gdGhlIGZ1dHVyZSB1bnRpbCB3ZQorICAgICAgICAvLyBnYXRoZXIgZW5vdWdoIGNh
c2VzLgorICAgICAgICBidWZmZXJpbmdDb3VudGRvd24gPSBPcHRpb25zOjpyZXBhdGNoQnVmZmVy
aW5nQ291bnRkb3duKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSkoKTsKKyAgICB2
bS53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBs
b2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGNsZWFyQnVmZmVyZWRTdHJ1Y3R1
cmVzKCk7CisgICAgbV9pZGVudGlmaWVyID0gbnVsbHB0cjsKKyAgICBtX2lubGluZUFjY2Vzc0Jh
c2VTdHJ1Y3R1cmUgPSAwOworCisgICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6VW5z
ZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsK
KyAgICAgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20gR0MgZGVzdHJ1Y3RvciBjYWxscywg
c28gd2UgZG9uJ3QgdHJ5IHRvIGRvIGEgZnVsbCBkdW1wCisgICAgICAgIC8vIG9mIHRoZSBDb2Rl
QmxvY2suCisgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIHN0cnVjdHVyZSBjYWNoZSAoa2luZCAi
LCBzdGF0aWNfY2FzdDxpbnQ+KGFjY2Vzc1R5cGUpLCAiKSBpbiAiLCBSYXdQb2ludGVyKGNvZGVC
bG9jayksICIuXG4iKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKKyAgICBj
YXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6CisgICAgICAgIHJlc2V0R2V0QnkoY29kZUJsb2Nr
LCAqdGhpcywgR2V0QnlLaW5kOjpUcnlCeUlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpHZXRCeUlkOgorICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMs
IEdldEJ5S2luZDo6QnlJZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6
R2V0QnlJZFdpdGhUaGlzOgorICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdl
dEJ5S2luZDo6QnlJZFdpdGhUaGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpHZXRCeUlkRGlyZWN0OgorICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMs
IEdldEJ5S2luZDo6QnlJZERpcmVjdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
VHlwZTo6R2V0QnlWYWw6CisgICAgICAgIHJlc2V0R2V0QnkoY29kZUJsb2NrLCAqdGhpcywgR2V0
QnlLaW5kOjpCeVZhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0
UHJpdmF0ZU5hbWU6CisgICAgICAgIHJlc2V0R2V0QnkoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlL
aW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6
UHV0QnlJZDoKKyAgICAgICAgcmVzZXRQdXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6
OkJ5SWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgor
ICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJlc2V0UHV0Qnko
Y29kZUJsb2NrLCAqdGhpcywgUHV0QnlLaW5kOjpCeVZhbCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQWNjZXNzVHlwZTo6SW5CeUlkOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAq
dGhpcywgSW5CeUtpbmQ6OkJ5SWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkluQnlWYWw6CisgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2lu
ZDo6QnlWYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OlBy
aXZhdGVOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2
YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0SGFzUHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNlT2Y6CisgICAg
ICAgIHJlc2V0SW5zdGFuY2VPZihjb2RlQmxvY2ssICp0aGlzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgorICAgICAgICByZXNldERlbEJ5KGNvZGVC
bG9jaywgKnRoaXMsIERlbEJ5S2luZDo6QnlJZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2NrLCAq
dGhpcywgRGVsQnlLaW5kOjpCeVZhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
VHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQ6CisgICAgICAgIHJlc2V0Q2hlY2tQcml2YXRlQnJhbmQo
Y29kZUJsb2NrLCAqdGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6
U2V0UHJpdmF0ZUJyYW5kOgorICAgICAgICByZXNldFNldFByaXZhdGVCcmFuZChjb2RlQmxvY2ss
ICp0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGRlcmVmKCk7CisgICAg
c2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpVbnNldCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdEFnZ3JlZ2F0ZUlt
cGwoVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2J1ZmZlcmVkU3RydWN0dXJlc0xvY2sgfTsKKyAgICAgICAgZm9yIChhdXRvJiBidWZmZXJlZFN0
cnVjdHVyZSA6IG1fYnVmZmVyZWRTdHJ1Y3R1cmVzKQorICAgICAgICAgICAgYnVmZmVyZWRTdHJ1
Y3R1cmUuYnlWYWxJZCgpLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgIH0KKyAgICBtX2lk
ZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgc3dpdGNoIChtX2NhY2hlVHlw
ZSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICBjYXNlIENhY2hlVHlwZTo6QXJy
YXlMZW5ndGg6CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aDoKKyAgICBjYXNlIENh
Y2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CisgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6
CisgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgorICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDYWNoZVR5cGU6OlN0dWI6CisgICAgICAgIG1fc3R1Yi0+dmlzaXRBZ2dyZWdhdGUodmlz
aXRvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm47Cit9CisKK0RFRklORV9WSVNJVF9BR0dSRUdBVEUo
U3RydWN0dXJlU3R1YkluZm8pOworCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtS
ZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCit7CisgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyZWRTdHJ1Y3R1cmVzTG9jayB9OworICAgICAg
ICBtX2J1ZmZlcmVkU3RydWN0dXJlcy5yZW1vdmVJZigKKyAgICAgICAgICAgIFsmXSAoYXV0byYg
ZW50cnkpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhdm0uaGVhcC5pc01hcmtl
ZChlbnRyeS5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBib29s
IGlzVmFsaWQgPSB0cnVlOworICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlubGluZUFj
Y2Vzc0Jhc2VTdHJ1Y3R1cmUodm0pKQorICAgICAgICBpc1ZhbGlkICY9IHZtLmhlYXAuaXNNYXJr
ZWQoc3RydWN0dXJlKTsKKyAgICBpZiAobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHViKQor
ICAgICAgICBpc1ZhbGlkICY9IG1fc3R1Yi0+dmlzaXRXZWFrKHZtKTsKKworICAgIGlmIChpc1Zh
bGlkKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNldChsb2NrZXIsIGNvZGVCbG9jayk7Cisg
ICAgcmVzZXRCeUdDID0gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3Zv
aWQgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5saW5lQWNjZXNzQmFzZVN0
cnVjdHVyZSh2aXNpdG9yLnZtKCkpKQorICAgICAgICBzdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZp
c2l0b3IpOworCisgICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikKKyAgICAg
ICAgbV9zdHViLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKK30KKwordGVtcGxhdGUg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoQWJzdHJhY3RTbG90
VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoU2xvdFZpc2l0b3ImKTsKKworU3R1YkluZm9TdW1tYXJ5IFN0cnVjdHVyZVN0dWJJ
bmZvOjpzdW1tYXJ5KFZNJiB2bSkgY29uc3QKK3sKKyAgICBTdHViSW5mb1N1bW1hcnkgdGFrZXNT
bG93UGF0aCA9IFN0dWJJbmZvU3VtbWFyeTo6VGFrZXNTbG93UGF0aDsKKyAgICBTdHViSW5mb1N1
bW1hcnkgc2ltcGxlID0gU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU7CisgICAgaWYgKG1fY2FjaGVU
eXBlID09IENhY2hlVHlwZTo6U3R1YikgeworICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlz
dCA9IG1fc3R1Yi5nZXQoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3Qt
PnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBs
aXN0LT5hdChpKTsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MuZG9lc0NhbGxzKHZtKSkgeworICAg
ICAgICAgICAgICAgIHRha2VzU2xvd1BhdGggPSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1Bh
dGhBbmRNYWtlc0NhbGxzOworICAgICAgICAgICAgICAgIHNpbXBsZSA9IFN0dWJJbmZvU3VtbWFy
eTo6TWFrZXNDYWxsczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAodG9va1Nsb3dQYXRoIHx8IHNhd05vbkNlbGwp
CisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoOworICAgIAorICAgIGlmICghZXZlckNvbnNp
ZGVyZWQpCisgICAgICAgIHJldHVybiBTdHViSW5mb1N1bW1hcnk6Ok5vSW5mb3JtYXRpb247Cisg
ICAgCisgICAgcmV0dXJuIHNpbXBsZTsKK30KKworU3R1YkluZm9TdW1tYXJ5IFN0cnVjdHVyZVN0
dWJJbmZvOjpzdW1tYXJ5KFZNJiB2bSwgY29uc3QgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
KQoreworICAgIGlmICghc3R1YkluZm8pCisgICAgICAgIHJldHVybiBTdHViSW5mb1N1bW1hcnk6
Ok5vSW5mb3JtYXRpb247CisgICAgCisgICAgcmV0dXJuIHN0dWJJbmZvLT5zdW1tYXJ5KHZtKTsK
K30KKworYm9vbCBTdHJ1Y3R1cmVTdHViSW5mbzo6Y29udGFpbnNQQyh2b2lkKiBwYykgY29uc3QK
K3sKKyAgICBpZiAobV9jYWNoZVR5cGUgIT0gQ2FjaGVUeXBlOjpTdHViKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fc3R1Yi0+Y29udGFpbnNQQyhwYyk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6c2V0Q2FjaGVUeXBlKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlckJhc2UmLCBDYWNoZVR5cGUgbmV3Q2FjaGVUeXBlKQoreworICAgIG1fY2Fj
aGVUeXBlID0gbmV3Q2FjaGVUeXBlOworfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saW5rZWRT
dHJ1Y3R1cmVTdHViSW5mbyYgdW5saW5rZWRTdHViSW5mbykKK3sKKyAgICBhY2Nlc3NUeXBlID0g
dW5saW5rZWRTdHViSW5mby5hY2Nlc3NUeXBlOworICAgIHN0YXJ0ID0gdW5saW5rZWRTdHViSW5m
by5zdGFydDsKKyAgICBkb25lTG9jYXRpb24gPSB1bmxpbmtlZFN0dWJJbmZvLmRvbmVMb2NhdGlv
bjsKKyAgICBzbG93UGF0aFN0YXJ0TG9jYXRpb24gPSB1bmxpbmtlZFN0dWJJbmZvLnNsb3dQYXRo
U3RhcnRMb2NhdGlvbjsKKyAgICBjYWxsU2l0ZUluZGV4ID0gQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpOworICAgIGNv
ZGVPcmlnaW4gPSBDb2RlT3JpZ2luKHVubGlua2VkU3R1YkluZm8uYnl0ZWNvZGVJbmRleCk7Cisg
ICAgbV9jb2RlUHRyID0gc2xvd1BhdGhTdGFydExvY2F0aW9uOworICAgIHByb3BlcnR5SXNJbnQz
MiA9IHVubGlua2VkU3R1YkluZm8ucHJvcGVydHlJc0ludDMyOworCisgICAgdXNlZFJlZ2lzdGVy
cyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICBpZiAoYWNj
ZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkICYmIHVubGlua2VkU3R1YkluZm8uYnl0ZWNv
ZGVJbmRleC5jaGVja3BvaW50KCkpIHsKKyAgICAgICAgLy8gRm9yIGl0ZXJhdG9yX25leHQsIHdl
IGNhbid0IGNsb2JiZXIgdGhlICJkb250Q2xvYmJlckpTUiIgcmVnaXN0ZXIgZWl0aGVyLgorICAg
ICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9i
YmVySlNSKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKKyAgICBjYXNlIEFj
Y2Vzc1R5cGU6OkRlbGV0ZUJ5VmFsOgorICAgICAgICBtX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25EZWxldGVCeVZhbE9wdGltaXplOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkRlbGV0ZUJ5SUQ6CisgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRC
eVZhbDoKKyAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgorICAg
ICAgICBtX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeVZhbDoKKyAgICAgICAgbV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlJZDoKKyAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uSW5CeUlkT3B0aW1pemU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlw
ZTo6R2V0QnlJZDoKKyAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6
CisgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgorICAg
ICAgICBtX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgorICAg
ICAgICBtX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZToKKyAg
ICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAor
ICAgICAgICBtX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToK
KyAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeUlkOgorICAgICAg
ICBzd2l0Y2ggKHVubGlua2VkU3R1YkluZm8ucHV0S2luZCkgeworICAgICAgICBjYXNlIFB1dEtp
bmQ6Ok5vdERpcmVjdDoKKyAgICAgICAgICAgIGlmICh1bmxpbmtlZFN0dWJJbmZvLmVjbWFNb2Rl
LmlzU3RyaWN0KCkpCisgICAgICAgICAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAg
ICAgIGlmICh1bmxpbmtlZFN0dWJJbmZvLmVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgICAgICAg
ICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGlt
aXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAg
ICAgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRl
RmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1
dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgICAgIG1fc2xvd09wZXJhdGlv
biA9IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
VHlwZTo6UHV0QnlWYWw6CisgICAgICAgIHN3aXRjaCAodW5saW5rZWRTdHViSW5mby5wdXRLaW5k
KSB7CisgICAgICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0OgorICAgICAgICAgICAgaWYgKHVu
bGlua2VkU3R1YkluZm8uZWNtYU1vZGUuaXNTdHJpY3QoKSkKKyAgICAgICAgICAgICAgICBtX3Ns
b3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsTm9uU3RyaWN0T3B0aW1pemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
dXRLaW5kOjpEaXJlY3Q6CisgICAgICAgICAgICBpZiAodW5saW5rZWRTdHViSW5mby5lY21hTW9k
ZS5pc1N0cmljdCgpKQorICAgICAgICAgICAgICAgIG1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgbV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJp
Y3RPcHRpbWl6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lOgorICAgICAgICBtX3Ns
b3dPcGVyYXRpb24gPSB1bmxpbmtlZFN0dWJJbmZvLnByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZp
bmUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUgOiBvcGVy
YXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGltaXplOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZDoKKyAgICAgICAgbV9zbG93T3BlcmF0
aW9uID0gb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQ6CisgICAgICAgIG1fc2xvd09w
ZXJhdGlvbiA9IG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemU7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgeworICAgIGNhc2UgQWNjZXNz
VHlwZTo6RGVsZXRlQnlWYWw6CisgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNl
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZURlbEJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAg
ICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFn
R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFnR1BSKCk7Cisg
ICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
LnRhZ0dQUigpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6
RGVsZXRlQnlJRDoKKyAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICB2
YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9w
ZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldFByaXZhdGVOYW1lOgorICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxz
ZTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQ
UjsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRh
Z0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwor
ICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpT
Ui50YWdHUFIoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6
Okluc3RhbmNlT2Y6CisgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAg
ICAgICBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2U7CisgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAg
ICAgdmFsdWVHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9m
UmVnaXN0ZXJzOjpwcm90b0pTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJS
ZWc7CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnM6OnByb3RvSlNSLnRhZ0dQUigpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QWNjZXNzVHlwZTo6SW5CeVZhbDoKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1l
OiAKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZDogCisgICAgICAgIGhhc0Nv
bnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5
VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0
eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigp
OworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6c3R1YkluZm9HUFI7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKKyAg
ICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CisgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9
IHRydWU7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgdi50aGlzVGFn
R1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisjZW5kaWYKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkOgorICAgIGNhc2UgQWNjZXNz
VHlwZTo6R2V0QnlJZERpcmVjdDoKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWQ6CisgICAg
ICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisjaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgdi50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUi50YWdHUFIoKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1
ZTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRX
aXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy50
aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGJh
c2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdH
UFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyNlbmRpZgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWQ6CisgICAgICAgIGhhc0Nv
bnN0YW50SWRlbnRpZmllciA9IHRydWU7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lz
dGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAg
ICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BS
KCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZh
bDoKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lOgorICAgICAgICBoYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5
R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigp
OworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNS
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXRCeVZhbCkKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdH
UFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3Rl
cnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworI2VuZGlmCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kOgorICAgIGNhc2UgQWNj
ZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQ6CisgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IGZhbHNlOworICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YnJhbmRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIHZhbHVlVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgYmFzZVRh
Z0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwor
ICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJy
YW5kSlNSLnRhZ0dQUigpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworI2lm
IEFTU0VSVF9FTkFCTEVECit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpjaGVja0NvbnNpc3RlbmN5
KCkKK3sKKyAgICBpZiAodGhpc1ZhbHVlSXNJblRoaXNHUFIoKSkgeworICAgICAgICAvLyBXZSBj
dXJyZW50bHkgdXNlIGEgdW5pb24gZm9yIGJvdGggInRoaXNHUFIiIGFuZCAicHJvcGVydHlHUFIi
LiBJZiB0aGlzIHdlcmUKKyAgICAgICAgLy8gbm90IHRoZSBjYXNlLCB3ZSdkIG5lZWQgdG8gdGFr
ZSBvbmUgb2YgdGhlbSBvdXQgb2YgdGhlIHVuaW9uLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCho
YXNDb25zdGFudElkZW50aWZpZXIpOworICAgIH0KK30KKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGViMjBjZTY0NWFm
MGJiNTg0NTVmNjgwM2U4ZDQ3MjRhNzRhNzFmOTQuLjQ5ZmNhYjk0MTM5MjAwNjY4MGM1YjRiZjE3
MGU5NWRhMzllZTMxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC0xMzYsNDAgKzEzNiw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVC
b2R5KCkKICAgICBBU1NFUlRfVU5VU0VEKGNvbXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3Bl
Y3VsYXRpdmUpOwogfQogCi12b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxl
cnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0
aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBj
b3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5
RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9t
Q2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIo
bV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGFw
cGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSk7
Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVj
a3MubGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0KLSAgICAgICAgYXBwZW5k
Q2FsbChvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKTsKLQotICAgICAgICBqdW1wVG9F
eGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLX0KLQogdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogewogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2Nr
IGRhdGEgc3RydWN0dXJlcy4KQEAgLTI3MywxMiArMjM5LDEwIEBAIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsPEpTSW50ZXJuYWxQdHJUYWc+KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdl
dENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVt
cHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4
Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVuayA9IHZtKCkuZ2V0
Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKICAgICBhdXRvIHRhcmdl
dCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPihvc3JFeGl0VGh1bmsuY29kZSgp
KTsKQEAgLTM4Miw3ICszNDYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBt
X3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJ
Z25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENv
ZGVPcmlnaW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAg
bGlua09TUkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIE9TUiBlbnRyeSB0cmFtcG9saW5l
cyBpZiBuZWNlc3NhcnkuCkBAIC00ODQsNyArNDQ3LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKCkKICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMo
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCk7CiAgICAgbGlua09TUkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRl
IE9TUiBlbnRyeSB0cmFtcG9saW5lcyBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggODk0N2NiZTlhM2M1MjE3NmEyZDQ1MzQ3ODgy
OTYyZTk1YzFlMzhmOS4uZjc2ZGEyMjBhMzk4NzYzNzk3OGY2YmRiMWZlMjBmOGE5NTc1Zjk4NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzIzLDcg
KzMyMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rKExpbmtCdWZmZXImKTsKICAgICAKICAg
ICB2b2lkIGV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IoY29uc3QgT1NSRXhpdCYsIFNwZWN1bGF0aW9u
UmVjb3ZlcnkqKTsKLSAgICB2b2lkIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIHZv
aWQgbGlua09TUkV4aXRzKCk7CiAgICAgdm9pZCBkaXNhc3NlbWJsZShMaW5rQnVmZmVyJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDNiNGNhMWQxNTc1
ZDUwYmJmZTFjNGI3YWI4MmYxOWVhYzkwNjJiN2YuLmE5M2E2YmE0MTYxNWUwNGE4MzdjOWI5YzEz
NDc5ZTg0ZjUxMTc5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cApAQCAtMTI4LDI0ICsxMjgsMTIgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBv
aW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKIAogICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlv
biBoYW5kbGVyLgogICAgICpzdGF0ZS5leGNlcHRpb25IYW5kbGVyID0gaml0LmxhYmVsKCk7Ci0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRs
ZXIgPSBqaXQuanVtcCgpOwogICAgIFZNKiB2bVB0ciA9ICZ2bTsKICAgICBqaXQuYWRkTGlua1Rh
c2soCiAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGhhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsKHZtUHRyLT5nZXRDVElT
dHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CiAgICAgICAgIH0pOwotI2Vsc2UKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBqaXQuanVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSk7Ci0gICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICBbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIp
KTsKLSAgICAgICAgfSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAg
ICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KGppdCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVEwsIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGE2
YWZmZTM1OWE5MTk5YTU4MDVlMzlhOGE0MDlhMmE1YjUzNWQwZDkuLjI4YmRlZTNiYTc1NTMwNjZl
NTMwMzcxMzU3NDg2MTZiZDNiOGNmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcApAQCAtNzgsMTcgKzc4LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxG
cmFtZSk7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Q2hlY2sgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAgICAgICAgICAgICBhdXRvIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQuYnJhbmNoMzIo
Q0NhbGxIZWxwZXJzOjpMZXNzVGhhbiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSNlbHNlCi0gICAgICAgICAgICBhdXRvIG5vRXhjZXB0
aW9uID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAg
ICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKTsKLSAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkg
ewogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQodm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQ
UkluZm86OnJlZ1QxKTsKQEAgLTExMSwxMSArMTAxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBs
aW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KGNvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIsIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNl
bHNlCi0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5k
bGVyRnJvbUNhbGxlckZyYW1lLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsKLSNlbmRpZgogICAgICAg
ICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHI8SklUVGh1
bmtQdHJUYWc+KHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CiAg
ICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIHN0YXRlLmdlbmVyYXRl
ZEZ1bmN0aW9uKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggMjNlMDg3MThkYmY4MjA0MjM1ZTM5OWFhNjVjYjBkOTkwODI5NzFl
MC4uNDdhYjNlODE1MmE0MzgyODkyMDdiYzRlOWQ4MTgyOGRmYzNhMzg3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xOTE5LDQ5ICsxOTE5LDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZU5lZWRz
TWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogCi0gICAgLy8gQ2hlY2tzIHRoYXQgdGhl
IGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVz
ZSB0aGlzIGluIHN0YXRpYwotICAgIC8vIGFzc2VydGlvbnMgdG8gZW5zdXJlIHRoYXQgcmVnaXN0
ZXIgYWxpYXNlcyBsaXZlIGF0IHRoZSBzYW1lIHBvaW50IGRvIG5vdCBtYXAgdG8gdGhlIHNhbWUK
LSAgICAvLyBhcmNoaXRlY3R1cmFsIHJlZ2lzdGVyLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXAoQXJncy4uLiBhcmdz
KSB7IHJldHVybiBub092ZXJsYXBJbXBsKDAsIGFyZ3MuLi4pOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gQmFzZSBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0K
LQotICAgIC8vIEdQUlJlZyBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgUmVn
aXN0ZXJJRCBncHIsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1hc2sg
PSBub092ZXJsYXBJbXBsUmVnTWFzayhncHIpOwotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVz
ZWQgfCBtYXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICAvLyBKU1ZhbHVlUmVncyBjYXNlCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFy
Z3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2so
anNyLnBheWxvYWRHUFIoKSk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgbWFzayB8
PSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkpOwotI2VuZGlmCi0gICAgICAgIGlm
ICh1c2VkICYgbWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0KLQotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soUmVnaXN0ZXJJRCBncHIp
Ci0gICAgewotICAgICAgICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBy
ZXR1cm4gMFVMTDsKLSAgICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGdwcik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdCA8IHNpemVvZih1aW50NjRfdCkgKiBD
SEFSX0JJVCk7Ci0gICAgICAgIHJldHVybiAxVUxMIDw8IGJpdDsKLSAgICB9Ci0KIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
SW1wbChHUFJSZWcgY2FsbGVlU2F2ZXNCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNjNDY5ODU3MDkz
NmM1Mjc1MjcwMmY0ZDNmYjllOWU1ZTM1MDRiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaApAQCAtMCwwICsxLDQ1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNp
bmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2Ug
QmFzZWxpbmVKSVRSZWdpc3RlcnMgeworCituYW1lc3BhY2UgQ2FsbCB7CisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBjYWxsZWVHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBH
UFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK30KKworbmFtZXNwYWNl
IENoZWNrVHJhcHMgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBH
UFJJbmZvOjpub25BcmdHUFIwIH07Cit9CisKK25hbWVzcGFjZSBFbnRlciB7CisgICAgY29uc3Rl
eHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworfQorCitu
YW1lc3BhY2UgSW5zdGFuY2VvZiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjMgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAg
fTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BS
MSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWVKU1IgeworI2lmIENQVShNSVBTKQorICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQ
UjMsIEdQUkluZm86OmFyZ3VtZW50R1BSMgorI2Vsc2UKKyAgICAgICAgSlNSSW5mbzo6anNSZWdU
MzIKKyNlbmRpZgorICAgIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsg
SlNSSW5mbzo6anNSZWdUNTQgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlSlNS
LCBwcm90b0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUikpOworfQor
CituYW1lc3BhY2UgSkZhbHNlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgSlRydWUgeworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisKK25h
bWVzcGFjZSBUaHJvdyB7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblRocm93KTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKSB9OworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB0aHJvd25WYWx1ZUpTUiB7IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDE+KCkgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R1BSSW5mbzo6bm9uQXJnR1BSMCB9OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHRocm93
blZhbHVlSlNSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkg
dGh1bmsiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHRo
cm93blZhbHVlSlNSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9
CisKK25hbWVzcGFjZSBSZXNvbHZlU2NvcGUgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRh
dGFHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIg
eyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFk
YXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gQ1RJIHRodW5rIik7Cit9CisKK25hbWVzcGFjZSBHZXRGcm9tU2NvcGUgeworICAgIGNvbnN0
ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NvcGVHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAi
UmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Cit9CisKK25hbWVzcGFjZSBQdXRUb1Nj
b3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6
YXJndW1lbnRHUFIyIH07Cit9CisKK25hbWVzcGFjZSBHZXRCeUlkIHsKKyAgICAvLyBSZWdpc3Rl
cnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisKKyAg
ICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENs
b2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJl
Z1Q2LCBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiks
ICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkg
cmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1Yklu
Zm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9w
ZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5SWRXaXRoVGhpcyB7CisgICAg
Ly8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJ
bmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAv
LyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgc3R1YkluZm9HUFIs
IHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNs
b3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0
IH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2Vu
ZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIGJ5
dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9y
IGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJh
c2VKU1IsIHRoaXNKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCitu
YW1lc3BhY2UgR2V0QnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBh
bmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJ
bmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3Rl
cnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVp
cmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3Rl
cnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdU
MyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1Is
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAiUmVxdWlyZWQgZm9y
IGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKKyNpZiBVU0UoSlNWQUxVRTY0
KQorbmFtZXNwYWNlIEVudW1lcmF0b3JHZXRCeVZhbCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBzdGF0
aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworICAgIC8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGlu
aXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCisgICAgc3RhdGlj
X2Fzc2VydChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHByb3BlcnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7CisgICAgc3RhdGljX2Fzc2Vy
dChyZXN1bHRKU1IgPT0gR2V0QnlWYWw6OnJlc3VsdEpTUik7CisgICAgc3RhdGljX2Fzc2VydChz
dHViSW5mb0dQUiA9PSBHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSKTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgeyBHUFJJbmZvOjpyZWdUNSB9OworfQor
I2VuZGlmCisKK25hbWVzcGFjZSBQdXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBi
b3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86Ompz
UmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6
anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisg
ICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IGJh
c2VKU1IudGFnR1BSKCkgfTsgLy8gUmV1c2luZyByZWdUMSBmb3IgYmV0dGVyIGNvZGUgc2l6ZSBv
biBBUk1fVEhVTUIyCisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBE
YXRhSUMiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUi5wYXlsb2Fk
R1BSKCksIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpLCAi
UmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJl
Z2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VuZGlm
CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRl
Y29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBj
YWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNl
SlNSLCB2YWx1ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIp
LCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25h
bWVzcGFjZSBQdXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFu
ZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
ZmlsZUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86
OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSIHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29uc3RleHBy
IEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKKyNlbmRpZgorCisgICAgLy8g
RmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAg
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpT
UiwgcHJvZmlsZUdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAg
IH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93
UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb24gcmVn
aXN0ZXJzIG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRo
IHRoaXMKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0
ZXIoKQorI2Vsc2UgLy8gT3RoZXIgSlNWQUxVRTMyXzY0CisgICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSIHsgZ2xvYmFsT2JqZWN0R1BSIH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIs
IGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBD
VEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJv
cGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQor
CituYW1lc3BhY2UgSW5CeUlkIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdldEJ5SWQ6OmJhc2VKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07CisgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFIgfTsKK30K
KworbmFtZXNwYWNlIEluQnlWYWwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRK
U1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgc3RhdGlj
X2Fzc2VydChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHByb3BlcnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7Cit9CisKK25hbWVzcGFjZSBE
ZWxCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0
aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisK
KyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGgg
eworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0
dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisK
KyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGgg
eworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJl
Z1QwIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDEgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9w
ZXJ0eUdQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRp
b24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBEZWxCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJz
IHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNl
bGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBv
bmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAv
LyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVj
bWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86
OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNl
SlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9k
ZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3Bl
cmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHJpdmF0ZUJyYW5kIHsKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdldEJ5VmFsOjpiYXNlSlNSIH07IC8vIFJlcXVp
cmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YnJhbmRKU1IgeyBHZXRCeVZhbDo6cHJvcGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVk
IHNsb3cgcGF0aCB0aHVuaworCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNSLCBzdHViSW5mb0dQUiksICJSZXF1
aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdldEJ5VmFsOjpTbG93
UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFIgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0
aCB0aHVuaworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR2V0QnlWYWw6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRo
IHRodW5rCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNS
LCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8g
Q1RJIHRodW5rIik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBCYXNlbGluZUpJVFJlZ2lz
dGVycworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggMDRlOGFmZGU0MWMy
NjhhZDljZjJlYjFjNWQzY2YwNDA5ODI4OTM1ZS4uNzE2Y2QzYzRiNmVlYWQ1NjBjYjA2ODkwM2Q0
OGMyMDEyZThlZjYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNp
bmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTQsNiArOTUs
NDMgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUKICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIE5vUHRyVGFnLCBkZXNjcmlwdGlvbik7CiB9CiAKK3N0YXRpY19hc3NlcnQoISgobWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwgKyAyICogc2l6ZW9mKENQVVJlZ2lzdGVyKSkgJSAxNiks
ICJTdGFjayBtdXN0IGJlIGFsaWduZWQgYWZ0ZXIgQ1RJIHRodW5rIGVudHJ5Iik7CisKK3ZvaWQg
Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpCit7CisgICAgLy8gU3Rhc2ggZnJh
bWUgcG9pbnRlciBhbmQgcmV0dXJuIGFkZHJlc3MKKyAgICB0YWdSZXR1cm5BZGRyZXNzKCk7Cisj
aWYgQ1BVKFg4Nl82NCkKKyAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsgLy8gcmV0dXJuIGFk
ZHJlc3MgcHVzaGVkIGJ5IHRoZSBjYWxsIGluc3RydWN0aW9uCisjZWxpZiBDUFUoQVJNNjQpIHx8
IENQVShBUk1fVEhVTUIyKQorICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5r
UmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1w
bGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBv
biB0aGUgc3RhY2sgdG8gcGFzcyBhcmd1bWVudHMgaW4gYSBjYWxsCisgICAgaWYgY29uc3RleHBy
IChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgc3ViUHRyKFRydXN0ZWRJ
bW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKK30KKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua0VwaWxvZ3VlKCkKK3sKKyAg
ICAvLyBSZXNldCBzdGFjaworICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpCisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgLy8gUmVzdG9yZSBmcmFt
ZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworI2lmIENQVShYODZfNjQpCisgICAgcG9wKFg4
NlJlZ2lzdGVyczo6ZWJwKTsgLy8gUmV0dXJuIGFkZHJlc3MgbGVmdCBvbiBzdGFjaworI2VsaWYg
Q1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJy
b3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAppbmRleCBhZmM1ZGNjODk5ZTc1NjMzOWE4MTE2MzRlMjNjMjE3YmRh
MWNjZjY0Li5lN2I4ZGQxYjVjZWY3NzJkYjI2MTk1ZWZmNDUwYjkyY2Q3ZGY1YjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTg1MywxNDUgKzg1Myw4IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUsIFNjb3BlZExhbWJkYTx2b2lkKENDYWxs
SGVscGVycyYpPiwgY29uc3QgY2hhciopOwogCi1wcml2YXRlOgotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCi0gICAgewotICAgICAgICByZXR1cm4gc2l6
ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1
bWVudFR5cGU8QXJnTnVtPik7Ci0gICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJ
bmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCi0gICAgewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRl
eD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwot
ICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyB7IGZpcnN0IH07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAg
ICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3Qu
Li4pOwotICAgICAgICB9Ci0gICAgfQotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJ
bmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhp
cmQsIEFyZ3MuLi4gcmVzdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9m
Q3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93
IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAo
IUluZGV4KSB7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0g
NCkgewotICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgotICAgICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29u
c3RleHByCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNl
IHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9
PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BS
MiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKLSAgICAgICAgICAgICAgICAv
LyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiBy
ZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3Ig
dGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90
IG1hdHRlcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmly
c3QgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIGNv
bnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBGaXRz
IGluIHNpbmdsZSBHUFIKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBP
dGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQs
IHJlc3QuLi4pOwotICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBH
UFJJbmZvOjphcmd1bWVudEdQUjMpIHsKLSAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50
IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIs
IHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3Qs
IHJlc3QuLi4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBGaXJz
dCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1
c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgotICAgICAgICAgICAgICAg
IHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwg
cmVzdC4uLik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRl
eCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFs
dWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQotICAgIHsKLSAgICAg
ICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1
cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMi
KTsKLSAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIg
YXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkK
LSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwg
Zmlyc3QgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXpl
T2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3Qp
OyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdO
dW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCi0gICAgewotICAg
ICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9m
Q3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50
cyIpOwotICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQg
cmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKLSAgICAgICAg
aWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCi0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0
ZXJzIik7Ci0gICAgfQotI2VuZGlmCi0KLXB1YmxpYzoKLSAgICAvLyBTZWUgcHJlZmVycmVkQXJn
dW1lbnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiBy
ZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKLSAgICAvLyBpbnN0ZWFkIG9mIGEgR1BSLCB3aGljaCBvbiBK
U1ZBTFVFNjQgYXJlIGVxdWl2YWxlbnQsIGJ1dCBvbiBKU1ZBTFVFMzJfNjQgYSBKU1ZhbHVlUmVn
cyBpcwotICAgIC8vIHJlcXVpcmVkIHRvIGhvbGQgYSA2NC1iaXQgd2lkZSBmdW5jdGlvbiBhcmd1
bWVudCwgc28gdXNlIHRoaXMgaW4gcGFydGljdWxhciB3aGVuIHBhc3NpbmcgYQotICAgIC8vIEpT
VmFsdWUvRW5jb2RlZEpTVmFsdWUgYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFu
IEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UKLSAgICAvLyBwcmVmZXJyZWRBcmd1bWVu
dEdQUiB3aGVuIHBhc3NpbmcgaG9zdCBwb2ludGVycy4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJn
TnVtKSwgSlNWYWx1ZVJlZ3M+Ci0gICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQotICAgIHsKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotI2lmICFPUyhXSU5ET1dTKQotICAgICAgICByZXR1cm4gcGlja0pT
UjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJ
bmZvOjphcmd1bWVudEdQUjUpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAgICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9u
QXJnR1BSMSk7Ci0jZW5kaWYKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0jaWYgQ1BVKEFSTV9U
SFVNQjIpCi0gICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUg
cHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQotICAgICAgICAv
LyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KLSAgICAgICAgcmV0dXJuIHBpY2tK
U1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCi0gICAg
ICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAgICAgR1BS
SW5mbzo6cmVnVDYsCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86
OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICAg
ICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJl
Z1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCi0gICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwg
ICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOwotI2VuZGlmCi0j
ZW5kaWYKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlcyAoc3RhdGljYWxseSwgYXQgY29tcGlsYXRp
b24gdGltZSksIHRoZSBpZGVhbCBtYWNoaW5lIHJlZ2lzdGVyIGFuIGFyZ3VtZW50IHNob3VsZCBi
ZQotICAgIC8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRzIHRo
ZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKLSAgICAvLyBpbml0aWFs
IGFyZ3VtZW50cyBhcyBhcHByb3ByaWF0ZSwgdGhlbiBzdWl0YWJsZSB0ZW1wb3JhcnkgcmVnaXN0
ZXJzIGZvciB0aGUgcmVtYWluaW5nCi0gICAgLy8gYXJndW1lbnRzLiBUaGUgaWRlYSBpcyB0aGF0
ICdzZXR1cEFyZ3VtZW50cycgd2lsbCBoYXZlIHRvIGRvIHRoZSBtaW5pbWFsIGFtb3VudCBvZiB3
b3JrIHdoZW4KLSAgICAvLyB1c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1l
bnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKLSAg
ICAvLyBhbnl3YXksIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB5aWVsZHMgdGhlIHNtYWxsZXN0IGNv
ZGUgcmVxdWlyZWQgZm9yIGEgY2FsbC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVf
aWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BS
UmVnPgotICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKLSAgICB7Ci0jaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtPigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7Ci0jZW5kaWYKLSAg
ICAgICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4o
KS5wYXlsb2FkR1BSKCk7Ci0gICAgfQorICAgIHZvaWQgZW1pdENUSVRodW5rUHJvbG9ndWUoKTsK
KyAgICB2b2lkIGVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0
YS5jcHAKaW5kZXggODE4MGQ2YWJhNTc0MDQwMWEyZmNhYjJkNWExZmRkNTNjOWEyMDZhMy4uMWM3
NGYxZjk4MmZjNTA5OTZkOGUxZmVkYjAxZmUzYWJiZDdhZDg2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVy
cy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCkBAIC05NSw5ICs5Niw5IEBAIENh
bGxGcmFtZVNodWZmbGVEYXRhIENhbGxGcmFtZVNodWZmbGVEYXRhOjpjcmVhdGVGb3JCYXNlbGlu
ZU9yTExJbnRUYWlsQ2FsbChjb25zCiAgICAgICAgICAgICAgICAgRGF0YUZvcm1hdEpTKTsKICAg
ICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJl
Y292ZXJ5OjppbkdQUihCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIERhdGFGb3JtYXRKUyk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVy
eTo6aW5HUFIoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIERhdGFGb3JtYXRKUyk7CiAjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHNodWZmbGVE
YXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxlZUpTUi50YWdHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5
bG9hZEdQUigpKTsKKyAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBh
aXIoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi50YWdHUFIoKSwgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCiAg
ICAgc2h1ZmZsZURhdGEuc2V0dXBDYWxsZWVTYXZlUmVnaXN0ZXJzKCZSZWdpc3RlckF0T2Zmc2V0
TGlzdDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgc2h1ZmZsZURh
dGEuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXggNTJh
MTNhYWFmYjc3YjZlNDRmYTdlYjE5MmIwNjg0M2MyY2NiOTIyNi4uODJhZjcxNjkzMDlkN2M5MDBh
YzhmMGU1NWQ2YjU3N2FhNjEyYjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgK
QEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVk
ZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uVHJhaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC05NzYsNiArOTc4LDIxMSBAQCBpbmxpbmUgTm9SZXN1bHRUYWcgZXh0cmFjdFJl
c3VsdChOb1Jlc3VsdFRhZykgeyByZXR1cm4gTm9SZXN1bHQ7IH0KIC8vIFdlIHVzZSB0aGlzIGhh
Y2sgdG8gZ2V0IHRoZSBHUFJJbmZvIGZyb20gdGhlIEdQUlJlZyB0eXBlIGluIHRlbXBsYXRlcyBi
ZWNhdXNlIG91ciBjb2RlIGlzIGJhZCBhbmQgd2Ugc2hvdWxkIGZlZWwgYmFkLi4KIGNvbnN0ZXhw
ciBHUFJJbmZvIHRvSW5mb0Zyb21SZWcoR1BSUmVnKSB7IHJldHVybiBHUFJJbmZvKCk7IH0KIAor
Y2xhc3MgTm9PdmVybGFwSW1wbCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub092
ZXJsYXBJbXBsUmVnTWFzayhHUFJSZWcgZ3ByKQorICAgIHsKKyAgICAgICAgaWYgKGdwciA9PSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgcmV0dXJuIDBVTEw7CisgICAgICAgIHVuc2lnbmVk
IGJpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihncHIpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChiaXQgPCBjb3VudE9mQml0czx1aW50NjRfdD4pOworICAgICAgICByZXR1cm4gMVVMTCA8PCBi
aXQ7CisgICAgfQorCisgICAgLy8gQmFzZSBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCkg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gR1BSUmVnIGNhc2UKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVp
bnQ2NF90IHVzZWQsIEdQUlJlZyBncHIsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG1hc2sgPSBub092ZXJsYXBJbXBsUmVnTWFzayhncHIpOworICAgICAgICBpZiAodXNl
ZCAmIG1hc2spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBub092
ZXJsYXBJbXBsKHVzZWQgfCBtYXNrLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICAvLyBKU1ZhbHVl
UmVncyBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBKU1ZhbHVlUmVncyBqc3Is
IEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG1hc2sgPSBub092ZXJsYXBJ
bXBsUmVnTWFzayhqc3IucGF5bG9hZEdQUigpKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
ICAgICBtYXNrIHw9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci50YWdHUFIoKSk7CisjZW5kaWYK
KyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7CisgICAgfQor
CitwdWJsaWM6CisgICAgLy8gRW50cnkgcG9pbnQKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW50cnkoQXJncy4uLiBhcmdzKSB7IHJl
dHVybiBub092ZXJsYXBJbXBsKDAsIGFyZ3MuLi4pOyB9Cit9OworCisvLyBDaGVja3MgdGhhdCB0
aGUgZ2l2ZW4gbGlzdCBvZiBHUFJSZWdzIGFuZCBKU1ZhbHVlUmVncyBkbyBub3Qgb3ZlcmxhcC4g
VXNlIHRoaXMgaW4gc3RhdGljCisvLyBhc3NlcnRpb25zIHRvIGVuc3VyZSB0aGF0IHJlZ2lzdGVy
IGFsaWFzZXMgbGl2ZSBhdCB0aGUgc2FtZSBwb2ludCBkbyBub3QgbWFwIHRvIHRoZSBzYW1lCisv
LyBhcmNoaXRlY3R1cmFsIHJlZ2lzdGVyLgordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Citj
b25zdGV4cHIgYm9vbCBub092ZXJsYXAoQXJncy4uLiBhcmdzKSB7IHJldHVybiBOb092ZXJsYXBJ
bXBsOjplbnRyeShhcmdzLi4uKTsgfQorCitjbGFzcyBQcmVmZXJyZWRBcmd1bWVudEltcGwgewor
ICAgIHByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIEFyZ051bT4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0
aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9m
QXJnKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplb2YodHlwZW5hbWUgRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxBcmdOdW0+KTsKKyAgICB9
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcg
Zmlyc3QsIEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9m
QXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpIDw9IDgsICJEb24ndCBrbm93IGhv
dyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUlu
ZGV4KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgZmlyc3QgfTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2Fy
bmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRp
b25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4ocmVzdC4uLik7CisgICAgICAgIH0KKyAgICB9Cisj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcg
Zmlyc3QsIEdQUlJlZyBzZWNvbmQsIEdQUlJlZyB0aGlyZCwgQXJncy4uLiByZXN0KQorICAgIHsK
KyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9w
ZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1
bWVudHMiKTsKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlm
IGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgLy8g
Rml0cyBpbiBzaW5nbGUgR1BSCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7
IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICBV
TlVTRURfUEFSQU0odGhpcmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHBy
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAm
JiBzZWNvbmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFy
Z3VtZW50R1BSMykgeworICAgICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGlu
IEdQUnMgbmVlZHMgdG8gc3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBh
cmd1bWVudEdQUjEKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyB0aGlyZCwg
c2Vjb25kIH07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0
IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVz
aGVkIHRvIHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVyCisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcg
PD0gNCkgeworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBj
b25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBB
cmdOdW0sIEluZGV4IC0gMT4oc2Vjb25kLCB0aGlyZCwgcmVzdC4uLik7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewor
ICAgICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8g
c3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEsIGJ1
dCByZXVzZSBpdCBsYXRlcgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlv
blR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihmaXJzdCwgcmVzdC4uLik7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lz
dGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywgc28gaXQg
ZG9lcyBub3QgbWF0dGVyCisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHRoaXJkLCByZXN0Li4uKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmly
c3QsIEdQUlJlZyBzZWNvbmQpCisgICAgeworICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVP
ZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25v
dyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICAvLyBCYXNlIGNhc2Us
ICdmaXJzdCcgYW5kICdzZWNvbmQnIGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2ls
bCBiZSBwdXNoZWQgb24gdGhlIHN0YWNrIGFueXdheQorICAgICAgICBpZiBjb25zdGV4cHIgKCFJ
bmRleCkgeworICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQp
IHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdh
cm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9OworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAg
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1
ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25U
eXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oc2Vjb25kKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0
IG9mIHJlZ2lzdGVycyIpOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdO
dW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
aWNrSlNSKEdQUlJlZyBmaXJzdCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6
ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4o
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBr
bm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIC8vIEJhc2UgY2Fz
ZSwgJ2ZpcnN0JyBpcyBuZXZlciBhbiBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNo
ZWQgb24gdGhlIHN0YWNrIGFueXdheQorICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJl
bnRBcmcgPD0gNCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
Zmlyc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICB9CisjZW5kaWYKKwor
cHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBB
cmdOdW0+CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KKyAgICBw
cmVmZXJyZWRBcmd1bWVudEpTUigpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgIU9T
KFdJTkRPV1MpCisgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4o
CisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQsIEdQUkluZm86OmFyZ3VtZW50R1BSNSk7CisjZWxz
ZQorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgICBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyNlbmRpZgorI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyAgICAgICAgLy8gVGhlIGxh
c3QgcmVnaXN0ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBwdXNoZWQgb250byB0aGUgc3RhY2sgZm9y
IGNhbGxzLCBzbyB3ZSBjYW4gdXNlCisgICAgICAgIC8vIHRoZSBsaW5rIHJlZ2lzdGVyIGFzIGEg
dGVtcG9yYXJ5LgorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+
KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMywgR1BSSW5mbzo6cmVnVDcsICAgICAgICBHUFJJbmZvOjpyZWdUNiwKKyAgICAgICAgICAg
IEdQUkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBBUk1SZWdpc3Rl
cnM6OmxyKTsKKyNlbGlmIENQVShNSVBTKQorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRp
b25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVnVDIsICAgICAgICBHUFJJbmZvOjpyZWdU
MywKKyAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAg
ICAgICBHUFJJbmZvOjpyZWdUNik7CisjZW5kaWYKKyNlbmRpZgorICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CisgICAgcHJlZmVycmVkQXJndW1lbnRHUFIoKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVP
ZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkgPD0gNCwgIkFyZ3VtZW50IGRvZXMgbm90IGZp
dCBpbiBHUFIiKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gcHJlZmVycmVkQXJndW1lbnRKU1I8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpLnBheWxvYWRHUFIoKTsKKyAgICB9Cit9OworCisvLyBD
b21wdXRlcyAoc3RhdGljYWxseSwgYXQgY29tcGlsYXRpb24gdGltZSksIHRoZSBpZGVhbCBtYWNo
aW5lIHJlZ2lzdGVyIGFuIGFyZ3VtZW50IHNob3VsZCBiZQorLy8gbG9hZGVkIGludG8gZm9yIGEg
ZnVuY3Rpb24gY2FsbC4gVGhpcyB5aWVsZHMgdGhlIEFCSSBzcGVjaWZpYyBhcmd1bWVudCByZWdp
c3RlcnMgZm9yIHRoZQorLy8gaW5pdGlhbCBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUsIHRoZW4g
c3VpdGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVycyBmb3IgdGhlIHJlbWFpbmluZworLy8gYXJndW1l
bnRzLiBUaGUgaWRlYSBpcyB0aGF0ICdzZXR1cEFyZ3VtZW50cycgd2lsbCBoYXZlIHRvIGRvIHRo
ZSBtaW5pbWFsIGFtb3VudCBvZiB3b3JrIHdoZW4KKy8vIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB0
byBob2xkIHRoZSBhcmd1bWVudHMsIHNvIGlmIHlvdSBhcmUgbG9hZGluZyBtb3N0IGFyZ3VtZW50
cyBmcm9tIG1lbW9yeQorLy8gYW55d2F5LCB1c2luZyB0aGVzZSByZWdpc3RlcnMgeWllbGRzIHRo
ZSBzbWFsbGVzdCBjb2RlIHJlcXVpcmVkIGZvciBhIGNhbGwuCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lm
X3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEdQUlJl
Zz4KK3ByZWZlcnJlZEFyZ3VtZW50R1BSKCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1l
bnRJbXBsOjpwcmVmZXJyZWRBcmd1bWVudEdQUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9
CisKKy8vIFNlZSBwcmVmZXJyZWRBcmd1bWVudEdQUiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBm
dW5jdGlvbi4gVGhpcyB2ZXJzaW9uIHJldHVybnMgYSBKU1ZhbHVlUmVncworLy8gaW5zdGVhZCBv
ZiBhIEdQUiwgd2hpY2ggb24gSlNWQUxVRTY0IGFyZSBlcXVpdmFsZW50LCBidXQgb24gSlNWQUxV
RTMyXzY0IGEgSlNWYWx1ZVJlZ3MgaXMKKy8vIHJlcXVpcmVkIHRvIGhvbGQgYSA2NC1iaXQgd2lk
ZSBmdW5jdGlvbiBhcmd1bWVudCwgc28gdXNlIHRoaXMgaW4gcGFydGljdWxhciB3aGVuIHBhc3Np
bmcgYQorLy8gSlNWYWx1ZS9FbmNvZGVkSlNWYWx1ZSB0byBiZSBjb21wYXRpYmxlIHdpdGggYm90
aCBKU1ZBTFVFNjQgYW4gSlNWQUxVRTMyXzY0IHBsYXRmb3JtcywgYW5kIHVzZQorLy8gcHJlZmVy
cmVkQXJndW1lbnRHUFIgd2hlbiBwYXNzaW5nIGhvc3QgcG9pbnRlcnMuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorY29uc3RleHByIHN0ZDo6ZW5h
YmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSks
IEpTVmFsdWVSZWdzPgorcHJlZmVycmVkQXJndW1lbnRKU1IoKQoreworICAgIHJldHVybiBQcmVm
ZXJyZWRBcmd1bWVudEltcGw6OnByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFy
Z051bT4oKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2NGRkZWYyM2Q0YjJkNjI0
ZmI3MzQ1OWYwNTQ3YWY1Nzg4OTQ2OWYuLjUxNWI3OTZiOGFiMzg5N2ZmYWQ5ODIyYjA0MjVlZWNi
YjA1NGUwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAjZGVmaW5lIERFRklORV9TTE9XX09QKG5hbWUpIFwKICAg
ICBjYXNlIG9wXyMjbmFtZTogeyBcCiAgICAgICAgIGlmIChtX2J5dGVjb2RlSW5kZXggPj0gc3Rh
cnRCeXRlY29kZUluZGV4KSB7IFwKLSAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAg
ICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfIyNu
YW1lKTsgXAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsgXAogICAgICAgICB9IFwK
ICAgICAgICAgTkVYVF9PUENPREVfSU5fTUFJTihvcF8jI25hbWUpOyBcCkBAIC0xOTAsMTUgKzE5
MCwxNSBAQCB2b2lkIEpJVDo6cmVzZXRTUCgpCiAKICNkZWZpbmUgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKLSAgICAgICAgZW1pdFNsb3dD
YXNlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCisg
ICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAg
ICAgYnJlYWs7IFwKICAgICB9CiAKLXZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3Rpb24gc3R1YikKK3ZvaWQgSklUOjplbWl0U2xvd0Nh
c2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVu
Y3Rpb24gc3R1YikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHN0dWIpOwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc3R1Yik7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtNjU3LDkgKzY1Nyw2IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHN0cmlj
dGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuc3RyaWN0ZXEpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGdldF9wcm90b3R5cGVfb2YpCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChyZXNvbHZl
X3Njb3BlKQotI2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKGNoZWNrX3Rk
eikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AodG9fcHJvcGVydHlfa2V5KQogICAg
ICAgICBkZWZhdWx0OgpAQCAtODYwLDkgKzg1Nyw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlu
a1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAg
bV9hcml0eUNoZWNrID0gZW50cnlMYWJlbDsgLy8gTmV2ZXIgcmVxdWlyZSBhcml0eSBmaXh1cC4K
IAogICAgIEFTU0VSVChtX2ptcFRhYmxlLmlzRW1wdHkoKSk7Ci0gICAgCi0gICAgcHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotICAgIAorCiAgICAgaWYgKG1fZGlzYXNzZW1ibGVy
KQogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0RW5kT2ZDb2RlKGxhYmVsKCkpOwogICAgIG1f
cGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWwoKSwgUENUb0NvZGVPcmln
aW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKQEAgLTkxNCwxMiArOTA5LDEwIEBA
IHZvaWQgSklUOjpsaW5rKCkKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0aW9uTGFiZWwodm0o
KS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFj
ay5lbXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzV2l0
aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFu
ZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZgogCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX25lYXJK
dW1wcykgewogICAgICAgICBpZiAocmVjb3JkLnRhcmdldCkKQEAgLTEwNDAsMzUgKzEwMzMsNiBA
QCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVCbG9jayogY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkVmZm9ydAogICAgIHJldHVybiBmaW5hbGl6ZU9uTWFpblRocmVh
ZChjb2RlQmxvY2spOwogfQogCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5k
bGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGlmICghbV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewotICAgICAgICBtX2V4
Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMpOwotCi0gICAgICAg
IGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50
cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxscy5hcHBlbmQo
RmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSkp
KTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVj
a3MubGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2Fs
bHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSk7Ci0g
ICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVDo6ZG9NYWluVGhyZWFkUHJlcGFy
YXRpb25CZWZvcmVDb21waWxlKCkKIHsKICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZl
IHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlw
ZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IDg3Y2U5ZGM1OWUxZDJlNjhjYWY4NzVjMTc2NWNhYzQ5NTEyYjgwZDQuLmMy
NjVjY2MwNDc5ODdiZjljNzc0Nzg4MjQxYmUwNzIxYTBhNjVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtMjc2LDggKzI3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suYXBwZW5kKGVtaXRFeGNlcHRp
b25DaGVjayh2bSgpKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
RXhjZXB0aW9uSGFuZGxlcnMoKTsKLQogICAgICAgICB2b2lkIGFkdmFuY2VUb05leHRDaGVja3Bv
aW50KCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KEp1bXAp
OwogICAgICAgICB2b2lkIHNldEZhc3RQYXRoUmVzdW1lUG9pbnQoKTsKQEAgLTU1Myw3ICs1NTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9lbnVtZXJhdG9y
X2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlVHlwZSwgdHlwZW5h
bWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hh
c19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBPcGNvZGVUeXBlJiwgU2xv
d1BhdGhGdW5jdGlvblR5cGUpOworICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJv
cGVydHlJbXBsKGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KGNvbnN0
IEluc3RydWN0aW9uKik7CiAKQEAgLTYxNCw3ICs2MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKLSAgICAgICAgdm9pZCBlbWl0
U2xvd0Nhc2VDYWxsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOworICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNh
bGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYsIFNsb3dQYXRoRnVuY3Rpb24pOwog
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlv
biosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTYyMiw3ICs2MjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
CiAgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVh
bFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5
cGUpOwotICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlKTsKKyAgICAgICAgdm9pZCBl
bWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+CiAgICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKQEAgLTY1OCwzOSArNjU2LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVH
ZW5lcmF0b3IoVk0mKTsKIAogICAgIHByaXZhdGU6Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgICAgIC8vIFRodW5rIGdlbmVyYXRvcnMuCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3B1dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYp
OworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworCiAgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0
X3RvX3Njb3BlR2VuZXJhdG9yKFZNJik7Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3Io
Vk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYpOwogCi0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCB0aHVua0lzVXNlZEZvck9wR2V0RnJvbVNjb3BlKFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHbG9iYWxWYXIgYmVjYXVz
ZSBpdCBpcyBtb3JlIGVmZmljaWVudCB0byBlbWl0IGlubGluZSB0aGFuIHVzZSBhIHRodW5rLgot
ICAgICAgICAgICAgLy8gUmVzb2x2ZWRDbG9zdXJlVmFyIGFuZCBNb2R1bGVWYXIgYmVjYXVzZSB3
ZSBkb24ndCB1c2UgdGhlc2UgdHlwZXMgd2l0aCBvcF9nZXRfZnJvbV9zY29wZS4KLSAgICAgICAg
ICAgIHJldHVybiAhKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBS
ZXNvbHZlZENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0mKTsK
ICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xv
d19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHRlbXBsYXRlIDxSZXNv
bHZlVHlwZT4KICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rKFZNJik7CiAgICAgICAgIHRlbXBsYXRl
IDxSZXNvbHZlVHlwZT4KICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rKFZNJik7CisgICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2VudGVyX2hhbmRs
ZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2Vu
ZXJhdG9yKFZNJik7CiAKICAgICAgICAgSnVtcCBnZXRTbG93Q2FzZShWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgICAgICB7CkBAIC03MTgsOSArNzA2LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAg
ICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MpOwotI2lmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7Ci0jZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+LCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKICAg
ICAgICAgdm9pZCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChB
ZGRyZXNzLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0KTsKQEAgLTc2Myw3ICs3NDgsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAvLyB4NjQgV2luZG93cyBjYW5ub3QgdXNlIHN0YW5k
YXJkIGNhbGwgd2hlbiB0aGUgcmV0dXJuIHR5cGUgaXMgbGFyZ2VyIHRoYW4gNjQgYml0cy4KICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoaXM2NEJpdFR5cGU8dHlwZW5hbWUgRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OlJlc3VsdFR5cGU+Ojp2YWx1ZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwotICAgICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tBbmRTbG93UGF0aFJldHVyblR5
cGUob3BlcmF0aW9uKTsKKyAgICAgICAgICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoU2xvd1BhdGhS
ZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAgICAgICAgICBleGNlcHRpb25DaGVjaygpOworICAg
ICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgICAgIH0KICNlbHNlIC8vIE9TKFdJTkRPV1MpICYm
IENQVShYODZfNjQpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAppbmRleCA3NmUwNjg5ZmMxOTUwZTQ1NTMxNDY0N2Q1NDk3MjYwODZmMjQyYWQ5Li5mNDI2
MDc0ZjQ1YmFmNGZjNjBjODUyODVkMGRmY2IwYzFhNzU1ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTQ1MSwxOSArNDUxLDE5IEBAIHZvaWQg
SklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCBqc1JlZ1QxMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0
U2xvd19vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX21vZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3Bh
dGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCiAjZWxzZSAvLyBDUFUoWDg2
XzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiopCiB7
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtNTIy
LDExICs1MjIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcG93KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJl
c3VsdFJlZ3MpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG93KGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9wb3cpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgc2xvd19wYXRoX3Bvdyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIApAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rpdihjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VChnZW4uZW5kSnVtcExpc3QoKS5lbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKGdlbi5zbG93UGF0
aEp1bXBMaXN0KCkuZW1wdHkoKSk7Ci0gICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGl2KTsKKyAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZGl2KTsKICAgICAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsLmNwcAppbmRleCBlZTNjYzQ3OGZmNDdmYWRhNzFlYzlkYzE4ZmFkMWQzNDU1NDU2OWI1Li5j
NjhlNDdlZTljODhiMTZlODE2MTRmZGM4ZGNhMGM2MGM0MmMyODk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkpJVC5o
IgogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJCeXRlY29k
ZU9wZXJhbmRzRm9yQ2hlY2twb2ludC5oIgogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZXIuaCIKQEAgLTE1Myw3ICsxNTQs
NyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSkKICAgICBKdW1w
IG5vdEJpZ2dlc3QgPSBicmFuY2gzMihBYm92ZSwgcmVnVDMsIHJlZ1QyKTsKICAgICBzdG9yZTMy
KHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBDYWxsTGlua0luZm86Om9mZnNldE9mTWF4QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSkpOwogICAgIG5vdEJpZ2dlc3QubGluayh0aGlzKTsKLSAgICAK
KwogICAgIC8vIEluaXRpYWxpemUgJ3RoaXMnLgogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0
aGlzSlNSID0ganNSZWdUMTA7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVmFsdWUs
IHRoaXNKU1IpOwpAQCAtMTk2LDExICsxOTcsMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVDYWxsRXZh
bFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXMK
IAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocmVnaXN0ZXJPZmZzZXQgKiBzaXplb2YoUmVnaXN0
ZXIpICsgc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUiwgcmVnVDMpKTsKLSAgICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bGVlSlNSLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCByZWdU
MykpOworICAgIGxvYWRWYWx1ZShBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2Yo
UmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUik7CiAgICAgbG9hZEds
b2JhbE9iamVjdChyZWdUMyk7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcENhbGxFdmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwotICAgIGVtaXRWaXJ0dWFsQ2Fs
bFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6
Y2FsbExpbmtJbmZvR1BSLCBDYWxsTW9kZTo6UmVndWxhcik7CisgICAgbWF0ZXJpYWxpemVQb2lu
dGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcENhbGxFdmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZD
YWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQ
Uik7CisgICAgZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92bSwg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJl
Z3VsYXIpOwogICAgIHJlc2V0U1AoKTsKIH0KIApAQCAtMjEzLDE4ICsyMTQsMTggQEAgYm9vbCBK
SVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcCYsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5z
aWduZWQpCiB0ZW1wbGF0ZTw+CiBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFp
bENhbGwmIGJ5dGVjb2RlLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkIGNhbGxMaW5r
SW5mb0luZGV4KQogewotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29k
ZSwgT3BUYWlsQ2FsbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKLSAgICBKdW1wTGlzdCBzbG93UGF0aHMg
PSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0geworICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BUYWlsQ2FsbDo6TWV0YWRh
dGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpj
YWxsTGlua0luZm9HUFIpOworICAgIEp1bXBMaXN0IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6
ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6
Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0gewogICAgICAgICBDYWxs
RnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YSA9IENhbGxGcmFtZVNodWZmbGVEYXRhOjpjcmVh
dGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChieXRlY29kZSwgbV91bmxpbmtlZENvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2h1ZmZsZXIg
eyAqdGhpcywgc2h1ZmZsZURhdGEgfTsKLSAgICAgICAgc2h1ZmZsZXIubG9ja0dQUihCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgIHNodWZmbGVyLmxvY2tH
UFIoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAg
IHNodWZmbGVyLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgIH0pKTsKICAgICBhZGRTbG93Q2Fz
ZShzbG93UGF0aHMpOwogCiAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgIG1f
Y2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uZG9uZUxvY2F0aW9uID0gZG9u
ZUxvY2F0aW9uOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2Miw4ICsyNjMs
OCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KS5iaXRzKCk7CiAgICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgVGFnT2Zmc2V0KSk7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGNhbGxlZSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpOwotICAgIHN0b3Jl
VmFsdWUoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IsIEFkZHJlc3Moc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGNhbGxlZSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxl
ZUpTUik7CisgICAgc3RvcmVWYWx1ZShCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVl
SlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpKSk7CiAKICAgICBpZiAoY29tcGlsZUNhbGxFdmFsKGJ5dGVjb2RlKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjcxLDE3ICsyNzIsMTcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIC8vIFdlIG5lZWQgdGhpcyBvbiBKU1ZBTFVFMzJfNjQg
b25seSBhcyBvbiBKU1ZBTFVFNjQgYSBwb2ludGVyIGNvbXBhcmlzb24gaW4gdGhlIERhdGFJQyBm
YXN0CiAgICAgLy8gcGF0aCBjYXRjaGVzIHRoaXMuCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZO
b3RDZWxsKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKSk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoSWZOb3RDZWxsKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1Ip
KTsKICNlbmRpZgogCiAgICAgaWYgKGNvbXBpbGVUYWlsQ2FsbChieXRlY29kZSwgaW5mbywgY2Fs
bExpbmtJbmZvSW5kZXgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtYXRlcmlhbGl6ZVBvaW50
ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0lu
Zm8oKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRP
ZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZv
R1BSKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2Rl
SUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7Ci0gICAgICAgIGF1dG8gc2xv
d1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywg
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNh
bGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsK
KyAgICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJ
Q0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBh
eWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwg
c2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAgICAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXMoKTsKLSAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVDYWxs
UmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxD
YWxsU2xvdyhCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKICAg
ICAgICAgfSkpOwogICAgICAgICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwogICAgICAgICBhdXRv
IGRvbmVMb2NhdGlvbiA9IGxhYmVsKCk7CkBAIC0yODksNyArMjkwLDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxs
TGlua0luZm9JbmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2xvd1BhdGhz
ID0gQ2FsbExpbmtJbmZvOjplbWl0RGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJl
Z2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpj
YWxsTGlua0luZm9HUFIpOworICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0
RGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVK
U1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZv
R1BSKTsKICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IGxhYmVsKCk7CiAgICAgYWRkU2xvd0Nhc2Uo
c2xvd1BhdGhzKTsKIApAQCAtMzc4LDcgKzM3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9j
YWxsX2V2YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
CiB7CiAgICAgY29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLCBpdGVy
KTsKIH0KLSAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENhbGxWYXJhcmdzPihj
dXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CkBAIC0zOTMs
MTIgKzM5NCwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdAogewogICAgIGNvbXBpbGVPcENh
bGxTbG93Q2FzZTxPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cz4oY3VycmVudEluc3RydWN0aW9u
LCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQotICAgIAorCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3RWYXJhcmdzPihjdXJyZW50SW5zdHJ1Y3Rp
b24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9Ci0gICAgCisKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9jb25zdHJ1Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxl
T3BDYWxsU2xvd0Nhc2U8T3BDb25zdHJ1Y3Q+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKQEAgLTQxNiw3ICs0MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAg
fQogICAgIH0pKCk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGlu
c3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0aW9uKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwog
ICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6
OkdlbmVyaWMpKSk7CiAKQEAgLTQyNyw5ICs0MjgsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZXR1cm5WYWx1ZUpTUik7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1
YkluZm9HUFI7CiAKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwg
c3R1YkluZm9HUFIpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlSlNSID09IGJhc2VK
U1IpOyAvLyBPdGhlcndpc2Ugd2lsbCBuZWVkIG1vdmUocmV0dXJuVmFsdWVKU1IsIGJhc2VKU1Ip
CkBAIC00NjksNyArNDcwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0SnVt
cFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKIAogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7Ci0gICAgSlNWYWx1ZVJlZ3MgaXRlcmF0b3JKU1IgPSBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmJhc2VKU1I7CisgICAgSlNWYWx1ZVJlZ3MgaXRlcmF0b3JKU1IgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKICAgICBKdW1wTGlzdCBub3RPYmplY3Q7CiAg
ICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwoaXRlcmF0b3JKU1IpKTsKICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KGl0ZXJhdG9ySlNSLnBheWxvYWRHUFIo
KSkpOwpAQCAtNDc4LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9v
cGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgVW5p
cXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5k
ZXgrK107Ci0gICAgCisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAogICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
OwpAQCAtNTE4LDE2ICs1MTksMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpG
YXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBuZXh0SlNSID0gYmFzZUpTUjsgLy8gVXNlZCBhcyB0ZW1wb3JhcnkgcmVnaXN0ZXIKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgbmV4dEpTUik7CiAgICAg
SnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkobmV4dEpTUik7CiAKLSAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rp
b24pOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgdHJ5RmFzdEZ1bmN0
aW9uKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIEp1bXAgZmFzdENhc2UgPSBicmFu
Y2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CiAKQEAgLTYxNiw4
ICs2MTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGVtaXRQdXRDYWxsUmVzdWx0
KGJ5dGVjb2RlKTsKICAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsK
IAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVz
aW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOwogCiAg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGl0ZXJDYWxsUmVzdWx0SlNSID0gZG9udENsb2JiZXJK
U1I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKaW5kZXggYzY3YmNlMDlmZmJjNjBlMjQzM2U2MjJlMzc4Mjc4Y2YyMDc0
YjRiZS4uZjI3M2Y0MmI5NDY0NjAwYmIyZDk2YTM4NTcwNDA1YjZhMDlmYTJkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpbmNsdWRlICJCYXNl
bGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBA
IC0xNDksOSArMTUwLDkgQEAgdm9pZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2Vs
aW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9h
ZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5s
aW5lQWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpT
Uik7CkBAIC0xODUsOSArMTg2LDkgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I6
OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWcKIAogICAgIG1f
c3RhcnQgPSBqaXQubGFiZWwoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWRXaXRoVGhpczo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBqaXQubG9hZENv
bnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAgICAgZ2VuZXJhdGVHZXRCeUlkSW5saW5l
QWNjZXNzKGppdCwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHNjcmF0Y2hHUFIsIHJlc3VsdEpTUik7
CkBAIC0yMTUsMTAgKzIxNiwxMCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRl
QmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YgogCiAgICAgaml0
LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogCi0gICAgdXNpbmcgQmFzZWxp
bmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpz
Y3JhdGNoR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaDJH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0
Y2gyR1BSOwogCiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUpTUi5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwog
ICAgIGF1dG8gZG9JbmxpbmVBY2Nlc3MgPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVh
bCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZJbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKCkpKTsKQEAgLTQw
NSw5ICs0MDYsOSBAQCB2b2lkIEpJVEluQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURh
dGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViSQogCiAgICAgaml0LmxvYWRDb25z
dGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJl
c3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpzY3JhdGNoR1BSOwogCiAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBkb25lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggNjI5MjljMGMyNDg0ZmI5Y2EwZWM2NjFi
YjdjMGE3ZGU2NDlmYzk4Yy4uNTI0ZjliMDQ5ZTBmM2YzMWMyOTZkYzRkNGY3MmU3NjhiZWVlM2I1
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaApAQCAtNDgsMTkwICs0OCw2IEBAIHN0cnVjdCBVbmxpbmtlZFN0cnVjdHVyZVN0
dWJJbmZvOwogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBKSVRU
eXBlIDogdWludDhfdDsKIAotbmFtZXNwYWNlIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnMgewot
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQ
UkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07
Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFj
ZSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3Vs
dEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZv
OjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2Vu
ZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lm
IFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpy
ZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi0jaWYgVVNFKEpTVkFMVUU2
NCkKLW5hbWVzcGFjZSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVycyB7Ci1zdGF0
aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3Rh
dGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07
Ci1zdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1Qw
IH07Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEdQUkluZm86OnJlZ1Qy
OwotLy8gV2UgcmVseSBvbiB0aGlzIHdoZW4gbGlua2luZyBhIENvZGVCbG9jayBhbmQgaW5pdGlh
bGl6aW5nIHJlZ2lzdGVycyBmb3IgYSBHZXRCeVZhbCBTdHViSW5mby4KLXN0YXRpY19hc3NlcnQo
YmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSKTsKLXN0YXRpY19h
c3NlcnQocHJvcGVydHlKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IpOwotc3RhdGljX2Fzc2VydChyZXN1bHRKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6cmVzdWx0SlNSKTsKLXN0YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFIpOwotCi1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMSA9IEdQUkluZm86OnJlZ1QzOwotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDIgPSBHUFJJbmZvOjpyZWdUNDsKLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gzID0g
R1BSSW5mbzo6cmVnVDU7Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5zdGFuY2Vv
ZlJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBy
ZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVl
SlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
dG9KU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gy
R1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMSB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OwotI2lm
IENQVShNSVBTKQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKLSNlbHNlCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OwotI2VuZGlmCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBKU1JJbmZvOjpqc1JlZ1Q1NCB9OwotY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDJHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KEFzc2VtYmx5
SGVscGVyczo6bm9PdmVybGFwKHZhbHVlSlNSLCBwcm90b0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2gxR1BSLCBzY3JhdGNoMkdQUikpOwotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1
cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1Qy
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLXN0
YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
KTsKLXN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6cHJvcGVydHlKU1IpOwotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
IHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBH
UFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xv
YmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwotI2VuZGlmCi1zdGF0
aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6bm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZvR1BS
LCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUikpOwotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpT
UiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNl
bmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnMgewotY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1Ig
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c3R1YkluZm9HUFIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUiB9OwotfQotCi1uYW1lc3BhY2UgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJldXNpbmcgcmVnVDEgZm9y
IGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBC
YXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZv
OjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVn
VDYsIEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJl
Z1Q1IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzIHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BS
SW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYnJhbmRKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotI2VuZGlmCi1z
dGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
Uik7Ci1zdGF0aWNfYXNzZXJ0KGJyYW5kSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSKTsKLX0KLQogY2xhc3MgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewogcHJv
dGVjdGVkOgogICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDI2ZWIyYWZlY2FlZjVhZTRlMzdiYTA5MGZjMmJh
NTg2MWEyN2ZhN2UuLjM5ODFmMTdmMDQyYmQ5MDkxYjRjMjEyYWM4OTNlYzQzMGNlYWM2YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC0xMzMsMTYgKzEzMyw2IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRk
cmVzcyBmdW5jdGlvbikKICAgICBleGNlcHRpb25DaGVjaygpOwogfQogCi0jaWYgT1MoV0lORE9X
UykgJiYgQ1BVKFg4Nl82NCkKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklU
OjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0
IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCi17Ci0gICAgdXBkYXRlVG9w
Q2FsbEZyYW1lKCk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxX
aXRoU2xvd1BhdGhSZXR1cm5UeXBlKGZ1bmN0aW9uKTsKLSAgICBleGNlcHRpb25DaGVjaygpOwot
ICAgIHJldHVybiBjYWxsOwotfQotI2VuZGlmCi0KIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjphcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKIHsKICAgICB1cGRh
dGVUb3BDYWxsRnJhbWUoKTsgLy8gVGhlIGNhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGlu
ZyB0b3BDYWxsRnJhbWUgdG8gdGhlaXIgY2FsbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAppbmRleCA5MDMwYmI1M2IyYWRkNjFhZTA4YTMwYzg3YzcxYTM4ZjFmNjc0
Y2E0Li5iODQ5OWJlN2I4YTBiOTEzMmJhMTIwZjM5ZmIyY2FiMjk3YjVkNDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoSklUKQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdp
c3RlcnMuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgpAQCAtMTUyLDEyICsxNTMs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1f
dmFsdWU7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3RvID0gYnl0ZWNvZGUubV9wcm90b3R5cGU7
CiAKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJvdG9KU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZUlu
c3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gxR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFu
Y2VvZlJlZ2lzdGVyczo6c2NyYXRjaDJHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
Okluc3RhbmNlb2Y6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bnN0YW5jZW9mOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5zdGFuY2VvZjo6c2NyYXRjaDFHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
Okluc3RhbmNlb2Y6OnNjcmF0Y2gyR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2
YWx1ZSwgdmFsdWVKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHByb3Rv
SlNSKTsKQEAgLTIwNSw5ICsyMDYsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUp
OwogICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICB1c2lu
ZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUjsKICAgICBzdGF0aWNfYXNzZXJ0
KHZhbHVlSlNSID09IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCkpOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJvdG9KU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSOwogICAgIC8vIE9u
IEpTVkFMVUUzMl82NCwgJ3Byb3RvJyB3aWxsIGJlIHBhc3NlZCBvbiBzdGFjayBhbnl3YXkKICAg
ICBzdGF0aWNfYXNzZXJ0KHByb3RvSlNSID09IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVy
YXRpb24sIDM+KCkgfHwgaXMzMkJpdCgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUpTUiwgcHJvdG9KU1IpKTsKQEAgLTQ1
MSwyNCArNDUyLDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSmZhbHNlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQo
Y3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNSOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWUpOwotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDI7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcmVnVDQ7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAodmFsdWUsIHNj
cmF0Y2gxLCBzY3JhdGNoMiwgZ2xvYmFsT2JqZWN0R1BSKSk7Ci0gICAgY29uc3RleHByIGJvb2wg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsKLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYWRkSnVtcChicmFuY2hJZkZhbHNleSh2bSgp
LCB2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUiksIHRhcmdldCk7Ci0jZWxz
ZQorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVl
SlNSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIodmFsdWVJc0ZhbHNl
eUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICBhZGRKdW1wKGJyYW5j
aFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTQ3NywzMSArNDY3LDI3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZN
JiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlID0gcmVnVDA7Ci0gICAgc3RhdGljX2Fz
c2VydCh2YWx1ZSA9PSBqc1JlZ1QxMC5wYXlsb2FkR1BSKCkpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDEgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVn
VDI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkpGYWxzZTo6dmFsdWVKU1I7IC8v
IEluY29taW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KHZhbHVlSlNSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIGdsb2JhbE9iamVjdEdQUikpOwor
CiAgICAgY29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
dHJ1ZTsKIAogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1QzOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3Io
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9h
ZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5j
aElmRmFsc2V5KHZtLCBKU1ZhbHVlUmVncyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBS
ZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxP
YmplY3RHUFIpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwotICAgIEp1
bXAgZG9uZSA9IGppdC5qdW1wKCk7Ci0KLSAgICBpc0ZhbHNleS5saW5rKCZqaXQpOwogICAgIGpp
dC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwotCi0gICAgZG9uZS5saW5rKCZqaXQpOwor
ICAgIGF1dG8gaXNGYWxzZXkgPSBqaXQuYnJhbmNoSWZGYWxzZXkodm0sIHZhbHVlSlNSLCBzY3Jh
dGNoMUdQUiwgc2NyYXRjaDJHUFIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubW92ZShUcnVzdGVk
SW1tMzIoMCksIHJlZ1QwKTsKKyAgICBpc0ZhbHNleS5saW5rKCZqaXQpOwogICAgIGppdC5yZXQo
KTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc2ZhbHNleSIpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzRmFsc2V5Iik7CiB9Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX2pl
cV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NTMs
MjQgKzYzOSwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wSnRydWU+KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCi0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHZhbHVlID0ganNSZWdUMTA7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkpUcnVlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVj
dEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNo
MSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZUcnV0aHkodm0oKSwgdmFs
dWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7
CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNUcnV0aHlHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0
MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
Ojp2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCkBAIC02NzksMzEgKzY1NCwyNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0p
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0Owog
Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQo
dmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7IC8vIEluY29t
aW5nCisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHJlZ1QxOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgPSByZWdUNTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHJlZ1Q0OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVl
SlNSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIGdsb2JhbE9iamVjdEdQUikpOworCiAgICAg
Y29uc3RleHByIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gdHJ1ZTsK
IAogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHJlZ1QzOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1
dGh5KHZtLCBKU1ZhbHVlUmVncyh2YWx1ZSksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwg
ZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RH
UFIpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwotICAgIEp1bXAgZG9u
ZSA9IGppdC5qdW1wKCk7Ci0KLSAgICBpc1RydXRoeS5saW5rKCZqaXQpOwogICAgIGppdC5tb3Zl
KFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwotCi0gICAgZG9uZS5saW5rKCZqaXQpOworICAgIGF1
dG8gaXNUcnV0aHkgPSBqaXQuYnJhbmNoSWZUcnV0aHkodm0sIHZhbHVlSlNSLCBzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDJHUFIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIo
MCksIHJlZ1QwKTsKKyAgICBpc1RydXRoeS5saW5rKCZqaXQpOwogICAgIGppdC5yZXQoKTsKIAot
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OlRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc2ZhbHNleSIpOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiB2YWx1ZUlzVHJ1dGh5Iik7CiB9Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC03
MzQsNTcgKzcwNSw0NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVGhyb3c+KCk7Ci0gICAgc3RhdGljX2Fzc2VydChyZWdUMCA9
PSByZXR1cm5WYWx1ZUdQUik7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAg
Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRy
eUZyYW1lKTsKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVGhy
b3cpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uTm9F
eGNlcHRpb25DaGVjayhvcGVyYXRpb25UaHJvdywgZ2xvYmFsT2JqZWN0R1BSLCB2YWx1ZUpTUik7
Ci0gICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSNlbHNlCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwotCiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRocm93blZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHRocm93blZhbHVlSlNSKTsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHRocm93blZhbHVlR1BS
KTsKICAgICBlbWl0TmFrZWROZWFySnVtcCh2bSgpLmdldENUSVN0dWIob3BfdGhyb3dfaGFuZGxl
ckdlbmVyYXRvcikuY29kZSgpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhyb3duVmFs
dWVHUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgCi0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Z2xvYmFsT2JqZWN0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6dGhyb3duVmFsdWVKU1I7
IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93OjpieXRl
Y29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcKIAogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNf
UkVHSVNURVJTID4gMAotICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBhcmd1bWVu
dEdQUjApOwotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcihhcmd1bWVudEdQUjApOworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSID0gZ2xvYmFsT2JqZWN0R1BSOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChzY3JhdGNoR1BSLCB0aHJvd25WYWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiU2hvdWxk
IG5vdCBjbG9iYmVyIGluY29taW5nIHBhcmFtZXRlcnMiKTsKKyAgICAgICAgaml0LmxvYWRQdHIo
JnZtLnRvcEVudHJ5RnJhbWUsIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoc2NyYXRjaEdQUik7CisgICAgfQogI2Vu
ZGlmCiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BS
MDsKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwog
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25W
YWx1ZUdQUik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRo
cm93blZhbHVlSlNSKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7CisKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25UaHJvdykpOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF90
aHJvd19oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogCkBAIC0xMjUwLDc3ICsxMjExLDczIEBAIHZvaWQgSklUOjpl
bWl0X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW9uKikKICAgICAvLyBFdmVuIHRob3VnaCBDVEkg
ZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdp
c3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xv
bmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUu
Ci0gICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOwotI2lm
ICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBzaXplX3QgZmlyc3QgPSBDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKLSAgICBp
ZiAoZmlyc3QgPCBjb3VudCkKLSAgICAgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBqc1JlZ1QxMCk7Ci0gICAgZm9yIChzaXplX3QgaiA9IGZpcnN0OyBqIDwgY291bnQ7ICsraikK
LSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChq
KSwganNSZWdUMTApOwogCi0gICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIHJlZ1QwKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwKTsKLQotICAgIGVt
aXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7Ci0jZWxzZQogICAgIEFTU0VSVChtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkgPT0gMCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRH
UFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQ
UiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIHVuc2lnbmVkIGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0g
Q29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJz
KCk7CisgICAgc2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bnVtVmFycygpOwor
ICAgIHVpbnQzMl90IGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2Vs
aW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobG9jYWxzVG9Jbml0IDwgY291bnQpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1Rv
SW5pdCAqIHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRHUFIpOworCisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpjYW5CZU9wdGltaXplZEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW50ZXI6OmxvY2Fsc1RvSW5pdEdQUjsKKwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKGNhbkJlT3B0aW1pemVkKCkpLCBjYW5CZU9wdGltaXplZEdQUik7Cisg
ICAgbW92ZShUcnVzdGVkSW1tMzIobG9jYWxzVG9Jbml0KSwgbG9jYWxzVG9Jbml0R1BSKTsKICAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfZW50ZXJfaGFuZGxlckdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0
b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQot
ICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIC8vIG9wX2VudGVyIGlzIGFsd2F5cyBh
dCBieXRlY29kZU9mZnNldCAwLgotICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1Rv
SW5pdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGl0ZXJhdG9yR1BS
ID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZW5kR1BSID0gYXJndW1lbnRH
UFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdW5kZWZpbmVkR1BSID0gYXJndW1lbnRHUFIzOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpjYW5CZU9wdGltaXplZEdQUjsg
Ly8gSW5jb21pbmcKIAotICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJsb2NrOjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaW50IHN0YXJ0
T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7Ci0g
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSks
IGl0ZXJhdG9yR1BSKTsKLSAgICBqaXQuc3ViNjQoaXRlcmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQ
UiwgZW5kR1BSKTsKLQotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCB1bmRlZmluZWRHUFIpOwotICAgIGF1dG8gaW5pdExvb3AgPSBqaXQu
bGFiZWwoKTsKLSAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVh
bCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CiAgICAgewotICAgICAgICBqaXQuc3RvcmU2NCh1bmRl
ZmluZWRHUFIsIEJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaXRlcmF0b3JH
UFIsIFRpbWVzT25lKSk7Ci0gICAgICAgIGppdC5zdWI2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKFJl
Z2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKLSAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAg
ICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW50ZXI6OmxvY2Fsc1RvSW5pdEdQUjsg
Ly8gSW5jb21pbmcKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IHJlZ1Q0
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9IHJlZ1Q1OworICAgICAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgdW5kZWZpbmVkSlNSID0ganNSZWdUMzI7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKGxvY2Fsc1RvSW5pdEdQUiwgY2FuQmVPcHRpbWl6ZWRHUFIsIGl0
ZXJhdG9yR1BSLCB1bmRlZmluZWRKU1IpKTsKKworICAgICAgICBzaXplX3Qgc3RhcnRMb2NhbCA9
IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cygpOworICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChz
dGFydExvY2FsKS5vZmZzZXQoKTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IDApOwor
ICAgICAgICBqaXQuc3ViUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBUcnVzdGVkSW1t
MzIoLXN0YXJ0T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9yR1BSKTsKKyAgICAg
ICAgaml0Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0
R1BSLCBsb2NhbHNUb0luaXRHUFIpOworICAgICAgICBqaXQuc3ViUHRyKGl0ZXJhdG9yR1BSLCBs
b2NhbHNUb0luaXRHUFIsIGVuZEdQUik7CisgICAgICAgIGppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpz
VW5kZWZpbmVkKCksIHVuZGVmaW5lZEpTUik7CisKKyAgICAgICAgYXV0byBpbml0TG9vcCA9IGpp
dC5sYWJlbCgpOworICAgICAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFu
T3JFcXVhbCwgaXRlcmF0b3JHUFIsIGVuZEdQUik7CisgICAgICAgIHsKKyAgICAgICAgICAgIGpp
dC5zdG9yZVZhbHVlKHVuZGVmaW5lZEpTUiwgQWRkcmVzcyhpdGVyYXRvckdQUikpOworICAgICAg
ICAgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJhdG9y
R1BSKTsKKyAgICAgICAgICAgIGppdC5qdW1wKGluaXRMb29wKTsKKyAgICAgICAgfQorICAgICAg
ICBpbml0RG9uZS5saW5rKCZqaXQpOwogICAgIH0KLSAgICBpbml0RG9uZS5saW5rKCZqaXQpOwog
CiAgICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVCbG9jaykuCisgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoY2FuQmVPcHRpbWl6ZWRHUFIsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIy
KSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBhcmd1bWVudEdQUjEpOwogICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGpp
dC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CiAKLSAgICBq
aXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOyAv
LyBzYXZlLgotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0ZUJh
cnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKKyAgICAvLyBvcF9lbnRlciBpcyBh
bHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KKyAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIo
MCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwog
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyAgICAvLyBzYXZlIGNhbkJlT3B0
aW1pemVkR1BSIChhcmd1bWVudHMgdG8gY2FsbCBiZWxvdyBhcmUgaW4gcmVnaXN0ZXJzIG9uIGFs
bCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpLgorICAgIC8vIE5vdGU6IHdlIHdpbGwg
ZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2UgcHVzaFRvU2F2ZSwgYXMgaXQgZG9lcyBub3QgbWFpbnRh
aW4gQUJJIHN0YWNrIGFsaWdubWVudC4KKyAgICBqaXQuc3ViUHRyKFRydXN0ZWRJbW1QdHIoMTYp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnN0b3JlUHRyKGNhbkJlT3B0aW1pemVk
R1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSk7CisKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3Vt
ZW50R1BSMSk7CiAgICAgQ2FsbCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJDYWxsID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5tb3ZlKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyLCBjYW5CZU9wdGltaXplZEdQUik7IC8vIHJlc3RvcmUuCi0gICAgaml0Lm1vdmUoVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSwgY2FuQmVPcHRp
bWl6ZWRHUFIpOyAvLyBSZXN0b3JlIGNhbkJlT3B0aW1pemVkR1BSCisgICAgaml0LmFkZFB0cihU
cnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOyAvLyBSZXN0b3JlIHN0YWNr
IHBvaW50ZXIKKwogICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmaml0KTsKIAog
I2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTMzNSwxMSArMTI5MiwzMCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihW
TSYgdm0pCiAgICAgICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoaml0LmJyYW5jaEFkZDMyKFNpZ25l
ZCwgVHJ1c3RlZEltbTMyKE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRy
eSgpKSwgQWRkcmVzcyhhcmd1bWVudEdQUjEsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRl
Q291bnRlcigpKSkpOwogCiAgICAgICAgIGppdC5jb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVz
RnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVu
dHJ5RnJhbWUpOwotCi0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25PcHRpbWl6ZSk+KCZ2bSwgVHJ1c3RlZEltbTMyKDApKTsKICAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAg
ICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyBhcmUg
cmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIgcGFzc2VkIGFzCisgICAgICAgIC8vIHRo
ZSBmaXJzdCBhcmd1bWVudCwgYW5kIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHNoaWZ0ZWQgdG8g
dGhlIHJpZ2h0LiBNYWtlIHNwYWNlIGZvciB0aGlzLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQgY2Fs
bCBzaXRlIGJlbG93Iik7CisgICAgICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAg
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgSklUOjph
cmd1bWVudEdQUjApOworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHZtUG9pbnRlckFyZ0dQUiB7
IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlSW5kZXhCaXRzQXJnR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07CisjZWxzZQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHZtUG9pbnRlckFyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50
R1BSMCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BS
IHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisjZW5kaWYKKyAgICAgICAgaml0Lm1vdmUoVHJ1
c3RlZEltbVB0cigmdm0pLCB2bVBvaW50ZXJBcmdHUFIpOworICAgICAgICBqaXQubW92ZShUcnVz
dGVkSW1tMzIoMCksIGJ5dGVjb2RlSW5kZXhCaXRzQXJnR1BSKTsKKwogICAgICAgICBvcGVyYXRp
b25PcHRpbWl6ZUNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCisjaWYgT1MoV0lO
RE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7IC8vIHRhcmdldFBDCisgICAgICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIyKTsgLy8gZGF0YUJ1ZmZlciAodW51c2VkLCBidXQgbmVlZHMgcG9wcGluZyB0byByZXN0b3Jl
IHN0YWNrKQorI2VuZGlmCisKICAgICAgICAgc2tpcE9wdGltaXplLmFwcGVuZChqaXQuYnJhbmNo
VGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUikpOwogICAgICAgICBqaXQuZmFySnVtcChyZXR1
cm5WYWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCkBAIC0xMzQ3LDExICsx
MzIzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2Vu
dGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
ICAgICBqaXQucmV0KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTEzNjIs
NyArMTMzNCw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICNlbmRpZgogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9lbnRl
cl9oYW5kbGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMTU3Myw1NyArMTU0NCw0MiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCi0gICAgbG9hZEdsb2JhbE9iamVjdChhcmd1bWVudEdQUjApOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIGFyZ3VtZW50R1BSMCk7Ci0jZWxzZQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7Ci0gICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFwczo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfY2hl
Y2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0g
ICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDaGVja1RyYXBzOjpieXRlY29kZU9mZnNl
dEdQUjsgLy8gSW5jb21pbmcKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IGFyZ3VtZW50R1BSMDsKLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2Rl
QmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkhh
bmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOworICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGJ5dGVjb2RlT2Zmc2V0R1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKIAotI2lmIENQ
VShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7
Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwor
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7Cisg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2Fs
bCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0
Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVy
Lmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkhh
bmRsZVRyYXBzKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVua1N0
YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1ZmZl
ci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5k
bGVyIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX25ld19yZWdleHAoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNDQxZTc1Zjc1NmIwZmM4NDUxMzVhNjQwNjIxMGZjNmZlOGM0MDc2MS4uYThkMjUx
NTA3YTlmZDY3YTcxM2E4MGI3YjYyODg2NjQwNDllMTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoSklUKQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgpAQCAtNTIs
MTEgKzUzLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0xMDEsNTEgKzEwMiwyMiBAQCB2b2lkIEpJVDo6Z2Vu
ZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9wY29kZVR5cGUmIGJ5dGVjb2RlLCBWZWN0b3I8
U2xvd0Nhc2VFbgogICAgIGlmICghaGFzQW55U2xvd0Nhc2VzKGl0ZXIpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUR2V0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJnM0pTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGFyZzRKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0
PigpOwotCi0gICAgc3RhdGljX2Fzc2VydCghQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi5vdmVybGFwcyhhcmc0SlNSKSk7Ci0gICAgbW92ZVZhbHVlUmVncyhCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUiwgYXJnNEpTUik7Ci0gICAgbW92ZVZhbHVlUmVncyhC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLCBhcmczSlNSKTsKLSAgICBsb2FkR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQ
b2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0
T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgcHJvZmlsZUdQUiwgYXJnM0pTUiwgYXJnNEpTUik7Ci0jZWxzZQotICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
Z2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2Zp
bGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdU
MTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0
KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpID09IHJlZ1QwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMSk7Ci0KICAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
ICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wY29kZVR5cGU6
Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KQEAgLTE1NSw4ICsxMjcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8Uwog
ICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlWYWw+KCksIGl0ZXIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFs
X3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5l
cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFz
ZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUg
cmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCkBAIC0xNjQsMzUgKzEzNSwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAg
IC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAg
IGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRo
Ojpwcm9maWxlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAv
LyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIs
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
cHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQorICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFs
T2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmpl
Y3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Cisg
ICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigp
ID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZp
YSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwog
Ci0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1p
emUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50
R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNh
bGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRp
b25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0y
MDEsMTAgKzE3MiwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CkBAIC0yMzAsNTUgKzIwMSwyOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgQVNTRVJUKGhhc0FueVNsb3dDYXNlcyhpdGVyKSk7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dl
dEJ5VmFsSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9i
YWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fcHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShj
dXJyZW50SW5zdHJ1Y3Rpb24pOwotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAg
SklUR2V0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlWYWxzW21fZ2V0QnlWYWxJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOyAvLyBhcmcxIGFscmVhZHkgdXNl
ZC4KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigp
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIo
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fz
c2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpy
ZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMjg2LDM0ICsyMzEsMzQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmpl
Y3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJv
bG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFy
Z3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIg
PT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVy
dHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQorICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIs
IHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUik7CisgICAgc3RhdGljX2Fzc2VydChw
cmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwg
Ik5lZWRlZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAg
IGppdC5jYWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Ci0gICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
IAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAg
ICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0g
ICAgICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRo
dW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMzIxLDkgKzI2Niw5
IEBAIHZvaWQgSklUOjplbWl0X29wX3NldF9wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJyYW5kID0gYnl0ZWNvZGUubV9icmFuZDsK
IAotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFuZEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnJhbmQsIGJyYW5kSlNSKTsKQEAgLTM1NCw0NiArMjk5LDIxIEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWCiB7CiAgICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0
cnVjdGlvbik7CiAKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgSklUUHJpdmF0
ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBnZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJp
dmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7Ci0KLSAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2JyYW5kLCBicmFuZEpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgYnJhbmRKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOworICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0g
bV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOworCisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6U2xvd1BhdGg6OmJ5
dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVz
ZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJh
bmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQ
UigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAg
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0
czxkZWNsdHlwZShvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5
cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZgorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC00MDQsOSArMzI0LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CiAKLSAg
ICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC00MjgsNDkgKzM0OCwyMyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoZ2VuKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1ByaXZhdGVCcmFuZD4oKTsKLSAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGUpOwotCi0gICAgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yJiBn
ZW4gPSBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzW21fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXgrK107
Ci0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFs
T2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJyYW5kSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2JyYW5kLCBicmFuZEpTUik7
Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAg
ICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgYnJhbmRKU1IpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVC
cmFuZEFjY2Vzc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlBy
aXZhdGVCcmFuZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKwor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYnJhbmRHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lz
dGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChicmFuZEdQ
UiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplKT46OkFyZ3VtZW50VHlwZXMsIEZ1bmN0aW9uVHJhaXRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcz46OnZhbHVlKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQorICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dl
dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC00ODMsMTkgKzM3NywyMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCi0gICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVn
aXN0ZXJzOjpzdHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJz
Ojpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3Bl
cnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9maWxlR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgdmFsdWVKU1IpOworICAgIG1hdGVyaWFsaXpl
UG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5
UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlSlNSLCBiYXNlKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoYnl0
ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCBwcm9maWxlR1BSKTsKLSAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CisKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoYnl0ZWNvZGUsIGJhc2VKU1IucGF5bG9hZEdQUigpLCAvKiBzY3JhdGNoR1BSOiAqLyBz
dHViSW5mb0dQUik7CiAKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG51
bGxwdHIsIG51bGxwdHIsIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0
QnlWYWwsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKQEAgLTUyOSw3
NiArNDI0LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfZGlyZWN0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdF9vcF9wdXRfYnlfdmFsPE9w
UHV0QnlWYWxEaXJlY3Q+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKLSAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Ci0gICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlOwotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgp
OwotCi0gICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0ZWNvZGUpIHsKLSAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwotICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKLSAgICB9OwotCi0gICAgaWYgKGlzRGlyZWN0KQotICAgICAg
ICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKSk7Ci0gICAg
ZWxzZQotICAgICAgICBsb2FkKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4oKSk7
Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZh
bEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZh
bHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgND4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCA1PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGlmIChpc0RpcmVjdCkKLSAgICAg
ICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRCeVZhbERpcmVjdD4oKSwgT3BQdXRCeVZhbERpcmVjdDo6TWV0YWRhdGE6Om9mZnNldE9m
QXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGVsc2UKLSAgICAgICAgbWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeVZhbD4o
KSwgT3BQdXRCeVZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIGJh
c2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVFB1dEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICAvLyBUaGV5IGFyZSBjb25maWd1cmVkIGlu
IHRoZSBmYXN0IHBhdGggYW5kIG5vdCBjbG9iYmVyZWQuCi0gICAgLy8gY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IHJlZ1QxOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKLSAgICAv
LyBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IHJlZ1Q1OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0j
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBj
YW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAv
LyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5n
IGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC02MDYsMzkgKzQ1Miwz
NiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9w
dXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2Nr
KCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
KyAgICB1c2luZyBTbG93T3BlcmF0b2luID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJp
Y3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJl
Z1Q1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdp
c3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDU7Ci0gICAgewotICAgICAgICBSZWdpc3RlclNldCB1c2Vk
KGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgcHJvZmlsZUdQUik7Ci0gICAgICAgIEFT
U0VSVCghdXNlZC5jb250YWlucyhyZWdUNCkpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFp
bnMocmVnVDUpKTsKLSAgICB9CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2
YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2Zp
bGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0
aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVt
aXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0
R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIp
OworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxTbG93T3BlcmF0b2luPihz
dHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpT
UiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Ci0gICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9n
dWUoKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBl
bHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNo
ZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfeHh4X3ByZXBhcmVD
YWxsIik7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9u
TGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC02NDcsMTAgKzQ5MCwxMCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9w
cm9wZXJ0eTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwog
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5
VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eUpTUik7CkBAIC02NzksNTYgKzUyMiwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJp
dmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY3Vy
cmVudEluc3RydWN0aW9uKTsKLQotICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1
dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107Ci0KLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKLQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgND4oKTsKLQot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUpTUik7Ci0g
ICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJ
bmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZh
bHNbbV9wdXRCeVZhbEluZGV4KytdOwogCi0gICAgLy8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gcmVnVDA7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOwot
ICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IHJlZ1Q0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCisKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENU
SVN0dWIoc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5j
dGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UK
ICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0
IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC03MzYsMzQg
KzU1MCwzOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGlmICghSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJl
c3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlW
YWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFs
dWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9H
UFI7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotCisgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7CisgICAgLy8gTG9hZGluZyBudWxscHRyIHRvIHRoaXMgcmVnaXN0ZXIgaXMg
bmVjZXNzYXJ5IGZvciBzZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbAorICAgIC8vIHRvIG5v
dCBjbG9iYmVyIGdsb2JhbE9iamVjdEdQUiBvbiBBUk1fVEhVTUIyLCBhbmQgaXMgb3RoZXJ3aXNl
IGhhcm1sZXNzLgorICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHByb2ZpbGVH
UFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50c0ZvckluZGlyZWN0Q2FsbDxTbG93T3BlcmF0aW9u
PihzdHViSW5mb0dQUiwKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0
eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuY2FsbChB
ZGRyZXNzKG5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk+KGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBzdHViSW5mb0dQUiwgVHJ1
c3RlZEltbVB0cihudWxscHRyKSk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
KyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGlu
ZTogc2xvd19vcF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtODQxLDEwICs2NjAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7CkBAIC04NzUsNjIgKzY5NCwzNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KKyAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQog
ICAgIEpJVERlbEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZGVsQnlJZHNbbV9kZWxCeUlkSW5kZXgr
K107CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJ
ZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKIAotICAgIGxvYWRHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNtYU1vZGUudmFsdWUoKSkpOwotI2Vsc2UK
LSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVj
b2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50
R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlk
UmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9h
ZEdQUigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSAg
ICBib3hCb29sZWFuKHJlc3VsdEpTUi5wYXlsb2FkR1BSKCksIHJlc3VsdEpTUik7Ci0gICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlc3VsdEpTUik7CisgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCkBAIC05MzgsMzMgKzczMSwzNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0
bwogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
IAotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6cHJvcGVydHlHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OlNsb3dQYXRoOjplY21hTW9kZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1
ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1l
bnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQotICAgIGppdC5sb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0
aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUdQUiwg
ZWNtYU1vZGVHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBz
bG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJu
VmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwot
ICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1
bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0
Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQg
SklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKQEAgLTk3MywxMSArNzY5LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRKU1I7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6c2Ny
YXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtMTAxMCw2
MyArODA2LDM2IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eVZhbD4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLQogICAgIEpJVERlbEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2RlbEJ5VmFsc1ttX2RlbEJ5VmFsSW5kZXgrK107CiAKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQ
YXRoOjplY21hTW9kZUdQUjsKKwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwor
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Bl
cnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVy
YXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgVHJ1c3RlZEltbTMyKGJ5dGVjb2RlLm1fZWNt
YU1vZGUudmFsdWUoKSkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwotICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBlY21hTW9kZUdQUiA9IGFyZ3VtZW50R1BSNDsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUudmFsdWUoKSksIGVjbWFNb2RlR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFsdWVHUFIgPT0gcmVnVDApOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgc3RhdGljX2Fzc2VydChyZXN1bHRKU1IucGF5bG9hZEdQ
UigpID09IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2
bSgpLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAg
Ym94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCkBAIC0xMDc0LDMzICs4NDMsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFs
OjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUo
KTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50
R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUik7CiAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRp
b24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSLCBl
Y21hTW9kZUdQUik7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRlZCBmb3IgYnJhbmNoIHRvIHNs
b3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5jYWxsKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOworICAgIGppdC5ib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCByZXR1cm5W
YWx1ZUpTUik7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3Vl
KCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVt
cCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRo
dW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7
CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0
X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKQEAgLTExMDksOSArODgxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTEzOCw0OSArOTEwLDI3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUcnlHZXRCeUlkPigpOwotICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVj
b2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0
QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHJ5R2V0QnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAg
SklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsK
KworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShKSVQ6
OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3Rh
dGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5W
YWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KT46OnZhbHVlKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOwogICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIApAQCAt
MTE5MSw5ICs5NDEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfZGlyZWN0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
JihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
IAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlSlNSLCBiYXNlVlJlZyk7CkBAIC0xMjE5LDQ5ICs5NjksMjcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWREaXJlY3Q+KCk7Ci0gICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZN
JiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJ
ZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RP
cHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9
PSByZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5
cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplKT46OnZhbHVlKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNz
ZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KIApAQCAtMTI3MiwxNSArMTAwMCwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwotICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworCisgICAg
aWYgKCppZGVudCA9PSB2bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgbG9hZDhGcm9tTWV0YWRhdGEoYnl0ZWNvZGUsIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om9mZnNldE9mTW9kZU1ldGFkYXRhKCkgKyBHZXRCeUlkTW9kZU1ldGFkYXRh
OjpvZmZzZXRPZk1vZGUoKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIEp1bXAgbm90QXJyYXlMZW5n
dGhNb2RlID0gYnJhbmNoMzIoTm90RXF1YWwsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50
OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCgKQEAgLTEzMTIsNTEgKzEwNDAsNjYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0gICAgCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxh
YmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAg
Y2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5r
ZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93
UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigp
OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQo
KSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCi0gICAgc3RhdGljX2Fzc2VydChC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7Cisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgLy8gVGhlIHRo
dW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJ
bnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQorICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFi
b3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KKyAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9u
Z2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCisgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVj
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBq
aXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGls
b2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRo
VGhpcz4oKTsKQEAgLTEzNjUsMTAgKzExMDgsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IFZpcnR1YWxSZWdpc3RlciB0aGlzVlJlZyA9IGJ5dGVjb2RlLm1fdGhpc1ZhbHVlOwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlz
UmVnaXN0ZXJzOjp0aGlzSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVn
aXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcih0aGlzVlJlZywgdGhpc0pTUik7CkBAIC0xMzk1LDk2ICsxMTM4LDMyIEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdFZSZWcsIHJl
c3VsdEpTUik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCi17Ci0gICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0
aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQg
YmVjYXVzZQotICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9i
YWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KLSAg
ICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9i
YWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCi0gICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KLSAgICBDQ2FsbEhlbHBlcnMgaml0OwotCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgp
KTsKLQotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
Uik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLQotICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChB
ZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsK
LQotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9p
ZF9wcmVwYXJlQ2FsbCIpOwotfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5SWRXaXRoVGhpcz4oKTsKLSAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmll
cihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0
b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOwot
ICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxT
bG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0g
cHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdGhpc0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1Ip
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHRoaXNK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHRoaXNKU1Is
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxz
ZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQg
PSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CisgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1dpdGhUaGlzW21fZ2V0QnlJZFdpdGhUaGlzSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRo
VGhpczo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8g
YXJnMSBhbHJlYWR5IGluIHVzZS4KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyB0aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3Rl
cnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1l
bnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJl
c3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKwor
ICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0p
CiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5
IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1h
a2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxh
YmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE0OTIsMzUgKzExNzEsMzUgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2EKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhp
czo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhU
aGlzOjp0aGlzSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0
aFRoaXM6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdp
dGhUaGlzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJv
bG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFy
Z3VtZW50R1BSNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgdGhpc0dQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHRoaXNHUFIgPT0gYXJndW1l
bnRHUFIxKTsKLQorICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0Lmxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1
cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCB0aGlzSlNSLCBwcm9wZXJ0eUdQUik7CisgICAgc3RhdGljX2Fzc2VydChwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpID09IGFyZ3VtZW50R1BSMSwgIk5lZWRl
ZCBmb3IgYnJhbmNoIHRvIHNsb3cgb3BlcmF0aW9uIHZpYSBTdHViSW5mbyIpOworICAgIGppdC5j
YWxsKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgcHJvcGVydHlHUFIpOwotICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3Vl
KCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
LSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxz
ZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
c19wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xNTM0LDEwICsx
MjEzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIHRvIGp1c3QgYWZ0ZXIgdGhlIGFyZ3VtZW50cyBo
YXZlIGJlZW4gbG9hZGVkIGludG8gcmVnaXN0ZXJzICdob3RQYXRoQmVnaW4nLCBhbmQgd2UgZ2Vu
ZXJhdGUgY29kZQogICAgIC8vIHN1Y2ggdGhhdCB0aGUgU3RydWN0dXJlICYgb2Zmc2V0IGFyZSBh
bHdheXMgYXQgdGhlIHNhbWUgZGlzdGFuY2UgZnJvbSB0aGlzLgogCi0gICAgdXNpbmcgQmFzZWxp
bmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3Jh
dGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZVZSZWcsIHZhbHVlSlNSKTsKQEAgLTE1
NjEsNyArMTI0MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHJlc2V0U1AoKTsgLy8gV2UgbWlnaHQgT1NS
IGV4aXQgaGVyZSwgc28gd2UgbmVlZCB0byBjb25zZXJ2YXRpdmVseSByZXNldCBTUAogICAgIGFk
ZFNsb3dDYXNlKCk7CiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKLSAgICAKKwogICAgIC8v
IElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJh
c2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIg
aW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CkBAIC0xNTcwLDU2ICsx
MjQ5LDMwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlJZD4oKTsKLSAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRo
aXMpOwotICAgIAotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9w
dXRCeUlkSW5kZXgrK107Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNp
bmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6
ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dP
cGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5
SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3ImIGdlbiA9IG1fcHV0QnlJZHNbbV9wdXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQ
YXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7CisKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5l
UHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VH
UFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2Rl
QmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQ
Uik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9p
ZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhl
IHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgpAQCAtMTYyNywzNSArMTI4MCwzNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0bwog
ICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAot
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6
OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAv
LyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIs
IHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gcmVnVDA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BS
NDsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0
KCkpOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWVHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQorICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93
T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCB2YWx1ZUpTUiwgYmFzZUpT
UiwgcHJvcGVydHlHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0
byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFy
Z3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCB2YWx1ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZh
ckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQu
cmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1
bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsIik7CisgICAgcGF0
Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQg
SklUOjplbWl0X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CkBAIC0xNjY0LDkgKzEzMTcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbkJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eUlkOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcs
IGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNl
VlJlZyk7CkBAIC0xNjkxLDUxICsxMzQ0LDI5IEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEluQnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRJ
bkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZEluZGV4KytdOwotCi0gICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJ
ZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOworICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1f
cHJvcGVydHkpKTsKKyAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2lu
QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8
fCAhaXNBUk02NCgpKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZv
Q29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91
bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7Ci0gICAg
Ly8gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5
IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5l
ZWQuCiAgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUg
dGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAK
LSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0g
cmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE3NDYsMTEgKzEzNzcs
MTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
IAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZh
bFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0
ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9w
ZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c2NyYXRjaEdQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTc3Nyw2NCArMTQw
OCwzNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0KLSAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9m
aWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFz
ZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBw
cm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQ
UiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5C
eVZhbD4oKTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5C
eVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFI0
OwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRH
UFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMzsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAg
ICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wSW5CeVZhbDo6TWV0
YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIC8vIHNsb3df
b3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3
ZSBuZWVkLgorCisgICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCiAg
ICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsg
anVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50IG5hbWUuCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2Fs
bCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5CeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0SGFz
UHJpdmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSB0eXBlKQogewotICAgIHVzaW5n
IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnN0dWJJbmZvR1BSOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5T3JCcmFuZCwgcHJvcGVydHlKU1IpOwpAQCAtMTg1OCw1
MSArMTQ2MiwyNyBAQCB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRz
dCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpcwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVT
bG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vz
c1R5cGUgdHlwZSkKK3ZvaWQgSklUOjplbWl0SGFzUHJpdmF0ZVNsb3coQWNjZXNzVHlwZSB0eXBl
KQogewotICAgIFVOVVNFRF9QQVJBTShiYXNlKTsKLSAgICBVTlVTRURfUEFSQU0ocHJvcGVydHkp
OwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRl
TmFtZSB8fCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiAKLSAgICBKSVRJ
bkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOwotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25IYXNQ
cml2YXRlTmFtZU9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7
Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxT
bG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5C
eVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNl
R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5T3JCcmFuZEdQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChw
cm9wZXJ0eU9yQnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWVPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6
dmFsdWUpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlv
bkhhc1ByaXZhdGVCcmFuZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5h
bWVPcHRpbWl6ZSk+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgp
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhl
bkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0g
ICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
SW5CeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTE5MTIsMTIgKzE0OTIs
MTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRIYXNQcml2YXRlKGJ5dGVjb2RlLm1fZHN0
LCBieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fcHJvcGVydHksIEFjY2Vzc1R5cGU6Okhhc1By
aXZhdGVOYW1lKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNQcml2YXRlTmFtZT4oKTsKLSAgICBlbWl0
SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nl
c3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5
cGU6Okhhc1ByaXZhdGVOYW1lKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5MjYsMTIg
KzE1MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29k
ZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpI
YXNQcml2YXRlQnJhbmQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVf
YnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZUJyYW5kPigpOwot
ICAgIGVtaXRIYXNQcml2YXRlU2xvdyhieXRlY29kZS5tX2Jhc2UsIGJ5dGVjb2RlLm1fYnJhbmQs
IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CisgICAgZW1pdEhhc1ByaXZhdGVTbG93KEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE5NDEs
NyArMTUxNyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29w
ZTsKIAotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgo
Ynl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgQVNTRVJUKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmluc3RydWN0aW9uQXQobV9ieXRlY29kZUluZGV4KSA9PSBjdXJyZW50SW5z
dHJ1Y3Rpb24pOwpAQCAtMTk0OSwxNCArMTUyNCwxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8g
SWYgd2UgcHJvZmlsZSBjZXJ0YWluIHJlc29sdmUgdHlwZXMsIHdlJ3JlIGd1YXJhbnRlZWQgYWxs
IGxpbmtlZCBjb2RlIHdpbGwgaGF2ZSB0aGUgc2FtZQogICAgIC8vIHJlc29sdmUgdHlwZS4KIAot
ICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgCisgICAgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICBsb2FkUHRyRnJvbU1ldGFkYXRh
KGJ5dGVjb2RlLCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om9mZnNldE9mTGV4aWNhbEVudmly
b25tZW50KCksIHJldHVyblZhbHVlR1BSKTsKICAgICBlbHNlIHsKICAgICAgICAgdWludDMyX3Qg
bWV0YWRhdGFPZmZzZXQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5tZXRhZGF0YSgpLm9mZnNldElu
TWV0YWRhdGFUYWJsZShieXRlY29kZSk7CiAKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBtZXRh
ZGF0YUdQUiA9IHJlZ1QyOwotICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSID0gcmVn
VDA7Ci0gICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsK
KyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6bWV0YWRh
dGFHUFI7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6
OnNjb3BlR1BSOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNj
b3BlOjpieXRlY29kZU9mZnNldEdQUjsKIAogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
UGF5bG9hZChzY29wZSwgc2NvcGVHUFIpOwogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1l
dGFkYXRhT2Zmc2V0KSwgc19tZXRhZGF0YUdQUiwgbWV0YWRhdGFHUFIpOwpAQCAtMTk2NCwyMyAr
MTUzOSwyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBjb2RlOwogICAgICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9
PSBDbG9zdXJlVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVP
cFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXI+KTsKICAg
ICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOwor
ICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3Bl
VGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAgZWxzZSBp
ZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIpCi0gICAgICAgICAgICBjb2RlID0g
dm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7Cisg
ICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVU
aHVuazxHbG9iYWxWYXI+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9
PSBHbG9iYWxQcm9wZXJ0eSkKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVy
YXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxQcm9wZXJ0eT4pOworICAgICAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJv
cGVydHk+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxM
ZXhpY2FsVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJl
c29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxW
YXI+KTsKICAgICAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29s
dmVTY29wZVRodW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAg
ZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9w
UmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuazxHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICAgICAg
ZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2
ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJl
c29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAKICAgICAg
ICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAg
IH0KQEAgLTIwMDAsMTIgKzE1NzUsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAogICAgIHVzaW5nIE1ldGFkYXRhID0gT3BSZXNvbHZlU2NvcGU6Ok1l
dGFkYXRhOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsgLy8gaW5j
b21pbmcKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSID0gcmVnVDA7IC8vIGluY29taW5n
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1QzOyAvLyBpbmNv
bWluZyAtIHBhc3MgdGhydSB0byBzbG93IHBhdGguCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlJlc29sdmVTY29wZTo6bWV0YWRhdGFHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6c2NvcGVHUFI7IC8vIEluY29taW5n
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7IC8vIEluY29taW5nIC0gcGFzcyB0aHJvdWdoIHRvIHNsb3cgcGF0aC4KICAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUNTsgLy8gbG9jYWwgdGVtcG9yYXJ5CiAg
ICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChyZXR1cm5WYWx1ZUdQUiwgbWV0YWRhdGFHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBz
Y3JhdGNoR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNj
b3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOwogICAgIHN0YXRpY19hc3Nl
cnQoc2NvcGVHUFIgPT0gcmV0dXJuVmFsdWVHUFIpOyAvLyBlbWl0UmVzb2x2ZUNsb3N1cmUgYXNz
dW1lcyB0aGlzCiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwpAQCAtMjEzNiw1MCArMTcx
MSwzMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJiB2bQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIC8vIFRoZSBmYXN0IHBhdGggYWxy
ZWFkeSBwdXNoZWQgdGhlIHJldHVybiBhZGRyZXNzLgotI2lmIENQVShYODZfNjQpCi0gICAgaml0
LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBl
cnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgotI2VuZGlmCi0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLSAgICBqaXQuc3Rv
cmUzMihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UmVzb2x2ZVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcKIAogICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlZ1QyOwogICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgaW5z
dHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
aW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUiAsIGdsb2JhbE9iamVjdEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9m
ZnNldEdQUiwgc2NyYXRjaEdQUiAsIGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsK
IAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3Jh
dGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKLSAgICBqaXQu
YWRkUHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKLQorICAg
IGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUp
PihnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogICAgIENhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNl
cHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJ
U0NWNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rl
cik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1l
bnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENU
SVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sg
dGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JCYXNlbGluZSkpOwotICAg
IGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJl
bCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9yZXNvbHZlX3Njb3BlIik7CiB9CiAKQEAgLTIx
OTAsMzggKzE3NDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGUgPSBieXRlY29kZS5tX3Njb3BlOwogICAgIFJlc29sdmVUeXBlIHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPSBieXRlY29kZS5tZXRhZGF0YShtX3Byb2ZpbGVkQ29kZUJsb2NrKS5tX2dldFB1dEluZm8u
cmVzb2x2ZVR5cGUoKTsKIAotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgQVNT
RVJUKG1fdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9uQXQobV9ieXRlY29kZUluZGV4KSA9
PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQ
UiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdUMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0KICAgICB1aW50MzJf
dCBtZXRhZGF0YU9mZnNldCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCkub2Zmc2V0
SW5NZXRhZGF0YVRhYmxlKGJ5dGVjb2RlKTsKIAorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKG1ldGFkYXRhT2Zmc2V0KSwgc19tZXRhZGF0YUdQUiwgbWV0YWRhdGFHUFIpOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjb2RlOwogICAgIGlm
IChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5n
ZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAg
ICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENs
b3N1cmVWYXI+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNj
b3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlIGlm
IChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcikKLSAgICAgICAgY29kZSA9IHZtLmdl
dENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAg
ICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9i
YWxWYXI+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVy
YXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRo
dW5rPEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAgICBlbHNlIGlmIChwcm9m
aWxlZFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5KQotICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsKKyAg
ICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8
R2xvYmFsUHJvcGVydHk+KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEds
b2JhbExleGljYWxWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BH
ZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXI+
KTsKICAgICBlbHNlIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKICAg
ICBlbHNlCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2Nv
cGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAKICAgICBlbWl0TmFrZWROZWFy
Q2FsbChjb2RlLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlSlNSKTsKQEAgLTIyMzUsOSArMTc5MiwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdldEZyb21T
Y29wZVRodW5rKFZNJiB2bSkKICAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJl
bG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0RnJv
bVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVn
VDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QyOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gVXNlZCBvbmx5IG9uIHNsb3cg
cGF0aAorCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEZyb21TY29wZTo6bWV0
YWRhdGFHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEZyb21TY29wZTo6c2NvcGVHUFI7IC8vIEluY29taW5nCisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEZyb21TY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nIC0g
cGFzcyB0aHJvdWdoIHRvIHNsb3cgcGF0aC4KICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgPSByZWdUNTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXRHUFIpOwogICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBtZXRhZGF0YUdQUiwgc2NvcGVH
UFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSKSk7CkBAIC0yMjU2LDcgKzE4MTQsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJhdGVPcEdl
dEZyb21TY29wZVRodW5rKFZNJiB2bSkKICAgICAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzY3Jh
dGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fdmFySW5qZWN0aW9uV2F0
Y2hwb2ludCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFu
Y2g4KEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhdGNocG9pbnRTZXQ6Om9mZnNldE9mU3Rh
dGUoKSksIFRydXN0ZWRJbW0zMihJc0ludmFsaWRhdGVkKSkpOwogICAgIH07Ci0gICAgCisKICAg
ICBhdXRvIGVtaXRDb2RlID0gWyZdIChSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkgewogICAgICAg
ICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CiAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CkBA
IC0yMzcxLDY4ICsxOTI5LDQyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJiB2CiAgICAgLy8gQ2Fs
bEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBqaXQucHVzaFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBq
aXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYK
LQogICAgIHVzaW5nIE1ldGFkYXRhID0gT3BHZXRGcm9tU2NvcGU6Ok1ldGFkYXRhOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsKLSAgICBqaXQuc3RvcmUzMihpbmNv
bWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IHJl
Z1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFk
YXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRG
cm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwogICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAobWV0YWRhdGFHUFIsIGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIs
IGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChtZXRhZGF0YUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIGdsb2JhbE9iamVjdEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQ
UiwgcmV0dXJuVmFsdWVHUFIpKTsKIAotICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgc2NyYXRjaEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhzY3JhdGNoR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxP
YmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9uR1BSKTsKLSAg
ICBqaXQuYWRkUHRyKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIGluc3RydWN0aW9uR1BSKTsK
KyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKIAotICAgIC8vIFByZXNlcnZlIG1ldGFk
YXRhIGluIGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
Y29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUNTUiA9IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
OwotICAgIGF1dG8gcmVzdG9yZUhpamFja2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQubW92
ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpOwotICAgIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFDU1IgPSBzX21ldGFkYXRhR1BSOwotICAgIGF1dG8gcmVzdG9yZUhpamFj
a2VkQ1NSID0gWyZdKCkgewotICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIHNfbWV0YWRhdGFHUFIpOwotICAgICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKHNfbWV0YWRhdGFHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkp
LCBzX21ldGFkYXRhR1BSKTsKLSAgICB9OwotI2VuZGlmCi0gICAgQVNTRVJUKFJlZ2lzdGVyU2V0
OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkuY29udGFpbnMobWV0YWRhdGFDU1IpKTsKLSAgICBqaXQu
bW92ZShtZXRhZGF0YUdQUiwgbWV0YWRhdGFDU1IpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkdldEZyb21TY29wZSk+KGdsb2JhbE9iamVjdEdQUiwgaW5zdHJ1
Y3Rpb25HUFIpOworICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgaW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJl
c3MoaW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGds
b2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhpbnN0cnVjdGlvbkdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9u
R1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7
CisKKyAgICAvLyBzYXZlIG1ldGFkYXRhR1BSIChhcmd1bWVudHMgdG8gY2FsbCBiZWxvdyBhcmUg
aW4gcmVnaXN0ZXJzIG9uIGFsbCBwbGF0Zm9ybXMsIHNvIG9rIHRvIHN0YWNrIHRoaXMpLgorICAg
IC8vIE5vdGU6IHdlIHdpbGwgZG8gYSBjYWxsLCBzbyBjYW4ndCB1c2UgcHVzaFRvU2F2ZSwgYXMg
aXQgZG9lcyBub3QgbWFpbnRhaW4gQUJJIHN0YWNrIGFsaWdubWVudC4KKyAgICBqaXQuc3ViUHRy
KFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgaml0LnN0b3Jl
UHRyKG1ldGFkYXRhR1BSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSk7CisKICAgICBD
YWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0g
ICAgaml0LnN0b3JlVmFsdWUocmV0dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFDU1IsIE1l
dGFkYXRhOjpvZmZzZXRPZlByb2ZpbGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1
Y2tldCgpKSk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciksIG1ldGFkYXRhR1BSKTsgLy8gUmVzdG9yZSBtZXRh
ZGF0YUdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisgICAgaml0LnN0b3JlVmFsdWUocmV0
dXJuVmFsdWVKU1IsIEFkZHJlc3MobWV0YWRhdGFHUFIsIE1ldGFkYXRhOjpvZmZzZXRPZlByb2Zp
bGUoKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAKLSNpZiBDUFUo
WDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0
KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBq
aXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsK
LSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgor
ICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAogICAgIGV4
Y2VwdGlvbkNoZWNrLmxpbmsoJmppdCk7Ci0gICAgcmVzdG9yZUhpamFja2VkQ1NSKCk7CisgICAg
aml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOyAvLyBS
ZXN0b3JlIHN0YWNrIHBvaW50ZXIKKwogICAgIEp1bXAganVtcFRvSGFuZGxlciA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTI1OTAsMjcgKzIxMjIsMjAg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3IKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9
PSBNb2R1bGVWYXIpIHsKICAgICAgICAgLy8gSWYgYW55IGxpbmtlZCBDb2RlQmxvY2sgc2F3IGEg
TW9kdWxlVmFyLCB0aGVuIGFsbCBsaW5rZWQgQ29kZUJsb2NrcyBhcmUgZ3VhcmFudGVlZAogICAg
ICAgICAvLyB0byBhbHNvIHNlZSBNb2R1bGVWYXIuCi0gICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3Ry
aWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9y
ZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiAgICAgfSBlbHNlIHsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAg
IGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25QdXRUb1Njb3BlLCBhcmd1bWVudEdQUjAsIGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0j
ZWxzZQotICAgICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgICAg
IEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRl
eCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAgICAgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOwogCi0gICAg
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfdG9fc2NvcGVH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisgICAg
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF90b19zY29w
ZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CiB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Ly8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0
aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtMjYxOSw0MyArMjE0NCwzNCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRf
dG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2go
WDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7Ci0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVn
aXN0ZXIpOwotI2VuZGlmCi0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIyOwotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOwogICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwogICAgIGNvbnN0ZXhwciBH
UFJSZWcgaW5zdHJ1Y3Rpb25HUFIgPSBhcmd1bWVudEdQUjE7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dFRvU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgY29kZUJsb2NrR1BSID0gYXJndW1lbnRHUFIzOyAvLyBPbmx5
IHVzZWQgYXMgc2NyYXRjaCByZWdpc3RlcgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGds
b2JhbE9iamVjdEdQUiwgaW5zdHJ1Y3Rpb25HUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBjb2RlQmxv
Y2tHUFIpKTsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2Fs
bCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgY29kZUJsb2NrR1BSKTsKICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGNvZGVCbG9ja0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGNvZGVCbG9ja0dQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIGluc3RydWN0aW9u
R1BSKTsKICAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7
CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dFRvU2NvcGUpPihn
bG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBDYWxsIG9wZXJhdGlvbiA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5l
bWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtF
cGlsb2d1ZSgpOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotICAgIGppdC5yZXQoKTsKKyAgICAvLyBUYWls
IGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9
IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1
ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25QdXRUb1Njb3BlKSk7Ci0gICAgYXV0byBoYW5kbGVyID0gdm0uZ2V0Q1RJU3R1Yihwb3BUaHVu
a1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKTsKLSAgICBwYXRjaEJ1
ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF90b19z
Y29wZSIpOwogfQotI2VuZGlmCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjY2Myw3ICsy
MTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5t
X2FyZ3VtZW50czsKICAgICBpbnQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwotICAgIAorCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoYXJndW1lbnRzLCByZWdUMCk7CiAgICAg
bG9hZFZhbHVlKEFkZHJlc3MocmVnVDAsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgp
ICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSksIGpzUmVnVDEwKTsKICAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLCBqc1JlZ1QxMCk7CkBAIC0yNzQzLDcg
KzIyNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKIAogICAgIGdlbmVyaWNDYXNlcy5saW5rKHRoaXMpOwotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogCiAgICAgZG9uZUNhc2VzLmxpbmsodGhpcyk7CkBAIC0yODA2LDcgKzIzMjIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsodGhpcyk7CiAK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRvcl9uZXh0KTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMjgyNCwxMyArMjM0MCwxMyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxS
ZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBi
YXNlR1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUVu
dW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZh
bFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9
IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3Rl
cnM6OnNjcmF0Y2gyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUVu
dW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaDM7CisgICAgY29uc3RleHByIEdQUlJl
ZyByZXN1bHRHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpy
ZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVt
ZXJhdG9yR2V0QnlWYWw6OnN0dWJJbmZvR1BSOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDEgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzY3JhdGNoMTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVu
dW1lcmF0b3JHZXRCeVZhbDo6c2NyYXRjaDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MyA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gzOwog
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlR1BSKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG1vZGUsIHNjcmF0Y2gzKTsKQEAgLTI5MDYsNyArMjQyMiw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCeXRlY29kZSwg
dHlwZW5hbWUgU2xvd1BhdGhGdW5jdGlvblR5cGU+Ci12b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9y
X2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
Y29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2Fz
ZSkKK3ZvaWQgSklUOjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBCeXRl
Y29kZSYgYnl0ZWNvZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIGdlbmVyYWxDYXNlKQogewogICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKQEAgLTI5MzYsNyArMjQ1Miw3IEBAIHZvaWQgSklU
OjplbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uCiAKICAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKIAotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBnZW5lcmFs
Q2FzZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBnZW5lcmFsQ2Fz
ZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAg
LTI5NDQsMzEgKzI0NjAsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVy
dHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySW5CeVZh
bD4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVyYXRvcklu
QnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiB9CiAKIHZvaWQgSklU
OjplbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJ
bXBsKGN1cnJlbnRJbnN0cnVjdGlvbiwgY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eSk7CisgICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0
aW9uLT5hczxPcEVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eT4oKSwgc2xvd19wYXRoX2VudW1lcmF0
b3JfaGFzX293bl9wcm9wZXJ0eSk7CiB9CiAKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCiAKLXZv
aWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51
bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93
X3BhdGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7Cisg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfZW51bWVyYXRv
cl9uZXh0KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9lbnVtZXJhdG9yX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApAQCAtMjk3NywxNSArMjQ5
MywxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51
bWVyYXRvcl9pbl9ieV92YWwpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHko
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0
eSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRUaHVua3MuY3BwCmluZGV4IDRkYjc2YTkwMWRmNTZhZmIxM2I0OGMxZWE4N2VkOTU5N2I4
YzgxZjguLmJmNjBjMGQyMjkwYjY0OWRkZDM1MTcwMzY2YjM1MGUyMzk3ZmJlMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTE3MSw4ICsxNzEsNiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYg
dm0sIFRodW5rR2VuZXJhdG9yCiAgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6
OmN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiB2bSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0
aEZ1bmN0aW9uKQogewogICAgIGF1dG8ga2V5ID0gYml0d2lzZV9jYXN0PFRodW5rR2VuZXJhdG9y
PihzbG93UGF0aEZ1bmN0aW9uKTsKQEAgLTE4MSw4ICsxNzksNiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU2xvd1BhdGhGdW5jdGlvblN0dWIo
Vk0mIHZtLAogICAgIH0pOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Ci0KIHN0cnVjdCBKSVRUaHVua3M6Okhvc3RLZXlTZWFyY2hlciB7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIFdlYWtOYXRpdmVF
eGVjdXRhYmxlSGFzaDo6aGFzaChrZXkpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
V2VhazxOYXRpdmVFeGVjdXRhYmxlPiYgYSwgY29uc3QgSG9zdEZ1bmN0aW9uS2V5JiBiKSB7IHJl
dHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGEsIGIpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA4NDdjZTI1MDJlNDAxOGEyYzZkNTlhYzg2M2Jm
NTdlMTQ1MzhjZWZiLi5hMzc1ZjI4NTFhMTAxNmUwZGI1N2ZjZDhhMGNhNmYxMWRjMjg0MDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDkgKzYzLDcgQEAgcHVi
bGljOgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJu
YWxGdW5jdGlvbkNvbnN0cnVjdChWTSYpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjdGlTdHViKFZNJiwgVGh1bmtHZW5lcmF0b3IpOwotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsKLSNlbmRp
ZgogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwg
VGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBU
aHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ns
b3dQYXRoQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5j
cHAKaW5kZXggYjhhY2FiZTY4ZmRiOTgxOGRjOWY5N2NiMDc0N2EwYTRlMTNkNzI4Yi4uMzJmMDVi
ODNmNTI5ZTg5NWRiZDhlNjJkOWY3Y2MyNTA0MzIwOGMzNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcApAQCAtMzYsNyArMzYsOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorbmFtZXNwYWNlIHsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gSklUOjphcmd1bWVudEdQUjM7Cit9
CiAKIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKIHsKQEAgLTQ0LDkgKzQ2LDcgQEAgdm9p
ZCBKSVRTbG93UGF0aENhbGw6OmNhbGwoKQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0g
bV9qaXQtPm1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9qaXQtPm1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBVTlVT
RURfVkFSSUFCTEUobV9wYyk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldFJl
ZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKLSAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJ
bW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0UmVnKTsKKyAgICBtX2ppdC0+bW92
ZShKSVQ6OlRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
ICAgICBtX2ppdC0+ZW1pdE5ha2VkTmVhckNhbGwodm0uaml0U3R1YnMtPmN0aVNsb3dQYXRoRnVu
Y3Rpb25TdHViKHZtLCBtX3Nsb3dQYXRoRnVuY3Rpb24pLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiB9CiAKQEAgLTU0LDQ2ICs1NCw0OSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayhWTSYgdm0sIFNsbwogewog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0UmVnID0gSklUOjphcmd1bWVudEdQUjE7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5w
dXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLQotICAgIGpp
dC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0UmVnLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKKyAg
ICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCisgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKIAotICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIHN0YXRpY19hc3NlcnQoSklUOjphcmd1bWVudEdQUjEgPT0gYnl0ZWNv
ZGVPZmZzZXRSZWcpOwotICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZf
NjQpCisgICAgLy8gT24gV2luZG93cywgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVz
IGFyZSByZXR1ZW5lZCB2aWEgYW4gaW1wbGljaXQgcG9pbnRlciBwYXNzZWQgYXMKKyAgICAvLyB0
aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlmdGVkIHRv
IHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihTbG93UGF0aFJldHVyblR5cGUpID09IDE2LCAiQXNzdW1lZCBieSBnZW5lcmF0ZWQgY2FsbCBz
aXRlIGJlbG93Iik7CisgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVBcmdHUFIgPSBHUFJJbmZvOjph
cmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBwY0FyZ0dQUiA9IEdQUkluZm86OmFy
Z3VtZW50R1BSMjsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIGNhbGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7Cisj
ZWxzZQorICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BSID0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjE7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoY2FsbEZyYW1lQXJnR1BSLCBw
Y0FyZ0dQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpKTsKKyNlbmRpZgorICAgIGppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBjYWxsRnJhbWVBcmdHUFIpOworICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBwY0Fy
Z0dQUik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBjQXJnR1BSLCBD
b2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgcGNBcmdHUFIpOwor
ICAgIGppdC5hZGRQdHIoYnl0ZWNvZGVPZmZzZXRHUFIsIHBjQXJnR1BSKTsKIAogICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2Vw
dGlvbkNoZWNrKHZtKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZSZWdpc3Rl
cnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJz
OjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOworI2lm
IE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7IC8vIHBjCisgICAgaml0LnBvcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOyAv
LyBjYWxsRnJhbWUKICNlbmRpZgotICAgIGppdC5yZXQoKTsKIAotICAgIGF1dG8gaGFuZGxlciA9
IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvcik7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWls
IGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4
Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihzbG93UGF0aEZ1bmN0aW9uKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVj
aywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsK
KyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJTbG93UGF0aENhbGwiKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAppbmRleCA4OTlhMjkwMGZlZGUz
N2RkMGVhNWU2ZjJiOTA2N2Q2NWIwMmU3MzYwLi4zNDBjOWVlY2E2ZTgyNjUyYTkzNmFlMDk2NGIw
NDQzZjYzNDEyYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQ
YXRoQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgK
QEAgLTM1LDUwICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUU2xvd1BhdGhD
YWxsIHsKIHB1YmxpYzoKLSAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQorICAgIEpJVFNs
b3dQYXRoQ2FsbChKSVQqIGppdCwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uKQog
ICAgICAgICA6IG1faml0KGppdCkKICAgICAgICAgLCBtX3Nsb3dQYXRoRnVuY3Rpb24oc2xvd1Bh
dGhGdW5jdGlvbikKLSAgICAgICAgLCBtX3BjKHBjKQogICAgIHsKICAgICAgICAgYXNzZXJ0SXND
RnVuY3Rpb25QdHIoc2xvd1BhdGhGdW5jdGlvbik7CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAgICAgdm9pZCBjYWxsKCk7CiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVUaHVuayhWTSYsIFNsb3dQYXRoRnVuY3Rp
b24pOwogCi0jZWxzZSAvLyBub3QgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLSAgICBKSVQ6
OkNhbGwgY2FsbCgpCi0gICAgewotICAgICAgICBtX2ppdC0+dXBkYXRlVG9wQ2FsbEZyYW1lKCk7
Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPmFkZFB0cihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92
ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIG1f
aml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQUjIpOwot
I2Vsc2UKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjph
cmd1bWVudEdQUjApOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9w
YyksIEpJVDo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgotICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9
IG1faml0LT5hcHBlbmRDYWxsKG1fc2xvd1BhdGhGdW5jdGlvbik7Ci0KLSNpZiBDUFUoWDg2XzY0
KSAmJiBPUyhXSU5ET1dTKQotICAgICAgICBtX2ppdC0+cG9wKEpJVDo6cmVnVDApOyAvLyB2UEMK
LSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QxKTsgLy8gY2FsbEZyYW1lIHJlZ2lzdGVyCi0g
ICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMCA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
Uik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoSklUOjpyZWdUMSA9PSBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUjIpOwotI2VuZGlmCi0KLSAgICAgICAgbV9qaXQtPmV4Y2VwdGlvbkNoZWNrKCk7Ci0g
ICAgICAgIHJldHVybiBjYWxsOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLQogcHJpdmF0ZToKICAgICBKSVQqIG1faml0OwogICAgIFNsb3dQYXRoRnVuY3Rpb24g
bV9zbG93UGF0aEZ1bmN0aW9uOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBtX3BjOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAppbmRleCBjNjU3MWE2Y2I1N2U4MjRkY2M5ZTFjYTIzNWU0ZGJkZWEzMDkzM2Iw
Li5mMTVjNzAzN2ZiMTAxMDczZTc2MzYxODczNTZiM2QzNTMxNzAzMjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00OSw5ICs0OSw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7Ci0KICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKLQogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsK
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwpAQCAtNTksOCArNTcsNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihW
TSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRp
b25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVs
cGVycyBqaXQ7CkBAIC03NywyMCArNzMsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmEKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJoYW5k
bGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KIAotI2VuZGlmCi0KIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0Fu
ZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigyICogc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsKLSNl
bGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGpp
dC5wb3BQYWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVy
czo6bGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wb3BQYWlyKENDYWxs
SGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6cmV0dXJuQWRkcmVz
c1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9y
bSIKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKyNpZiBDUFUoWDg2XzY0KSAvLyBP
biB0aGUgeDg2LCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSBsZWF2ZXMgdGhlIHJldHVybiBQQyBvbiB0
aGUgc3RhY2suIERyb3AgaXQuCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgWDg2UmVnaXN0ZXJzOjplc3ApOwogI2VuZGlmCiAK
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAoKTsKQEAgLTEw
MSwzMiArOTAsMjIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BU
aHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2UKICAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNrUHJlc2Vy
dmVzQW5kSGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgLy8gVGhpcyB0aHVuayBpcyB0YWlsIGNhbGxlZCBmcm9t
IG90aGVyIHRodW5rcywgYW5kIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBhbHdheXMgYWxyZWFkeSB0
YWdnZWQKIAorICAgIC8vIEV4Y2VwdGlvbiBmdXp6aW5nIGNhbiBjYWxsIGEgcnVudGltZSBmdW5j
dGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHJldHVybiBhZGRyZXNzIGhlcmUuCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSAgICAgICAg
Ly8gRXhjZXB0aW9uIGZ1enppbmcgY2FuIGNhbGwgYSBydW50aW1lIGZ1bmN0aW9uLiBTbywgd2Ug
bmVlZCB0byBwcmVzZXJ2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaGVyZS4KLSNpZiBDUFUoWDg2XzY0
KQotICAgICAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgICAgIGppdC5wdXNoUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKKyAgICAgICAgaml0LnVudGFn
UmV0dXJuQWRkcmVzcygpOworICAgICAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKICAg
ICB9CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaGFuZGxlRXhjZXB0aW9uID0gaml0LmVtaXRO
b25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlRXhjZXB0aW9uRnV6eigpKSkgewotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5w
b3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucG9w
UGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6Omxp
bmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSkpCisgICAgICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwog
ICAgIGppdC5yZXQoKTsKIAogICAgIGF1dG8gaGFuZGxlckdlbmVyYXRvciA9IE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSA/IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IgOiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3I7CkBAIC0xNDMsOCArMTIyLDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcihWTSYgdm0pCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWdUeXBlPgogaW5saW5lIHZv
aWQgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRl
ckdQUiwgVGFnVHlwZSB0YWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuaAppbmRleCBhOWZlZWVhOTI0YWUwMDc4ZDg0NTFlMTcyYzRjNDk0NWRmMWQ1ZWUx
Li4xMDU0OTEwNGVmNjIwZTc4MjlmMGI0YWJjYWJhZWRjNDk3MzVhMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTM4LDEzICszOCw4IEBAIGVu
dW0gY2xhc3MgQ2FsbE1vZGU7CiB0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjsKIGNsYXNzIFZNOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJik7Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZN
Jik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQ
cmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKIAogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhH
ZW5lcmF0b3IoVk0mKTsKQEAgLTgyLDkgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsK
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwotI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaAppbmRleCA2NjRiMGUyOWY2YmEzY2U0ODI2ZTUxMDlkNzNmODZjYzliYzZhZGZkLi41ZWM3
NDA5YmM5YWU4NmMzNDI4ZTYyZWMyMGE0NTBhZjJlNzhiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKQEAgLTgzOSwxNCArODM5LDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJT05f
VkFMSURBVElPTiAxCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQVShYODZfNjQpICYm
ICFPUyhXSU5ET1dTKSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB0aHVua3MgY2Fu
IHVzZSB1cCB0byA2IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtlIHVzZSBvZiBBUk02
NCBsaWtlIGZlYXR1cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQgdGhlbSBvbiBwbGF0
Zm9ybXMKLSAgIHRoYXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0ZXJzIHRvIHVzZS4K
LSovCi0jZGVmaW5lIEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRpZgotCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9XUykKICNkZWZpbmUg
RU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449400</attachid>
            <date>2022-01-18 10:00:58 -0800</date>
            <delta_ts>2022-01-31 10:53:50 -0800</delta_ts>
            <desc>fix PACs in thunks - v2</desc>
            <filename>bug-233822-20220118180056.patch</filename>
            <type>text/plain</type>
            <size>281289</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YWVmYmEzZGRmZjlhMjNiODI1MTViOGM2Mjc2NDkwYTk0ZDVkNTMxLi41ZDI5ODIzNzI4MDFmNjc0
MTVlZGQ1OWJjZmIxM2ZkOWUzMWE2MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMTggIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0xOCAgQWRyaWFuIFBlcmV6
IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1
aWxkIGZhaWxzIGR1ZSB0byBtaXNzaW5nIGhlYWRlciBpbiBXYXNtQ2FsbGVlR3JvdXAuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDM2MDkzOGNlMjA1M2UwZDExYjE3Njk4ODcwMzU1ZDA0NWQyYmMzNjMuLjk1NGJjYWFhOTlh
NGViYjlmZGM2ZjY5OWU5Y2FiZTBjOWFkNjdlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjIt
MDEtMTggIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9y
dCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisgICAg
ICAgIFJlbW92ZSBFWFRSQV9DVElfVEhVTktTIGRlZmluZSAobm93IGFsd2F5cyBvbiBvbiBhbGwg
cGxhdGZvcm1zKQorCiAyMDIyLTAxLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQgYSBVVUlEIGluc3RlYWQg
b2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiOTg3MTIxNzVjOWE3ZDll
NDQzN2ZmMzU3MjlhODRjNDFlZThjNjRmLi4yNTFiOWU0NTk5NmIzZjIxMDcyNzk1NzZhNTRlMTky
OGYxZjQyMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04NDMsNiAr
ODQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBqaXQvQXNzZW1ibHlIZWxwZXJzLmgKICAgICBqaXQvQXNzZW1ibHlIZWxwZXJzU3Bvb2xlcnMu
aAogICAgIGppdC9CYXNlbGluZUpJVENvZGUuaAorICAgIGppdC9CYXNlbGluZUpJVFJlZ2lzdGVy
cy5oCiAgICAgaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKICAgICBqaXQvQ0NhbGxIZWxwZXJz
LmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk2YmRmZTA3NTM4NDUyODg4ODIwY2NiNjQzOWZiMjcwM2VjNTZmZjAuLjBhNjEy
YjcwNmQyOWJlYmQ2YjE1Zjc2YTA0MjgwODkxMWE5ZDNhY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTk1LDYgKzExOTUsNyBAQAogCQk3MjEzMUJGQTI2NTg3RUYyMDA3MTE0
Q0YgLyogSklUUGxhblN0YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjEzMUJGNjI2NTg3RUYyMDA3MTE0Q0YgLyogSklUUGxhblN0YWdlLmggKi87
IH07CiAJCTcyMTMxQkZDMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTMxQkZCMjY1
ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMuaCAqLzsgfTsKIAkJNzIzOTk4Rjcy
NjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJh
c2VsaW5lSklUUGxhbi5oICovOyB9OworCQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
NkI5MUIwMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2QjkxQTgyNjU4MTY1MjAwOEU2
RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggKi87IH07CiAJCTcyNkI5MUIzMjY1ODE2NTMwMDhF
NkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxh
dGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MjZCOTFCNzI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxhbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2QjkxQUYyNjU4MTY1MzAwOEU2Rjgy
IC8qIEpJVFBsYW4uaCAqLzsgfTsKQEAgLTQyMjEsNiArNDIyMiw3IEBACiAJCTcyMTMxQkZCMjY1
ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSklUV29ya2xpc3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZWxpbmVKSVRQbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMzk5OEY2MjY1REJDREIwMDU3ODY3RiAvKiBCYXNl
bGluZUpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFz
ZWxpbmVKSVRQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0MDA5RjUy
NzhEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyNkI5MUE4MjY1ODE2NTIwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRo
cmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRXb3JrbGlzdFRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBQTI2NTgxNjUzMDA4RTZG
ODIgLyogSklUUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQUIyNjU4MTY1
MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRDb21waWxhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY0NzIsNiArNjQ3NCw3IEBACiAJCQkJNTJERDAwMDYyNkUwMzlCMzAwNTRFNDA4IC8q
IEJhc2VsaW5lSklUQ29kZS5oICovLAogCQkJCTcyMzk5OEY2MjY1REJDREIwMDU3ODY3RiAvKiBC
YXNlbGluZUpJVFBsYW4uY3BwICovLAogCQkJCTcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAvKiBC
YXNlbGluZUpJVFBsYW4uaCAqLywKKwkJCQk3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRSZWdpc3RlcnMuaCAqLywKIAkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRFNjYgLyog
QmluYXJ5U3dpdGNoLmNwcCAqLywKIAkJCQkwRjY0QjI3MDFBNzg0QkFGMDA2RTRFNjYgLyogQmlu
YXJ5U3dpdGNoLmggKi8sCiAJCQkJNjVCODM5MkQxQkFDQTlEMzAwNDRFODI0IC8qIENhY2hlZFJl
Y292ZXJ5LmNwcCAqLywKQEAgLTk4MDUsNiArOTgwOCw3IEBACiAJCQkJMEYyQzYzQjIxRTYwQUU0
NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTUyREQwMDA4MjZFMDM5
QjkwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMzk5
OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCBpbiBIZWFkZXJzICovLAor
CQkJCTcyNDAwMEY3MjgyREJDREIxMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTI2NzhGOEYxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tM
b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8q
IEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzVFODlG
RDI1QzUwRjg3MDA3MUVFMUUgLyogQmlnSW50NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXgg
YmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4OWNlMzEzMTVhODczNWJlNS4uZjFmZjYzOTRjOWY0ZWVk
NTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNjc0LDEyICs2NzQsMjIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2
b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjMyKGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBzdWIzMihpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3Vi
UHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAg
dm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKQEAgLTEwMDcsMTIgKzEwMTcs
MjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViNjQoc3JjLCBkZXN0KTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0
KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7Cisg
ICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChpbW0pLCBkZXN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKaW5kZXggY2QxMjlmNmQ5YTg3ZTA2OWFlY2ZhNDI0YWZlNzBmMGYxMTVjZDE0NS4uYjU5MzA3
MzNkYzAzMzhlNmVlMzdmYzM0YjMyOTc2MTFhOTQxZDJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtR1BScyA9
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfR1BfUkVHSVNURVIoRFVNTVlf
UkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG51bUZQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0ZQX1JFR0lT
VEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAjdW5kZWYgRFVNTVlfUkVHSVNU
RVJfVkFMVUUKLSAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlcigpIHsgcmV0dXJuIGFkZHJl
c3NUZW1wUmVnaXN0ZXI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgc2NyYXRj
aFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQogCiAgICAgTWFjcm9B
c3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBhdGNoYWJsZShmYWxzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNkNjMxODExOTcxMDAxZTIyLi5i
MmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBA
IC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAg
dm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAgICAgIHN1YjY0KGltbSwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tNjQgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCAwMGE1NTQ5N2ZkNjNh
ZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0MGQyLi43N2U0YTZlOWVmM2Y4YWM3MmE1ZGQwYzc4Mjhh
MGJkY2VjMzVkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlRGF0YS5o
IgogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCkBAIC00
NywxNCArNDgsNiBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7CiBzdHJ1Y3QgQ2FsbEZyYW1l
U2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlua0luZm87CiAKLSNpZiBFTkFCTEUo
SklUKQotbmFtZXNwYWNlIEJhc2VsaW5lQ2FsbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
Y2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLX0KLSNlbmRpZgotCiBjbGFzcyBDYWxsTGlua0lu
Zm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogcHVibGlj
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC00NjIsOSArNDU1
LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpj
YWxsZWVHUFI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIo
KSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUjsgfQotICAg
IHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgUkVMRUFT
RV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExp
bmtJbmZvR1BSKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUigpIHsg
cmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVHUFI7IH0KKyAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSOyB9CisgICAgdm9pZCBzZXRDYWxsTGlu
a0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxFQVNFX0FTU0VSVChjYWxsTGlu
a0luZm9HUFIgPT0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7
IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggNGI5YTQ5NTlmZDhmZjM1MWQyOWRhZmNhMDk3
MjQ1M2I3YmMxNjc2Ni4uOTZiZTM4MzdhMWFmOWU3MjVkMjUyNGY0ZWZlNjhkNjFhYWNjMjEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyLCBvcmlnaW5hbEhhbmRsZXIu
bmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVsc2UgewotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAganVtcFRvRXhjZXB0
aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSogdm0gPSAmbV92bTsKICAgICAg
ICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9FeGNlcHRpb25I
YW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICAgICAgfSk7Ci0j
ZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJm1fdm0pKTsK
LSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3ZtKTsKLSAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsID0gaml0LT5jYWxsKE9wZXJh
dGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2soCi0gICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxp
bmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3ZtKTsKLSNlbmRpZgogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKaW5kZXggODA5ODQ2ZDNkZmQ4YWQxOGE0MThlOWRjNmU4NzE4ODUwYmE1NDFl
Ni4uNTRkY2Q2MWU0NzUxYTIwNzU1YjJhNDgzNTM2M2I3OTIwM2Y0ZGViNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBA
IC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNpbmNsdWRlICJKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAi
UmVwYXRjaC5oIgogCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkK
ICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OkdldEJ5SWQgJiYgdW5saW5r
ZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkgewogICAgICAgICAvLyBGb3Ig
aXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRvbnRDbG9iYmVySlNSIiByZWdp
c3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSKTsKICAg
ICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKQEAgLTUyNCw3OCArNTI0LDc4IEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHVi
SW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVy
ID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlW
YWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0
aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVn
aXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFz
ZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZh
bHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigp
OworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpi
YXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRK
U1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpEZWxldGVCeUlEOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwotICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEludmFsaWRH
UFJSZWc7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFz
dFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VU
YWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7CisgICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUi50
YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFn
R1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1f
c3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIo
KTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAg
ICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJv
cGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBoYXNDb25zdGFu
dElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZh
bHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9m
UmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3RvdHlw
ZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJvdG9KU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0
YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6
OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2
YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi50YWdHUFIoKTsKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUi50YWdHUFIo
KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZTogCiAgICAgY2FzZSBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQ6IAogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBm
YWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUluQnlW
YWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIg
PSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJhc2VK
U1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5
VmFsOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAg
ICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpT
Ui50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3Rl
cnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnRhZ0dQ
UigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7
CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIg
PSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlk
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsK
LSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRh
Z0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpy
ZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6SW5CeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6CkBAIC02MDMs
NjUgKzYwMyw2NSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlu
a2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6R2V0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAg
ICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVl
R1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52YWxp
ZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1IudGFnR1BS
KCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAg
IGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MudGhpc0dQUiA9IEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
V2l0aFRoaXM6OnRoaXNKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFs
dWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnRh
Z0dQUigpOwotICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1Jl
Z2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAg
IHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVz
dWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZDoKICAgICAgICAgaGFzQ29uc3Rh
bnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJl
ZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJz
Ojp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2
YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi5wYXlsb2Fk
R1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
ICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVl
VGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAg
ICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNS
LnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0UHJpdmF0
ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7
Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJh
c2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICAgICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6
UHV0QnlWYWwpCi0gICAgICAgICAgICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgICAgICAgICBtX2FycmF5UHJvZmlsZUdQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5l
UHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAg
ICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNS
LnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSLnRhZ0dQUigpOwogI2Vu
ZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5k
OgogICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgICAgIGhhc0Nv
bnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgICAgICB2YWx1ZUdQUiA9IEludmFsaWRHUFJS
ZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAg
ICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MuYnJhbmRHUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpGYXN0UGF0aDo6
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdmFsdWVUYWdHUFIg
PSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVQcml2YXRlQnJh
bmRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYuYnJhbmRUYWdHUFIgPSBC
YXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IudGFnR1BSKCk7CisgICAgICAg
IGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNS
LnRhZ0dQUigpOworICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApp
bmRleCBlYjIwY2U2NDVhZjBiYjU4NDU1ZjY4MDNlOGQ0NzI0YTc0YTcxZjk0Li40OWZjYWI5NDEz
OTIwMDY2ODBjNWI0YmYxNzBlOTVkYTM5ZWUzMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsxMzYsNiBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNFRChjb21waWxlZFNwZWN1bGF0
aXZlLCBjb21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7
Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhp
cyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBW
TSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVz
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAg
ICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJn
dW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwot
Ci0gICAgICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik7Ci0K
LSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBk
YXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0yNzMsMTIgKzIzOSwxMCBAQCB2
b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigpKTsKICAgICB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5
KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgQ29kZUxvY2F0
aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRp
b25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0
Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0
VGh1bmsgPSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7
CiAgICAgYXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4ob3Ny
RXhpdFRodW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5h
cHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25I
YW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1Ig
ZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0LDcgKzQ0Nyw2IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xv
d1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygp
LCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAot
ICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAg
IAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDg5NDdjYmU5YTNj
NTIxNzZhMmQ0NTM0Nzg4Mjk2MmU5NWMxZTM4ZjkuLmY3NmRhMjIwYTM5ODc2Mzc5NzhmNmJkYjFm
ZTIwZjhhOTU3NWY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKQEAgLTMyMyw3ICszMjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGluayhMaW5rQnVm
ZmVyJik7CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVXaXRoT1NSKGNvbnN0IE9TUkV4
aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBjb21waWxlRXhjZXB0aW9uSGFu
ZGxlcnMoKTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAgIHZvaWQgZGlzYXNzZW1ibGUo
TGlua0J1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApp
bmRleCAzYjRjYTFkMTU3NWQ1MGJiZmUxYzRiN2FiODJmMTllYWM5MDYyYjdmLi5hOTNhNmJhNDE2
MTVlMDRhODM3YzliOWMxMzQ3OWU4NGY1MTE3OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBAIHZvaWQgY29tcGlsZShTdGF0
ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAKICAgICAvLyBF
bWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUuZXhjZXB0aW9uSGFuZGxlciA9
IGppdC5sYWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIENDYWxsSGVs
cGVyczo6SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBWTSogdm1QdHIgPSAmdm07CiAg
ICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJl
bCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0gICAgaml0LmNvcHlDYWxsZWVT
YXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwotICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0
Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5hZGRMaW5rVGFzaygKLSAgICAg
ICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFr
ZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThhNDA5YTJhNWI1MzVkMGQ5Li4y
OGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBAIHZvaWQgbGluayhTdGF0ZSYg
c3RhdGUpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNh
bGxBcml0eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25IYW5kbGVy
ID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4sIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7Ci0jZWxzZQotICAgICAgICAg
ICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJU
aGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJG
cmFtZSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBqaXQuanVtcFRv
RXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgICAgICAgICBpZiAo
QVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZtLmFkZHJlc3NP
ZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEsMTEgKzEwMSw3IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaykpOwotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhqdW1w
VG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9v
a3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSk7
Ci0jZW5kaWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1
bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0
b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBz
LCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDIzZTA4NzE4ZGJmODIwNDIzNWUzOTlh
YTY1Y2IwZDk5MDgyOTcxZTAuLjQ3YWIzZTgxNTJhNDM4Mjg5MjA3YmM0ZTlkODE4MjhkZmMzYTM4
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAt
MTkxOSw0OSArMTkxOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250
ZXh0SW5zdGFuY2VOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKIAotICAgIC8v
IENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJlZ3MgYW5kIEpTVmFsdWVSZWdzIGRv
IG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKLSAgICAvLyBhc3NlcnRpb25zIHRvIGVu
c3VyZSB0aGF0IHJlZ2lzdGVyIGFsaWFzZXMgbGl2ZSBhdCB0aGUgc2FtZSBwb2ludCBkbyBub3Qg
bWFwIHRvIHRoZSBzYW1lCi0gICAgLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVy
bGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQot
Ci1wcml2YXRlOgotICAgIC8vIEJhc2UgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90KSB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBHUFJSZWcgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVp
bnQ2NF90IHVzZWQsIFJlZ2lzdGVySUQgZ3ByLCBBcmdzLi4uIGFyZ3MpCi0gICAgewotICAgICAg
ICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soZ3ByKTsKLSAgICAgICAgaWYg
KHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4g
bm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7Ci0gICAgfQotCi0gICAgLy8gSlNW
YWx1ZVJlZ3MgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIEpTVmFsdWVSZWdz
IGpzciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3Zl
cmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BSKCkpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnRhZ0dQUigpKTsKLSNl
bmRpZgotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQgfCBtYXNrLCBhcmdzLi4uKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vT3ZlcmxhcEltcGxSZWdNYXNr
KFJlZ2lzdGVySUQgZ3ByKQotICAgIHsKLSAgICAgICAgaWYgKGdwciA9PSBJbnZhbGlkR1BSUmVn
KQotICAgICAgICAgICAgcmV0dXJuIDBVTEw7Ci0gICAgICAgIHVuc2lnbmVkIGJpdCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihncHIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXQgPCBzaXpl
b2YodWludDY0X3QpICogQ0hBUl9CSVQpOwotICAgICAgICByZXR1cm4gMVVMTCA8PCBiaXQ7Ci0g
ICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVzQnVmZmVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjYzQ2OTg1NzA5MzZjNTI3NTI3MDJmNGQzZmI5ZTllNWUzNTA0YjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgK
QEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRl
ICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJzIHsKKworbmFtZXNwYWNlIENhbGwg
eworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgeyBKU1JJbmZvOjpqc1JlZ1Qx
MCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07
Cit9CisKK25hbWVzcGFjZSBDaGVja1RyYXBzIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OworfQorCituYW1lc3BhY2UgRW50
ZXIgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgeyBHUFJJbmZvOjpy
ZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSIHsgR1BSSW5mbzo6
cmVnVDEgfTsKK30KKworbmFtZXNwYWNlIEluc3RhbmNlb2YgeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRH
UFIyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86
OmFyZ3VtZW50R1BSMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgeyBHUFJJ
bmZvOjpub25BcmdHUFIwIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQ
UkluZm86Om5vbkFyZ0dQUjEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsKKyNpZiBDUFUoTUlQUykKKyAgICAgICAgR1BS
SW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIKKyNlbHNlCisgICAgICAg
IEpTUkluZm86OmpzUmVnVDMyCisjZW5kaWYKKyAgICB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm90b0pTUiB7IEpTUkluZm86OmpzUmVnVDU0IH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIpKTsKK30KKworbmFtZXNwYWNlIEpGYWxzZSB7CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKK30KKworbmFtZXNwYWNlIEpU
cnVlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJbmZvOjpqc1Jl
Z1QzMiB9OworfQorCituYW1lc3BhY2UgVGhyb3cgeworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCkgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVKU1IgeyBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpIH07CisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcCh0aHJvd25WYWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWlyZWQg
Zm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xv
YmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93
IG9wZXJhdGlvbiIpOworfQorCituYW1lc3BhY2UgUmVzb2x2ZVNjb3BlIHsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIG1ldGFkYXRhR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjb3BlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQorCituYW1lc3BhY2UgR2V0RnJvbVNj
b3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQorCitu
YW1lc3BhY2UgUHV0VG9TY29wZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OworfQorCituYW1lc3BhY2UgR2V0QnlJZCB7
CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNS
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUiB9OworCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNw
YWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJK
U1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwg
ZG9udENsb2JiZXJKU1IpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8v
IFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJl
Z1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07Cisj
ZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0
byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9y
IGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBHZXRCeUlk
V2l0aFRoaXMgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBw
YXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1
cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsK
KyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNl
IEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHRoaXNK
U1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAg
ICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xv
d1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUklu
Zm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
eyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNl
SlNSLCB0aGlzSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZv
R1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIp
OworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNl
ZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9
OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHBy
b3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBw
YXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwgc2Ny
YXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBw
YXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BS
IHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBj
b25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBieXRl
Y29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNh
bGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VK
U1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BS
KSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCisj
aWYgVVNFKEpTVkFMVUU2NCkKK25hbWVzcGFjZSBFbnVtZXJhdG9yR2V0QnlWYWwgeworICAgIHN0
YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJl
Z1QxIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJ
bmZvOjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICAvLyBXZSByZWx5IG9uIHRoaXMgd2hlbiBsaW5raW5nIGEg
Q29kZUJsb2NrIGFuZCBpbml0aWFsaXppbmcgcmVnaXN0ZXJzIGZvciBhIEdldEJ5VmFsIFN0dWJJ
bmZvLgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBHZXRCeVZhbDo6YmFzZUpTUik7Cisg
ICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRCeVZhbDo6cHJvcGVydHlKU1IpOwor
ICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEdldEJ5VmFsOjpyZXN1bHRKU1IpOworICAg
IHN0YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gR2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUik7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSB7IEdQUkluZm86
OnJlZ1QzIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgeyBHUFJJbmZv
OjpyZWdUNCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gzIHsgR1BSSW5m
bzo6cmVnVDUgfTsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgUHV0QnlJZCB7CisgICAgLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
KyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBv
bmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qy
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJbmZvOjpyZWdU
NCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJldXNpbmcgcmVnVDEgZm9yIGJl
dHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgorI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiks
ICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGJhc2VKU1IucGF5bG9hZEdQUigpLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIs
IHNjcmF0Y2gyR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBT
bG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJl
Z1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6
cmVnVDQgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNS
LCB2YWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7
CisgICAgfQorfQorCituYW1lc3BhY2UgUHV0QnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2Vk
IG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQUkluZm86OnJlZ1Q1IH07Cisj
ZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBG
YXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9w
ZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZv
ciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUNQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGEg
Yml0IHNob3J0IG9uIHJlZ2lzdGVycyBvbiBBUk1fVEhVTUIyLCBidXQgd2UgY2FuIGp1c3QgYWJv
dXQgZ2V0IGF3YXkgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJBUk12
Nzo6c2NyYXRjaFJlZ2lzdGVyKCkKKyNlbHNlIC8vIE90aGVyIEpTVkFMVUUzMl82NAorICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1Q4CisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGdsb2JhbE9iamVjdEdQUiB9OworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVl
SlNSLCBwcm9maWxlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJvZmlsZUdQUiwgZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlv
biIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEluQnlJZCB7CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHZXRCeUlkOjpiYXNlSlNSIH07CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUiB9
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdldEJ5SWQ6OkZhc3RQYXRoOjpz
Y3JhdGNoR1BSIH07Cit9CisKK25hbWVzcGFjZSBJbkJ5VmFsIHsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1Qy
IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNl
bmRpZgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBHZXRCeVZhbDo6YmFzZUpTUik7Cisg
ICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRCeVZhbDo6cHJvcGVydHlKU1IpOwor
fQorCituYW1lc3BhY2UgRGVsQnlJZCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBG
YXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpT
UiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0
YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFt
ZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2Rl
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5
R1BSLCBlY21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxs
IHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgRGVsQnlWYWwgewor
ICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUklu
Zm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworI2VuZGlmCisKKyAg
ICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggewor
ICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3Bl
cnR5SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7
CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNl
IFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0Uo
SlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7
IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlY21h
TW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHVi
SW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7
CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBn
bG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3Ig
Y2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIFByaXZhdGVC
cmFuZCB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHZXRCeVZhbDo6YmFz
ZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR2V0QnlWYWw6OnByb3BlcnR5SlNSIH07IC8vIFJl
cXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKworICAgIG5hbWVzcGFjZSBGYXN0UGF0
aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRp
ZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgc3R1
YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIG5hbWVzcGFj
ZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
eyBHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSIH07IC8vIFJlcXVpcmVkIGJ5
IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFIgfTsgLy8gUmVxdWlyZWQgYnkg
c2hhcmVkIHNsb3cgcGF0aCB0aHVuaworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChi
YXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSKSwgIlJlcXVp
cmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
QmFzZWxpbmVKSVRSZWdpc3RlcnMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmlu
ZGV4IDA0ZThhZmRlNDFjMjY4YWQ5Y2YyZWIxYzVkM2NmMDQwOTgyODkzNWUuLjcxNmNkM2M0YjZl
ZWFkNTYwY2IwNjg5MDNkNDhjMjAxMmU4ZWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQog
CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTk0LDYgKzk1LDQzIEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0SklUQ29kZU92ZXIo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlCiAgICAgRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgZGVzY3JpcHRpb24pOwogfQogCitzdGF0aWNf
YXNzZXJ0KCEoKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsICsgMiAqIHNpemVvZihDUFVS
ZWdpc3RlcikpICUgMTYpLCAiU3RhY2sgbXVzdCBiZSBhbGlnbmVkIGFmdGVyIENUSSB0aHVuayBl
bnRyeSIpOworCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rUHJvbG9ndWUoKQorewor
ICAgIC8vIFN0YXNoIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisgICAgdGFnUmV0
dXJuQWRkcmVzcygpOworI2lmIENQVShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVi
cCk7IC8vIHJldHVybiBhZGRyZXNzIHB1c2hlZCBieSB0aGUgY2FsbCBpbnN0cnVjdGlvbgorI2Vs
aWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwdXNoUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHB1c2hQYWly
KGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMg
ICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlmCisgICAgLy8gTWFr
ZSBlbm91Z2ggc3BhY2Ugb24gdGhlIHN0YWNrIHRvIHBhc3MgYXJndW1lbnRzIGluIGEgY2FsbAor
ICAgIGlmIGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAg
IHN1YlB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7Cit9CisKK3ZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtF
cGlsb2d1ZSgpCit7CisgICAgLy8gUmVzZXQgc3RhY2sKKyAgICBpZiBjb25zdGV4cHIgKG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
IC8vIFJlc3RvcmUgZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2
XzY0KQorICAgIHBvcChYODZSZWdpc3RlcnM6OmVicCk7IC8vIFJldHVybiBhZGRyZXNzIGxlZnQg
b24gc3RhY2sKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcG9wUGFp
cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQor
ICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
CisjZWxzZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRjYzg5OWU3NTYzMzlh
ODExNjM0ZTIzYzIxN2JkYTFjY2Y2NC4uZTdiOGRkMWI1Y2VmNzcyZGIyNjE5NWVmZjQ1MGI5MmNk
N2RmNWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC04
NTMsMTQ1ICs4NTMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92
ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRM
YW1iZGE8dm9pZChDQ2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsKIAotcHJpdmF0ZToKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZBcmcoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOwotICAgIH0KLQotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFy
Z051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiBy
ZXN0KQotICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlw
ZSwgQXJnTnVtIC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJn
ZSBhcmd1bWVudHMiKTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25z
dGV4cHIKLSAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwg
SW5kZXggLSAxPihyZXN0Li4uKTsKLSAgICAgICAgfQotICAgIH0KLSNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFy
Z051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNl
Y29uZCwgR1BSUmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCi0gICAgewotICAgICAgICBjb25zdGV4
cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8
PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAg
ICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXpl
T2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBH
UFIKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdh
cm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGly
ZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJ
bmZvOjphcmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBz
dGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQotICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2
ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNr
LCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJl
Z3MgeyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAg
ICAgICAgICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAg
ICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAx
PihzZWNvbmQsIHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3Qg
PT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQ
UjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4g
cmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVy
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJ
bmRleCAtIDE+KGZpcnN0LCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJn
dW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIK
LSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIElu
ZGV4IC0gMT4odGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29u
ZCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNp
emVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUg
bGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3Nl
Y29uZCcgYXJlIG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0
aGUgc3RhY2sgYW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29u
c3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShm
aXJzdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZVJlZ3MgeyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgot
ICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5k
ZXggLSAxPihzZWNvbmQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4g
QXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZp
cnN0KQotICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0g
c2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRs
ZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5l
dmVyIGFuIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sg
YW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FH
RSgiT3V0IG9mIHJlZ2lzdGVycyIpOwotICAgIH0KLSNlbmRpZgotCi1wdWJsaWM6Ci0gICAgLy8g
U2VlIHByZWZlcnJlZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9u
LiBUaGlzIHZlcnNpb24gcmV0dXJucyBhIEpTVmFsdWVSZWdzCi0gICAgLy8gaW5zdGVhZCBvZiBh
IEdQUiwgd2hpY2ggb24gSlNWQUxVRTY0IGFyZSBlcXVpdmFsZW50LCBidXQgb24gSlNWQUxVRTMy
XzY0IGEgSlNWYWx1ZVJlZ3MgaXMKLSAgICAvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdp
ZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNz
aW5nIGEKLSAgICAvLyBKU1ZhbHVlL0VuY29kZWRKU1ZhbHVlIGJlIGNvbXBhdGlibGUgd2l0aCBi
b3RoIEpTVkFMVUU2NCBhbiBKU1ZBTFVFMzJfNjQgcGxhdGZvcm1zLCBhbmQgdXNlCi0gICAgLy8g
cHJlZmVycmVkQXJndW1lbnRHUFIgd2hlbiBwYXNzaW5nIGhvc3QgcG9pbnRlcnMuCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+Ojphcml0eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgotICAgIHByZWZlcnJlZEFyZ3VtZW50
SlNSKCkKLSAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSNpZiAhT1MoV0lORE9XUykKLSAgICAg
ICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFy
Z3VtZW50R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKLSNlbHNlCi0gICAgICAgIHJldHVy
biBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
LAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIw
LCAgIEdQUkluZm86Om5vbkFyZ0dQUjEpOwotI2VuZGlmCi0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0
KQotI2lmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNh
biB1c2UKLSAgICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCi0gICAg
ICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpy
ZWdUNywgICAgICAgIEdQUkluZm86OnJlZ1Q2LAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQs
ICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVyczo6bHIpOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4o
Ci0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BS
MSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRH
UFIzLCBHUFJJbmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1QzLAotICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJl
Z1Q2KTsKLSNlbmRpZgotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gQ29tcHV0ZXMgKHN0YXRpY2Fs
bHksIGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBh
cmd1bWVudCBzaG91bGQgYmUKLSAgICAvLyBsb2FkZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxs
LiBUaGlzIHlpZWxkcyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhl
Ci0gICAgLy8gaW5pdGlhbCBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUsIHRoZW4gc3VpdGFibGUg
dGVtcG9yYXJ5IHJlZ2lzdGVycyBmb3IgdGhlIHJlbWFpbmluZwotICAgIC8vIGFyZ3VtZW50cy4g
VGhlIGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWlu
aW1hbCBhbW91bnQgb2Ygd29yayB3aGVuCi0gICAgLy8gdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHRv
IGhvbGQgdGhlIGFyZ3VtZW50cywgc28gaWYgeW91IGFyZSBsb2FkaW5nIG1vc3QgYXJndW1lbnRz
IGZyb20gbWVtb3J5Ci0gICAgLy8gYW55d2F5LCB1c2luZyB0aGVzZSByZWdpc3RlcnMgeWllbGRz
IHRoZSBzbWFsbGVzdCBjb2RlIHJlcXVpcmVkIGZvciBhIGNhbGwuCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0
eSA+IEFyZ051bSksIEdQUlJlZz4KLSAgICBwcmVmZXJyZWRBcmd1bWVudEdQUigpCi0gICAgewot
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9w
ZXJhdGlvblR5cGUsIEFyZ051bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9lcyBub3QgZml0IGluIEdQ
UiIpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRp
b25UeXBlLCBBcmdOdW0+KCkucGF5bG9hZEdQUigpOwotICAgIH0KKyAgICB2b2lkIGVtaXRDVElU
aHVua1Byb2xvZ3VlKCk7CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2Fs
bEZyYW1lU2h1ZmZsZURhdGEuY3BwCmluZGV4IDgxODBkNmFiYTU3NDA0MDFhMmZjYWIyZDVhMWZk
ZDUzYzlhMjA2YTMuLjFjNzRmMWY5ODJmYzUwOTk2ZDhlMWZlZGIwMWZlM2FiYmQ3YWQ4NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFz
ZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgpAQCAt
OTUsOSArOTYsOSBAQCBDYWxsRnJhbWVTaHVmZmxlRGF0YSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6
Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoY29ucwogICAgICAgICAgICAgICAgIERh
dGFGb3JtYXRKUyk7CiAgICAgfQogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgc2h1ZmZsZURhdGEu
Y2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxs
ZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOworICAgIHNodWZmbGVEYXRhLmNhbGxl
ZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
ZWVKU1IucGF5bG9hZEdQUigpLCBEYXRhRm9ybWF0SlMpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBhaXIoQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFs
dWVSZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1Iu
dGFnR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQ
UigpKTsKICNlbmRpZgogICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycygm
UmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkp
OwogICAgIHNodWZmbGVEYXRhLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNjMmNjYjkyMjYuLjgy
YWY3MTY5MzA5ZDdjOTAwYWM4ZjBlNTVkNmI1NzdhYTYxMmI2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvblRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTc2LDYgKzk3OCwyMTEgQEAgaW5saW5lIE5vUmVz
dWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRUYWcpIHsgcmV0dXJuIE5vUmVzdWx0OyB9CiAv
LyBXZSB1c2UgdGhpcyBoYWNrIHRvIGdldCB0aGUgR1BSSW5mbyBmcm9tIHRoZSBHUFJSZWcgdHlw
ZSBpbiB0ZW1wbGF0ZXMgYmVjYXVzZSBvdXIgY29kZSBpcyBiYWQgYW5kIHdlIHNob3VsZCBmZWVs
IGJhZC4uCiBjb25zdGV4cHIgR1BSSW5mbyB0b0luZm9Gcm9tUmVnKEdQUlJlZykgeyByZXR1cm4g
R1BSSW5mbygpOyB9CiAKK2NsYXNzIE5vT3ZlcmxhcEltcGwgeworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soR1BSUmVnIGdwcikKKyAgICB7CisgICAg
ICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHJldHVybiAwVUxMOwor
ICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3ByKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgY291bnRPZkJpdHM8dWludDY0X3Q+KTsKKyAgICAgICAg
cmV0dXJuIDFVTEwgPDwgYml0OworICAgIH0KKworICAgIC8vIEJhc2UgY2FzZQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3Zlcmxh
cEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8vIEdQUlJlZyBjYXNlCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
bm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBHUFJSZWcgZ3ByLCBBcmdzLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soZ3ByKTsK
KyAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7CisgICAgfQor
CisgICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwg
SlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBt
YXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgbWFzayB8PSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFn
R1BSKCkpOworI2VuZGlmCisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFy
Z3MuLi4pOworICAgIH0KKworcHVibGljOgorICAgIC8vIEVudHJ5IHBvaW50CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVudHJ5KEFy
Z3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQorfTsKKwor
Ly8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3Mg
ZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlzIGluIHN0YXRpYworLy8gYXNzZXJ0aW9ucyB0byBlbnN1
cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1h
cCB0byB0aGUgc2FtZQorLy8gYXJjaGl0ZWN0dXJhbCByZWdpc3Rlci4KK3RlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgorY29uc3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyBy
ZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50cnkoYXJncy4uLik7IH0KKworY2xhc3MgUHJlZmVycmVk
QXJndW1lbnRJbXBsIHsKKyAgICBwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVu
YWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0p
LCBzaXplX3Q+IHNpemVPZkFyZygpCisgICAgeworICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVu
YW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8
QXJnTnVtPik7CisgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFy
Z051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdz
IHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBBcmdzLi4uIHJlc3QpCisgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4
LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBp
ZiBjb25zdGV4cHIgKCFJbmRleCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZp
cnN0IH07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsg
Ly8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHJlc3QuLi4pOworICAg
ICAgICB9CisgICAgfQorI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFy
Z051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdz
IHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3Mu
Li4gcmVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFy
ZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBo
YW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7
CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAg
ICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgorICAgICAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisg
ICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcg
ZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5
bG9hZE9ubHkoZmlyc3QpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZv
Ojphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGly
ZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFy
Z3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBu
dW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1
bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihz
aXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmds
ZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ug
d2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8
T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4p
OworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEg
JiYgc2Vjb25kID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBp
biBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAg
YXJndW1lbnRHUFIxLCBidXQgcmV1c2UgaXQgbGF0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4g
cGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4p
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRo
ZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0
aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBw
aWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051
bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBp
Y2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJSZWcgc2Vjb25kKQorICAgIHsKKyAgICAgICAgY29uc3Rl
eHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFy
Z051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcg
PD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAg
ICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQg
cmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAg
aWYgY29uc3RleHByICghSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9m
Q3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7
IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50
QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhl
cndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBp
Y2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHNlY29uZCk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9X
SVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2ln
bmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QpCisgICAgeworICAgICAgICBjb25z
dGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFy
ZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAg
ICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIs
IG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3Rl
eHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJl
Z3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Cisg
ICAgfQorI2VuZGlmCisKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVf
aWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNW
YWx1ZVJlZ3M+CisgICAgcHJlZmVycmVkQXJndW1lbnRKU1IoKQorICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorI2lmICFPUyhXSU5ET1dTKQorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRp
b25UeXBlLCBBcmdOdW0+KAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1
bWVudEdQUjUpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjMsIEdQUkluZm86Om5vbkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7
CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisjaWYgQ1BVKEFSTV9USFVNQjIpCisg
ICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lzdGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9u
dG8gdGhlIHN0YWNrIGZvciBjYWxscywgc28gd2UgY2FuIHVzZQorICAgICAgICAvLyB0aGUgbGlu
ayByZWdpc3RlciBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0
aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVn
VDYsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAg
ICAgICAgQVJNUmVnaXN0ZXJzOjpscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIs
CisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAg
ICAgR1BSSW5mbzo6cmVnVDMsCisgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQ
UkluZm86OnJlZ1Q1LCAgICAgICAgR1BSSW5mbzo6cmVnVDYpOworI2VuZGlmCisjZW5kaWYKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJn
TnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgorICAgIHByZWZlcnJl
ZEFyZ3VtZW50R1BSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1
bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BSIik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHByZWZl
cnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7Cisg
ICAgfQorfTsKKworLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0IGNvbXBpbGF0aW9uIHRpbWUp
LCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVudCBzaG91bGQgYmUKKy8vIGxv
YWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9uIGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lm
aWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZvciB0aGUKKy8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFw
cHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1h
aW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhlIGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdp
bGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBhbW91bnQgb2Ygd29yayB3aGVuCisvLyB1c2luZyB0
aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRp
bmcgbW9zdCBhcmd1bWVudHMgZnJvbSBtZW1vcnkKKy8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVn
aXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgordGVt
cGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhw
ciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PiBBcmdOdW0pLCBHUFJSZWc+CitwcmVmZXJyZWRBcmd1bWVudEdQUigpCit7CisgICAgcmV0dXJu
IFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJndW1lbnRHUFI8T3BlcmF0aW9uVHlw
ZSwgQXJnTnVtPigpOworfQorCisvLyBTZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBw
dXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24uIFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJl
Z3MKKy8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVu
dCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCisvLyByZXF1aXJlZCB0byBo
b2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRp
Y3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8vIEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUgdG8gYmUgY29t
cGF0aWJsZSB3aXRoIGJvdGggSlNWQUxVRTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFu
ZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJz
LgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2Nv
bnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KK3ByZWZlcnJlZEFyZ3VtZW50SlNSKCkKK3sK
KyAgICByZXR1cm4gUHJlZmVycmVkQXJndW1lbnRJbXBsOjpwcmVmZXJyZWRBcmd1bWVudEpTUjxP
cGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVS
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBj
NjRkZGVmMjNkNGIyZDYyNGZiNzM0NTlmMDU0N2FmNTc4ODk0NjlmLi41MTViNzk2YjhhYjM4OTdm
ZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0xNjgsNyArMTY4LDcgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogI2RlZmluZSBERUZJTkVfU0xP
V19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAogICAgICAgICBpZiAobV9ieXRl
Y29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNvZGVJbmRleCkgeyBcCi0gICAgICAgICAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
XyMjbmFtZSk7IFwKKyAgICAgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgc2xvd19wYXRoXyMjbmFtZSk7IFwKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
IFwKICAgICAgICAgfSBcCiAgICAgICAgIE5FWFRfT1BDT0RFX0lOX01BSU4ob3BfIyNuYW1lKTsg
XApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgdm9pZCBKSVQ6OnJlc2V0U1AoKQogCiAjZGVmaW5lIERF
RklORV9TTE9XQ0FTRV9TTE9XX09QKG5hbWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCi0g
ICAgICAgIGVtaXRTbG93Q2FzZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBzbG93X3Bh
dGhfIyNuYW1lKTsgXAorICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGl0ZXIsIHNsb3dfcGF0aF8j
I25hbWUpOyBcCiAgICAgICAgIGJyZWFrOyBcCiAgICAgfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dD
YXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCit2b2lk
IEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzdHViKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHN0
dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTY1Nyw5ICs2NTcsNiBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUChzdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0
cmljdGVxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChnZXRfcHJvdG90eXBlX29m
KQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1AocmVzb2x2ZV9zY29wZSkKLSNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
U0xPV19PUChjaGVja190ZHopCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3By
b3BlcnR5X2tleSkKICAgICAgICAgZGVmYXVsdDoKQEAgLTg2MCw5ICs4NTcsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiAgICAgICAgIG1fYXJpdHlDaGVjayA9IGVudHJ5TGFiZWw7IC8vIE5ldmVyIHJlcXVp
cmUgYXJpdHkgZml4dXAuCiAKICAgICBBU1NFUlQobV9qbXBUYWJsZS5pc0VtcHR5KCkpOwotICAg
IAotICAgIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKLSAgICAKKwogICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShs
YWJlbCgpKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVs
KCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC05
MTQsMTIgKzkwOSwxMCBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgICAgIH0KICAgICB9CiAKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVt
cHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRo
Q2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4
Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0o
KS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZW5kaWYKIAogICAgIGZvciAoYXV0byYg
cmVjb3JkIDogbV9uZWFySnVtcHMpIHsKICAgICAgICAgaWYgKHJlY29yZC50YXJnZXQpCkBAIC0x
MDQwLDM1ICsxMDMzLDYgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25FZmZvcnQKICAgICByZXR1cm4gZmlu
YWxpemVPbk1haW5UaHJlYWQoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkp
IHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0
aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhl
IFZNKi4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1f
ZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVz
VG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAg
ICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJn
dW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwot
ICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRy
VGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAg
IH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLX0KLQogdm9pZCBKSVQ6OmRv
TWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAgICAgLy8gVGhpcyBlbnN1
cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hl
biBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA4N2NlOWRjNTllMWQyZTY4Y2FmODc1YzE3NjVj
YWM0OTUxMmI4MGQ0Li5jMjY1Y2NjMDQ3OTg3YmY5Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI3Niw4ICsyNzYsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmFw
cGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0KICAgICAgICAgdm9pZCBhZHZh
bmNlVG9OZXh0Q2hlY2twb2ludCgpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9y
Q2hlY2twb2ludChKdW1wKTsKICAgICAgICAgdm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7
CkBAIC01NTMsNyArNTUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
Y29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVt
aXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3Qg
T3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0X2Vu
dW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5j
dGlvblR5cGUpOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293
bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiopOwogCkBAIC02MTQsNyArNjEyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCi0g
ICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKKyAgICAgICAgdm9p
ZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93
UGF0aEZ1bmN0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBA
IC02MjIsNyArNjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdp
c3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlP
ckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmly
dHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSk7
CisgICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNv
bnN0IEluc3RydWN0aW9uKik7CkBAIC02NTgsMzkgKzY1NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0
dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJik7CiAKICAgICBwcml2YXRlOgotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICAvLyBUaHVuayBnZW5lcmF0b3JzLgotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2Rl
bF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Io
Vk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwor
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0
aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9w
cml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mKTsKKwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOwotCi0gICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hh
bmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOwogICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19o
YW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsK
IAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGh1bmtJc1VzZWRGb3JPcEdldEZyb21T
Y29wZShSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
R2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZW1pdCBpbmxpbmUgdGhh
biB1c2UgYSB0aHVuay4KLSAgICAgICAgICAgIC8vIFJlc29sdmVkQ2xvc3VyZVZhciBhbmQgTW9k
dWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHRoZXNlIHR5cGVzIHdpdGggb3BfZ2V0X2Zyb21f
c2NvcGUuCi0gICAgICAgICAgICByZXR1cm4gIShyZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwg
cmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVs
ZVZhcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlH
ZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9n
ZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
c2xvd19vcF9wdXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3Bl
R2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAg
ICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYpOwog
ICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhW
TSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0m
KTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwogCiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nhc2Uo
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKICAgICAgICAgewpAQCAtNzE4
LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPik7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhB
ZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1
cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwotI2VuZGlmCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tP
bkV4Y2VwdGlvbihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lz
dGVyIHJlc3VsdCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQoQWRkcmVzcywgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CkBAIC03NjMs
NyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLy8geDY0IFdpbmRvd3Mg
Y2Fubm90IHVzZSBzdGFuZGFyZCBjYWxsIHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0
aGFuIDY0IGJpdHMuCiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVu
YW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5k
U2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7CisgICAgICAgICAgICB1cGRhdGVUb3BDYWxs
RnJhbWUoKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAgICAgICAgICAgZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAjZWxzZSAv
LyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNzZlMDY4OWZjMTk1MGU0NTUzMTQ2NDdkNTQ5NzI2
MDg2ZjI0MmFkOS4uZjQyNjA3NGY0NWJhZjRmYzYwYzg1Mjg1ZDBkZmNiMGMxYTc1NWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkg
KzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdU
MTApOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2QpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX21vZCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAog
I2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3Qg
SW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKQEAgLTUyMiwxMSArNTIyLDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bv
dyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcG93KTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9wb3cpOwogICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2Ug
ewogICAgICAgICBBU1NFUlQoZ2VuLmVuZEp1bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFT
U0VSVChnZW4uc2xvd1BhdGhKdW1wTGlzdCgpLmVtcHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rp
dik7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRo
X2Rpdik7CiAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZh
ZDFkMzQ1NTQ1NjliNS4uYzY4ZTQ3ZWU5Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgi
CkBAIC0xNTMsNyArMTU0LDcgQEAgSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0
ZWNvZGUpCiAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCByZWdU
Mik7CiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVzcyhyZWdUMCwgQ2FsbExpbmtJbmZvOjpvZmZz
ZXRPZk1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpKTsKICAgICBub3RCaWdnZXN0Lmxp
bmsodGhpcyk7Ci0gICAgCisKICAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KICAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9IGpzUmVnVDEwOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodGhpc1ZhbHVlLCB0aGlzSlNSKTsKQEAgLTE5NiwxMSArMTk3LDExIEBAIHZvaWQgSklU
Ojpjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzCiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0
ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFt
ZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUiwgQmFzZWxpbmVDYWxsUmVn
aXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7Ci0gICAgbG9hZFZhbHVlKEFkZHJlc3Mo
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxlZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxM
aW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAgICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJS
ZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVK
U1IpOwogICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOwotICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2Fs
bExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKLSAg
ICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGlu
ZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAg
IG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0
YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsTGlua0luZm9HUFIpOworICAgIGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9i
YWxPYmplY3QoKm1fdm0sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9H
UFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICByZXNldFNQKCk7CiB9CiAKQEAgLTIxMywxOCAr
MjE0LDE4IEBAIGJvb2wgSklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3AmLCBVbmxpbmtlZENh
bGxMaW5rSW5mbyosIHVuc2lnbmVkKQogdGVtcGxhdGU8PgogYm9vbCBKSVQ6OmNvbXBpbGVUYWls
Q2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1
bnNpZ25lZCBjYWxsTGlua0luZm9JbmRleCkKIHsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRv
TWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5r
SW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgSnVt
cExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0
aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBC
YXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQo
KT4oWyZdIHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9w
VGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMg
PSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZd
IHsKICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVT
aHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIG1f
dW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiAgICAgICAgIENhbGxGcmFtZVNo
dWZmbGVyIHNodWZmbGVyIHsgKnRoaXMsIHNodWZmbGVEYXRhIH07Ci0gICAgICAgIHNodWZmbGVy
LmxvY2tHUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgICAg
ICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0lu
Zm9HUFIpOwogICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7
CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKIAogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0g
bGFiZWwoKTsKICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmRv
bmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlvbjsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yNjIsOCArMjYzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKICAgICB1aW50MzJf
dCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOwog
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1l
UmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVl
SlNSKTsKLSAgICBzdG9yZVZhbHVlKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOworICAgIHN0b3JlVmFsdWUoQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwogCiAgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRl
Y29kZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MSwxNyArMjcyLDE3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2Fs
bExpbmtJbmZvSW5kCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAvLyBXZSBuZWVkIHRoaXMg
b24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0IGEgcG9pbnRlciBjb21wYXJpc29u
IGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0Y2hlcyB0aGlzLgotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUikp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0
ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5mb0luZGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9m
ZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZv
R1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpN
ZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92
YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewot
ICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlD
RmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRH
UFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJk
YTx2b2lkKCk+KFsmXSB7CisgICAgICAgIGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjpl
bWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpj
YWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgICAgICBl
bWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxT
bG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAg
IHByZXBhcmVGb3JUYWlsQ2FsbFNsb3coQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxM
aW5rSW5mb0dQUik7CiAgICAgICAgIH0pKTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhz
KTsKICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwpAQCAtMjg5LDcgKzI5MCw3
IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlz
LCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBhdXRvIHNsb3dQYXRocyA9IENh
bGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwog
ICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbAogewogICAgIGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgaXRlcik7CiB9Ci0gCisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3Zh
cmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8
T3BDYWxsVmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0lu
ZGV4KyspOwpAQCAtMzkzLDEyICszOTQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIHsK
ICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KLSAgICAK
Kwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0VmFyYXJncz4o
Y3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQotICAg
IAorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1
Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CkBAIC00MTYsNyArNDE3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiAgICAgICAgIH0KICAgICB9KSgpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90
PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC00MjcsOSArNDI4LDkgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24p
CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmV0dXJuVmFsdWVKU1IpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
cmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZvR1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5W
YWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8gT3RoZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJldHVyblZh
bHVlSlNSLCBiYXNlSlNSKQpAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDCiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOworICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9y
SlNSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CiAgICAgSnVtcExp
c3Qgbm90T2JqZWN0OwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJh
dG9ySlNSKSk7CiAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyYXRv
ckpTUi5wYXlsb2FkR1BSKCkpKTsKQEAgLTQ3OCw3ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93QwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1l
cy0+bmV4dC5pbXBsKCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5
SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAorCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9
IGxhYmVsKCk7CiAKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9u
R2V0QnlJZE9wdGltaXplKTsKQEAgLTUxOCwxNiArNTE5LDE2IEBAIHZvaWQgSklUOjplbWl0X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICB9
CiAgICAgfSkoKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9y
YXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQs
IG5leHRKU1IpOwogICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRK
U1IpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlv
biwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1w
IGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSkpOwogCkBAIC02MTYsOCArNjE3LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9y
X25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBl
bWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVj
a3BvaW50KGp1bXAoKSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJl
c3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVy
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250
Q2xvYmJlckpTUjsKIAogICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpT
UiA9IGRvbnRDbG9iYmVySlNSOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNl
NjIyZTM3ODI3OGNmMjA3NGI0YmUuLmYyNzNmNDJiOTQ2NDYwMGJiMmQ5NmEzODU3MDQwNWI2YTA5
ZmEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQog
CisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBl
cnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgpAQCAtMTQ5LDkgKzE1MCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRv
cjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHVi
CiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNo
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BS
OwogCiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdl
bmVyYXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3Jh
dGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMTg1LDkgKzE4Niw5IEBAIHZvaWQgSklUR2V0QnlJZFdp
dGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQs
IHVuc2lnCiAKICAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwog
CiAgICAgaml0LmxvYWRDb25zdGFudChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVy
YXRlR2V0QnlJZElubGluZUFjY2VzcyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNo
R1BSLCByZXN1bHRKU1IpOwpAQCAtMjE1LDEwICsyMTYsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVk
IHN0dWIKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAot
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdp
c3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2
YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBh
dGg6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6
OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsKIAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzY3JhdGNoR1BSKTsKICAgICBhdXRvIGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKEND
YWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVj
dHVyZSgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YkkKIAog
ICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c2NyYXRjaEdQUjsK
IAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDYyOTI5YzBj
MjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUyNGY5YjA0OWUwZjNmMzFjMjk2ZGM0
ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5MCArNDgsNiBAQCBzdHJ1Y3QgVW5s
aW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsK
IGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5
VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRp
ZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVT
RShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5m
bzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQot
I2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxS
ZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBH
UFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2Rl
QmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8u
Ci1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKLQotc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdUMzsKLXN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7Ci1zdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBC
YXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OwotY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKLSNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07Ci0jZWxz
ZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsK
LSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5mbzo6anNSZWdU
NTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9Owot
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGlj
X2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKLX0KLQotbmFtZXNwYWNlIEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSICB7IEdQUkluZm86OnJlZ1Qz
LCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRv
bnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcg
fTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNl
SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKLX0KLQotbmFt
ZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShK
U1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qw
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwg
R1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0
ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKLX0K
LQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQ
UkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBS
ZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKLSNlbmRpZgot
fQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVBy
aXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0KIGNsYXNzIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyNmViMmFmZWNhZWY1
YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdmYTdlLi4zOTgxZjE3ZjA0MmJkOTA5MWI0YzIxMmFjODkz
ZWM0MzBjZWFjNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
MTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAgZXhjZXB0aW9uQ2hlY2soKTsKIH0K
IAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRo
UmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQot
ewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShmdW5jdGlvbik7Ci0gICAgZXhj
ZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xs
YmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rp
b24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8vIFRoZSBjYWxsZWUgaXMgcmVzcG9u
c2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRoZWlyIGNhbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggOTAzMGJiNTNiMmFkZDYxYWUwOGEz
MGM4N2M3MWEzOGYxZjY3NGNhNC4uYjg0OTliZTdiOGEwYjkxMzJiYTEyMGYzOWZiMmNhYjI5N2I1
ZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUg
IkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
QEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVj
b2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3JhdGNoMUdQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gxR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNoMkdQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5z
dGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CiAg
ICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnBy
b3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90
b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90bycgd2lsbCBiZSBwYXNzZWQgb24g
c3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90b0pTUiA9PSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJCaXQoKSk7CiAgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIHBy
b3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJl
Z1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAg
IGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJh
bmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBS
ZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIp
LCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
Y29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElT
dHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2Nywy
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0Zh
bHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1Qw
OwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFs
c2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFH
UFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9i
YWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0Zh
bHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNo
MSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXkubGlu
aygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRv
bmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZt
LCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBz
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygmaml0
KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJ
c0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
IAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25z
dGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElm
VHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEs
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFy
Z2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRp
dGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFk
ZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQog
Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Ly8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0
aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtNjc5LDMxICs2NTQsMjcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZh
bHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSBy
ZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmpl
Y3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9
IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1Qw
KTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0
KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGlu
aygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1
ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAg
ICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxz
ZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRo
eSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3Bf
dGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRp
Y19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUs
IHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVj
dEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxz
ZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwor
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25W
YWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVl
LCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRDVElTdHVi
KG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2Vu
ZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIAotICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6
OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICNpZiBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBqaXQubG9hZFB0cigmdm0udG9wRW50
cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsKKyAgICB7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVjdEdQUjsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zm
c2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWluZyBwYXJhbWV0ZXJzIik7CisgICAg
ICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
aml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hH
UFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQot
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9i
amVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xv
YmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQu
Y2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
dm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MCw3NyArMTIxMSw3
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8g
RXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0
YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5u
ZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFz
aW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2st
Pm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZp
cnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFs
dWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsg
aiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBB
U1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Y2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNU
b0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxv
Y2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVC
bG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BS
KTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6
ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0lu
aXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVP
cHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCksIGxvY2Fs
c1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2Vu
dGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRl
cl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICAvLyBvcF9l
bnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KLSAgICBqaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVu
ZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5lZEdQUiA9
IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0g
YXJndW1lbnRHUFI0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2Fu
QmVPcHRpbWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OwotICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9j
YWwpLm9mZnNldCgpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChzdGFydE9mZnNldCAqIHNp
emVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgaml0LnN1YjY0KGl0ZXJhdG9yR1BS
LCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Ci0KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAgICBhdXRv
IGluaXRMb29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gz
MihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAgICAgICAg
aml0LnN0b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAgICAgICBqaXQuc3ViNjQoVHJ1c3Rl
ZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjps
b2NhbHNUb0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRl
cmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSByZWdU
NTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpzUmVnVDMy
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIsIGNhbkJl
T3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAgICAgc2l6
ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVChzdGFy
dE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVy
YXRvckdQUik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVy
KSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BSKTsKKyAgICAgICAgaml0LnN1YlB0
cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgICAgICBqaXQubW92
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAgICAgIGF1
dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGppdC5i
cmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAgICAgICB7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3MoaXRlcmF0
b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdp
c3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsKICAgICB9Ci0gICAgaW5pdERv
bmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgor
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1bWVudEdQ
UjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNSZW1lbWJl
cmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVu
dEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAg
Ly8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0IDAuCisgICAgaml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworCisgICAg
Ly8gc2F2ZSBjYW5CZU9wdGltaXplZEdQUiAoYXJndW1lbnRzIHRvIGNhbGwgYmVsb3cgYXJlIGlu
IHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFjayB0aGlzKS4KKyAgICAv
LyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1c2hUb1NhdmUsIGFzIGl0
IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisgICAgaml0LnN1YlB0cihU
cnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZVB0
cihjYW5CZU9wdGltaXplZEdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworCisg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQ
YXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVy
Q2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQubW92ZShHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciksIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gUmVzdG9yZSBjYW5CZU9wdGltaXplZEdQUgor
ICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsg
Ly8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVu
LmxpbmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEzMzUsMTEgKzEyOTIsMzAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hh
bmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5i
cmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9m
ZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAgICBqaXQuY29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7CiAgICAg
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0
aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBh
cworICAgICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRz
IGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQg
YnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2
bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BS
MiB9OworI2Vsc2UKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBH
UFJJbmZvOjphcmd1bWVudEdQUjAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworI2VuZGlmCisgICAg
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKSwgdm1Qb2ludGVyQXJnR1BSKTsKKyAgICAg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBieXRlY29kZUluZGV4Qml0c0FyZ0dQUik7CisK
ICAgICAgICAgb3BlcmF0aW9uT3B0aW1pemVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFn
KTsKIAorI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGppdC5wb3AoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyB0YXJnZXRQQworICAgICAgICBqaXQucG9wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7IC8vIGRhdGFCdWZmZXIgKHVudXNlZCwgYnV0IG5lZWRzIHBv
cHBpbmcgdG8gcmVzdG9yZSBzdGFjaykKKyNlbmRpZgorCiAgICAgICAgIHNraXBPcHRpbWl6ZS5h
cHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpKTsKICAgICAgICAg
aml0LmZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
IApAQCAtMTM0NywxMSArMTMyMyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2
UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CkBAIC0xMzYyLDcgKzEzMzQsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1NzMsNTcgKzE1NDQsNDIgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGUKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRH
UFIwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQ
UjApOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIzOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNoZWNrVHJh
cHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBz
X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihm
cmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9
IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFw
czo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwotICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9u
ID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFsT2JqZWN0
R1BSKSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnAp
OwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJ
VGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9i
YWxPYmplY3RHUFIpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2Fs
bChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisK
KyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
aGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBmYzZm
ZThjNDA3NjEuLmE4ZDI1MTUwN2E5ZmQ2N2E3MTNhODBiN2I2Mjg4NjY0MDQ5ZTEzNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1
ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1
bWVudHMuaCIKQEAgLTUyLDExICs1MywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDIsMjIg
QEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBi
eXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVy
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgr
K107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJl
Z3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAg
IG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pT
Uik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6
TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNl
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2Vk
LgotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFy
Z3VtZW50R1BSMSk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEp
OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJh
dGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwg
cHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBz
bG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMjAxLDEwICsxNzIsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMjMwLDU1
ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOwotICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7Ci0gICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLSAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1tt
X2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8g
YXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
ID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTI4NiwzNCArMjMx
LDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJv
cGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93
UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOworICAg
IHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9
PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEg
U3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAot
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4
Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9w
cml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
QEAgLTMyMSw5ICsyNjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5
dGVjb2RlLm1fYnJhbmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJh
bmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0z
NTQsNDYgKzI5OSwyMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5k
PigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8v
IGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJy
YW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA0
LDkgKzMyNCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29k
ZS5tX2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5
ICszNDgsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+
KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
cmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRy
YWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDgzLDE5
ICszNzcsMjAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJv
cGVydHlKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsK
KyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CiAKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgcHJvZmlsZUdQUik7
Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRh
dGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOworCisgICAgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyog
c2NyYXRjaEdQUjogKi8gc3R1YkluZm9HUFIpOwogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBudWxscHRyLCBudWxscHRyLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCkBAIC01MjksNzYgKzQyNCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRf
b3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGJvb2wgaXNEaXJlY3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
OwotICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVD
TUFNb2RlOjpzdHJpY3QoKTsKLQotICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7
Ci0gICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAg
ICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci0gICAgfTsKLQotICAgIGlmIChp
c0RpcmVjdCkKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxE
aXJlY3Q+KCkpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlWYWw+KCkpOwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0
QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgNT4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBpZiAo
aXNEaXJlY3QpCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCksIE9wUHV0QnlWYWxEaXJlY3Q6Ok1l
dGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wUHV0QnlWYWw+KCksIE9wUHV0QnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BS
LCBwcm9maWxlR1BSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBh
cmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGds
b2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpA
QCAtNjA2LDM5ICs0NTIsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdG9pbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSByZWdUNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
ZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwotICAgIHsKLSAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZChiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHByb2ZpbGVH
UFIpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDQpKTsKLSAgICAgICAgQVNT
RVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q1KSk7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Cisg
ICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIHBy
b2ZpbGVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV92
YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjQ3LDEw
ICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0
ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2ICs1MjIsMjcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1
ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1Is
IHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQot
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtNzM2LDM0ICs1NTAsMzkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdU
MzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDQ7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLQorICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0
aGlzIHJlZ2lzdGVyIGlzIG5lY2Vzc2FyeSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGwKKyAgICAvLyB0byBub3QgY2xvYmJlciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwg
YW5kIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51
bGxwdHIpLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGw8U2xvd09wZXJhdGlvbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7
CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwg
c3R1YkluZm9HUFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwotICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBq
aXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0MSwxMCArNjYwLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6
c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1
LDYyICs2OTQsMzYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRz
W21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7
CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1v
ZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09
IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQo
cmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1
bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3MzEsMzYgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50
R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJu
VmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzMsMTEgKzc2OSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnNjcmF0
Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVz
dWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZh
bDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBi
YXNlKTsKQEAgLTEwMTAsNjMgKzgwNiwzNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQorICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAg
ICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4
KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFs
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0z
MihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJl
Z1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVz
dWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0
SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODQzLDM2IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2Jq
ZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQ
UjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCi0gICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVH
UFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwor
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5W
YWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVj
aywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTA5LDkgKzg4MSw5IEBAIHZvaWQgSklUOjplbWl0X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTExMzgsNDkgKzkxMCwy
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4o
KTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRp
bWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwK
LSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNl
Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9n
ZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIy
OwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFs
dWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKQEAgLTExOTEsOSArOTQxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTIxOSw0OSArOTY5LDI3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGly
ZWN0PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
OwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3Bl
cnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwor
CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyNzIsMTUgKzEwMDAsMTUgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKLSAgICAKLSAgICBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKKworICAgIGlmICgqaWRlbnQgPT0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJvbU1ldGFkYXRhKGJ5
dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0YSgpICsgR2V0
QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBK
dW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoCkBAIC0xMzEyLDUx
ICsxMDQwLDY2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsK
LSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQot
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJ
ZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0
dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQor
eworICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5l
IGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5v
dCBtYXRjaAorICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJz
IGppdDsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRp
b24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1l
bnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZv
Iik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24g
Y2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY1LDEwICsxMTA4LDEwIEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1ZSZWcgPSBieXRlY29kZS5tX3Ro
aXNWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAtMTM5NSw5NiAr
MTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQotewotICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdp
bmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAotICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGlmICgh
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0K
LSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0
aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0
aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigp
OworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6cHJvcGVydHlH
UFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0
aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlH
UFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNDky
LDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdp
dGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0
aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3Bl
cnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtMTUzNCwxMCArMTIxMywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyB0byBqdXN0IGFmdGVy
IHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJl
Z2luJywgYW5kIHdlIGdlbmVyYXRlIGNvZGUKICAgICAvLyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVy
ZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhpcy4KIAot
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2
YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlk
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2
YWx1ZUpTUik7CkBAIC0xNTYxLDcgKzEyNDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7
IC8vIFdlIG1pZ2h0IE9TUiBleGl0IGhlcmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkg
cmVzZXQgU1AKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7
Ci0gICAgCisKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRl
LWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNp
emUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5
NQpAQCAtMTU3MCw1NiArMTI0OSwzMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbih0aGlzKTsKLSAgICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luKHRoaXMpOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkg
aW4gdXNlLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3Rh
dGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Ly8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0
aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3Vt
cHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2MjcsMzUgKzEyODAsMzUgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3Vt
ZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
dmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVl
ZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0
LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY2NCw5ICsxMzE3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTY5MSw1MSArMTM0NCwyOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJ
bmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4
YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0
aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xNzQ2LDExICsxMzc3LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
QEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
bkJ5VmFsPigpOwotCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1tt
X2luQnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2Zp
bGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQ
UigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BS
KTsKLSAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkg
d2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEg
ZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lz
dGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlw
ZSkKIHsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eU9yQnJhbmQsIHByb3BlcnR5
SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZp
cnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93
KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNz
VHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlW
YWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAw
PigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNl
bHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OnZhbHVlKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xOTEyLDEyICsxNDkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0
ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5h
bWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworICAgIGVtaXRIYXNQcml2
YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0xOTI2LDEyICsxNTA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhh
c1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFu
ZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBi
eXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworICAgIGVtaXRI
YXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9
IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAg
IEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRl
eCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE5NDksMTQgKzE1MjQsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIC8vIElmIHdlIHByb2ZpbGUgY2VydGFpbiByZXNvbHZlIHR5cGVzLCB3ZSdy
ZSBndWFyYW50ZWVkIGFsbCBsaW5rZWQgY29kZSB3aWxsIGhhdmUgdGhlIHNhbWUKICAgICAvLyBy
ZXNvbHZlIHR5cGUuCiAKLSAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIp
IAorICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikKICAgICAgICAgbG9h
ZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkxleGljYWxFbnZpcm9ubWVudCgpLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIHVpbnQzMl90IG1ldGFkYXRhT2Zmc2V0ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bWV0
YWRhdGEoKS5vZmZzZXRJbk1ldGFkYXRhVGFibGUoYnl0ZWNvZGUpOwogCi0gICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsKLSAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY29wZUdQUiA9IHJlZ1QwOwotICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDM7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNv
bHZlU2NvcGU6Om1ldGFkYXRhR1BSOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQUjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7CiAKICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICAgICAgYWRkUHRy
KFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIsIG1ldGFkYXRhR1BS
KTsKQEAgLTE5NjQsMjMgKzE1MzksMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY29kZTsKICAgICAgICAgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRD
VElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAgICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxD
bG9zdXJlVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJh
dGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAg
ICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5r
PEdsb2JhbFZhcj4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0
ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsK
KyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAg
ICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVu
azxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUg
PSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHVi
KGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENU
SVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAg
IGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2Jh
bFZhcj4pOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICAgICB9CkBAIC0yMDAwLDEyICsxNTc1LDEyIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmso
Vk0mIHZtKQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICB1c2luZyBNZXRhZGF0YSA9IE9w
UmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BS
ID0gcmVnVDI7IC8vIGluY29taW5nCi0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJl
Z1QwOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSByZWdUMzsgLy8gaW5jb21pbmcgLSBwYXNzIHRocnUgdG8gc2xvdyBwYXRoLgorICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNv
bWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OnNjb3Bl
R1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZl
U2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBz
bG93IHBhdGguCiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7IC8vIGxv
Y2FsIHRlbXBvcmFyeQogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZU9mZnNldEdQUik7Ci0gICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVHUFIsIG1ldGFkYXRhR1BSLCBieXRl
Y29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNjb3BlR1BSID09IHJldHVyblZhbHVlR1BSKTsgLy8gZW1pdFJl
c29sdmVDbG9zdXJlIGFzc3VtZXMgdGhpcwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
QEAgLTIxMzYsNTAgKzE3MTEsMzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICAvLyBU
aGUgZmFzdCBwYXRoIGFscmVhZHkgcHVzaGVkIHRoZSByZXR1cm4gYWRkcmVzcy4KLSNpZiBDUFUo
WDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02
NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wdXNoUGFpcihm
cmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAg
IGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRp
ZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVn
VDM7Ci0gICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIElu
Y29taW5nCiAKICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKICAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25z
dGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwotICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBn
bG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGlu
c3RydWN0aW9uR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Cisg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0cnVjdGlv
bkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVj
dGlvbkdQUik7Ci0KKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlv
bkdQUik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblJlc29sdmVT
Y29wZUZvckJhc2VsaW5lKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7Ci0gICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5j
YWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0
Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBq
aXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVy
cm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKLSAgICBqaXQucmV0KCk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRp
b24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9y
QmFzZWxpbmUpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3Rh
Y2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcmVzb2x2ZV9zY29w
ZSIpOwogfQogCkBAIC0yMTkwLDM4ICsxNzQ4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9m
cm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmly
dHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAgICBSZXNvbHZlVHlwZSBw
cm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9wcm9maWxlZENvZGVCbG9j
aykubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1f
Ynl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BS
ID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Qz
OwotCiAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5t
ZXRhZGF0YSgpLm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29kZSk7CiAKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29wZUdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsK
KwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7CiAg
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIsIG1l
dGFkYXRhR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY29kZTsKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQotICAg
ICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8Q2xv
c3VyZVZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZl
VHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2Vu
ZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
Pik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIpCi0gICAg
ICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9i
YWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlw
ZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAg
ICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSkKLSAgICAg
ICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2Jh
bFByb3BlcnR5Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdl
dEZyb21TY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRS
ZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJ
U3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOworICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxH
bG9iYWxMZXhpY2FsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9IHZt
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOwogCiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CkBAIC0yMjM1LDkg
KzE3OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5s
aW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5
IG5vdCBtYXRjaAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgdXNpbmcgTWV0
YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBt
ZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdU
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7IC8vIFVz
ZWQgb25seSBvbiBzbG93IHBhdGgKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BS
OyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zm
c2V0R1BSKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgbWV0
YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOwpAQCAt
MjI1Niw3ICsxODE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBt
X3ZhckluamVjdGlvbldhdGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNsb3dDYXNl
LmFwcGVuZChqaXQuYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNoR1BSLCBXYXRjaHBvaW50
U2V0OjpvZmZzZXRPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKICAg
ICB9OwotICAgIAorCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEds
b2JhbFByb3BlcnR5OgpAQCAtMjM3MSw2OCArMTkyOSw0MiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihW
TSYgdgogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAg
aml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBs
YXRmb3JtIgotI2VuZGlmCi0KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDQ7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0gICAg
aml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwotICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0
R1BSLCBzY3JhdGNoR1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBn
bG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAobWV0YWRhdGFHUFIsIHJldHVyblZhbHVlR1BSKSk7CiAKLSAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwotICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0
Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0
cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBp
bnN0cnVjdGlvbkdQUik7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKLSAgICAv
LyBQcmVzZXJ2ZSBtZXRhZGF0YSBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcjsKLSAgICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsK
LSAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gc19tZXRhZGF0YUdQUjsKLSAgICBh
dXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzX21ldGFkYXRhR1BSKTsKLSAgICAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzX21ldGFkYXRhR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
TWV0YWRhdGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgfTsKLSNlbmRpZgotICAgIEFT
U0VSVChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKG1ldGFkYXRh
Q1NSKSk7Ci0gICAgaml0Lm1vdmUobWV0YWRhdGFHUFIsIG1ldGFkYXRhQ1NSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9iYWxP
YmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGluc3RydWN0aW9uR1BSKTsKKyAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGluc3RydWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
aW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOworCisgICAgLy8gc2F2ZSBtZXRhZGF0YUdQUiAoYXJndW1lbnRzIHRv
IGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBz
dGFjayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNl
IHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQu
CisgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgIGppdC5zdG9yZVB0cihtZXRhZGF0YUdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlcikpOworCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwogICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlv
bkNoZWNrKHZtKTsKIAotICAgIGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNz
KG1ldGFkYXRhQ1NSLCBNZXRhZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6
Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwotICAgIHJlc3RvcmVIaWphY2tlZENTUigpOworICAg
IGppdC5sb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBtZXRhZGF0YUdQUik7
IC8vIFJlc3RvcmUgbWV0YWRhdGFHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorICAgIGpp
dC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBNZXRhZGF0
YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQo
KSkpOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsK
LSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAg
IGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFk
ZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxh
dGZvcm0iCi0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQu
cmV0KCk7CiAKICAgICBleGNlcHRpb25DaGVjay5saW5rKCZqaXQpOwotICAgIHJlc3RvcmVIaWph
Y2tlZENTUigpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBKdW1wIGp1bXBUb0hh
bmRsZXIgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0y
NTkwLDI3ICsyMTIyLDIwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQg
Q29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJl
IGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsK
KyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhy
b3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKLSAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25B
dChtX2J5dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Cisg
ICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9m
ZnNldEdQUjsKIAotICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOworICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xv
d19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Io
Vk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBj
YW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTI2
MTksNDMgKzIxNDQsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0
KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BS
MzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3Vt
ZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKKyAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSLCBieXRlY29kZU9m
ZnNldEdQUiwgY29kZUJsb2NrR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUo
KTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25QdXRUb1Njb3BlKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgQ2Fs
bCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBq
aXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBv
cChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0
KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdl
dENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRv
cik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFi
ZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKQEAgLTI2NjMsNyArMjE3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3Vt
ZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRzID0gYnl0ZWNvZGUubV9hcmd1bWVudHM7CiAgICAgaW50IGluZGV4ID0gYnl0ZWNvZGUubV9p
bmRleDsKLSAgICAKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGFyZ3VtZW50
cywgcmVnVDApOwogICAgIGxvYWRWYWx1ZShBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6
OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikp
LCBqc1JlZ1QxMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwganNSZWdU
MTApOwpAQCAtMjc0Myw3ICsyMjU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5
X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpA
QCAtMjgwNiw3ICsyMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNl
cy5saW5rKHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI4
MjQsMTMgKzIzNDAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlzdCBk
b25lQ2FzZXM7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5lRW51
bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxpbmVF
bnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDEgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2Ny
YXRjaDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lRW51bWVyYXRv
ckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gzID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1l
cmF0b3JHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6cHJvcGVydHlKU1IucGF5
bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gxID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRC
eVZhbDo6c2NyYXRjaDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gyOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5
VmFsOjpzY3JhdGNoMzsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQ
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihtb2RlLCBzY3JhdGNoMyk7CkBAIC0yOTA2
LDcgKzI0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotdm9pZCBKSVQ6
OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5jdGlv
blR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5l
cmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTM2LDcgKzI0
NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhp
cyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25l
LmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNDYwLDMxIEBAIHZvaWQgSklUOjplbWl0X2VudW1l
cmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hhc19w
cm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7Cisg
ICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVt
ZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9nZXRf
YnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
QEAgLTI5NzcsMTUgKzI0OTMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUUKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKIHsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9o
YXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5MDFkZjU2YWZiMTNi
NDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3MDM2NmIzNTBlMjM5
N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0xNzEs
OCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRo
RnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2Fz
dDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEsOCArMTc5LDYgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQ
YXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5U2VhcmNoZXIgewog
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYga2V5KSB7IHJl
dHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNvbnN0IEhvc3RGdW5j
dGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjplcXVhbChhLCBi
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggODQ3Y2UyNTAyZTQw
MThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZlMGRiNTdmY2Q4YTBj
YTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC02
Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQ
dHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRodW5rR2VuZXJhdG9y
KTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiwgU2xvd1BhdGhG
dW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1
bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlmOTdjYjA3NDdhMGE0
ZTEzZDcyOGIuLjMyZjA1YjgzZjUyOWU4OTVkYmQ4ZTYyZDlmN2NjMjUwNDMyMDhjMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK25h
bWVzcGFjZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEpJVDo6
YXJndW1lbnRHUFIzOworfQogCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CkBAIC00
NCw5ICs0Niw3IEBAIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5k
ZXgpOwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAgbV9qaXQtPm1v
dmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7
CisgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJz
LT5jdGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogfQogCkBAIC01NCw0NiArNTQsNDkgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmso
Vk0mIHZtLCBTbG8KIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwotCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwot
I2VuZGlmCi0KLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQot
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1l
bnRHUFIxID09IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBqaXQubW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMgbGFy
Z2VyIHRoYW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIgcGFz
c2VkIGFzCisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3VtZW50
cyBhcmUgc2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkg
Z2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJn
R1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdH
UFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBjYWxsRnJhbWVBcmdHUFIsIHBjQXJnR1BSLCBieXRlY29k
ZU9mZnNldEdQUikpOworI2Vsc2UKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFyZ0dQ
UiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJnR1BS
ID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNh
bGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZW5kaWYKKyAg
ICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lQXJnR1BSKTsK
KyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgcGNBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhwY0FyZ0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIo
KSksIHBjQXJnR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBwY0FyZ0dQ
Uik7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXRO
b25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGpp
dC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQ
YWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlu
a1JlZ2lzdGVyKTsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3Ao
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBwYworICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyKTsgLy8gY2FsbEZyYW1lCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAKLSAg
ICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRI
YW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIENDYWxs
SGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93
UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5k
ZXggODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4
MjY1MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCog
aml0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5j
dGlvbikKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xv
d1BhdGhGdW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0
aEZ1bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7CiAg
ICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0m
LCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0
ZVRvcENhbGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAg
IG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQ
UjEpOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6
YXJndW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpU
cnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAg
SklUOjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwot
Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6
OnJlZ1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxG
cmFtZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0g
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5leGNl
cHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBT
bG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlv
biogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1NzFhNmNiNTdlODI0ZGNjOWUxY2Ey
MzVlNGRiZGVhMzA5MzNiMC4uZjE1YzcwMzdmYjEwMTA3M2U3NjM2MTg3MzU2YjNkMzUzMTcwMzI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApA
QCAtNDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5LDgg
KzU3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkK
IHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsMjAgKzczLDEzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJv
bGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAK
LSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5r
U3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZSZWdp
c3RlcnM6OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
UklTQ1Y2NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBq
aXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBl
cnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVt
ZW50ZWQgb24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisjaWYg
Q1BVKFg4Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVzIHRo
ZSByZXR1cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6
ZXNwKTsKICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9IGpp
dC5qdW1wKCk7CkBAIC0xMDEsMzIgKzkwLDIyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9w
VGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIC8vIFRoaXMgdGh1bmsgaXMg
dGFpbCBjYWxsZWQgZnJvbSBvdGhlciB0aHVua3MsIGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMg
YWx3YXlzIGFscmVhZHkgdGFnZ2VkCiAKKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2Fs
bCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4g
YWRkcmVzcyBoZXJlLgogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6
KCkpKSB7Ci0gICAgICAgIC8vIEV4Y2VwdGlvbiBmdXp6aW5nIGNhbiBjYWxsIGEgcnVudGltZSBm
dW5jdGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHJldHVybiBhZGRyZXNzIGhlcmUu
Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmVtaXRDVElUaHVu
a1Byb2xvZ3VlKCk7CiAgICAgfQogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRsZUV4Y2Vw
dGlvbiA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSNpZiBDUFUoWDg2XzY0
KQotICAgICAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgfQorICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBqaXQuZW1pdENUSVRo
dW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBhdXRvIGhhbmRsZXJHZW5lcmF0
b3IgPSBPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkgPyBwb3BUaHVua1N0YWNrUHJlc2VydmVz
QW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yIDogaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yOwpA
QCAtMTQzLDggKzEyMiw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGFn
VHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggYTlmZWVlYTkyNGFlMDA3OGQ4NDUxZTE3
MmM0YzQ5NDVkZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3ODI5ZjBiNGFiY2FiYWVkYzQ5NzM1YTJk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0z
OCwxMyArMzgsOCBAQCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CkBAIC04Miw5ICs3Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihWTSYpOwog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJik7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNjY0YjBlMjlmNmJhM2NlNDgyNmU1MTA5ZDczZjg2
Y2M5YmM2YWRmZC4uNWVjNzQwOWJjOWFlODZjMzQyOGU2MmVjMjBhNDUwYWYyZTc4YjRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQgKzgzOSw2IEBACiAjZGVmaW5lIEVOQUJM
RV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpIHx8
IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2Yg
dGhlc2UgdGh1bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1bWVudCByZWdpc3RlcnMsIGFuZAotICAg
bWFrZSB1c2Ugb2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4gRm9yIG5vdywgd2UnbGwgb25seSBzdXBw
b3J0IHRoZW0gb24gcGxhdGZvcm1zCi0gICB0aGF0IGhhdmUgNiBvciBtb3JlIGFyZ3VtZW50IHJl
Z2lzdGVycyB0byB1c2UuCi0qLwotI2RlZmluZSBFTkFCTEVfRVhUUkFfQ1RJX1RIVU5LUyAxCi0j
ZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSkgJiYgIU9TKFdJ
TkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSAxCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450418</attachid>
            <date>2022-01-31 10:53:59 -0800</date>
            <delta_ts>2022-02-02 11:22:32 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-233822-20220131185357.patch</filename>
            <type>text/plain</type>
            <size>281175</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTllM2FlNjZjOWYwYjNiYTcyY2Y0Yjg3MWZlNGVhMzNiYTliNmIzLi43MGUwMTM1YmUxMTNkZjIy
ODUwMzFhYWNkODlhOWQwOGM0ZDQ1MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDEtMzEgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0zMSAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWxhbmQgU3RydWN0dXJlSUQg
b3ZlcmhhdWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggZGFmOGVlY2E5ODI0YWRjMjJhZTk1MzY1OGIyZWZlMGNmNzI0ZGEwMC4u
M2JkODY3ZWQ1Y2ZkZWMwMDRlYzUxOGYzNjcyYmRkMzVkMDlkMmYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wMS0zMSAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVOS1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFi
bGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJBX0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3YXlz
IG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIwMjItMDEtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVsYW5kIFN0cnVjdHVyZUlEIG92ZXJoYXVs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg4Mzc3ZjY3MTM5OWExM2Iw
YjUxNTMxZTBjMjljMjQ3NDNkYjgyMS4uNjRhYTIwZmQ0YWYwZWUyODFmYjM4NzY0MzMzNmUwYjkx
MzIwOTkwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODQ2LDYgKzg0
Niw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
aml0L0Fzc2VtYmx5SGVscGVycy5oCiAgICAgaml0L0Fzc2VtYmx5SGVscGVyc1Nwb29sZXJzLmgK
ICAgICBqaXQvQmFzZWxpbmVKSVRDb2RlLmgKKyAgICBqaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMu
aAogICAgIGppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCiAgICAgaml0L0NDYWxsSGVscGVycy5o
CiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0ZmYyOTdkM2UzYWQ4MTQ5MDc0NTFjZjZmMDBiMjFmNjdlZDZhNjM5Li5jZjM1NTQ0
Y2RiN2FlZDNmMjBiNjM2OTE5MmQzYjZmYTA5MTYxZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTIwMSw2ICsxMjAxLDcgQEAKIAkJNzIxMzFCRkEyNjU4N0VGMjAwNzExNENG
IC8qIEpJVFBsYW5TdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzIxMzFCRjYyNjU4N0VGMjAwNzExNENGIC8qIEpJVFBsYW5TdGFnZS5oICovOyB9
OwogCQk3MjEzMUJGQzI2NTg3RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjEzMUJGQjI2NTg3
RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi87IH07CiAJCTcyMzk5OEY3MjY1
REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAvKiBCYXNl
bGluZUpJVFBsYW4uaCAqLzsgfTsKKwkJNzI0MDAwRjcyODJEQkNEQjEwNTc4NjdGIC8qIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZC
OTFCMDI2NTgxNjUzMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUE4MjY1ODE2NTIwMDhFNkY4
MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovOyB9OwogCQk3MjZCOTFCMzI2NTgxNjUzMDA4RTZG
ODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRp
b25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFGMjY1ODE2NTMwMDhFNkY4MiAv
KiBKSVRQbGFuLmggKi87IH07CkBAIC00MjM1LDYgKzQyMzYsNyBAQAogCQk3MjEzMUJGQjI2NTg3
RUZBMDA3MTE0Q0YgLyogSklUV29ya2xpc3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklUUGxhbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjM5OThGNjI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxp
bmVKSVRQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2Vs
aW5lSklUUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNDAwOUY1Mjc4
REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCYXNlbGluZUpJVFJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUV29ya2xpc3RUaHJlYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2QjkxQUEyNjU4MTY1MzAwOEU2Rjgy
IC8qIEpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklU
UGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUFCMjY1ODE2NTMw
MDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUQ29tcGlsYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02NDg2LDYgKzY0ODgsNyBAQAogCQkJCTUyREQwMDA2MjZFMDM5QjMwMDU0RTQwOCAvKiBC
YXNlbGluZUpJVENvZGUuaCAqLywKIAkJCQk3MjM5OThGNjI2NURCQ0RCMDA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRQbGFuLmNwcCAqLywKIAkJCQk3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRQbGFuLmggKi8sCisJCQkJNzI0MDA5RjUyNzhEQkNEQjAwNTc4NjdGIC8qIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzLmggKi8sCiAJCQkJMEY2NEIyNkYxQTc4NEJBRjAwNkU0RTY2IC8qIEJp
bmFyeVN3aXRjaC5jcHAgKi8sCiAJCQkJMEY2NEIyNzAxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFy
eVN3aXRjaC5oICovLAogCQkJCTY1QjgzOTJEMUJBQ0E5RDMwMDQ0RTgyNCAvKiBDYWNoZWRSZWNv
dmVyeS5jcHAgKi8sCkBAIC05ODI3LDYgKzk4MzAsNyBAQAogCQkJCTBGMkM2M0IyMUU2MEFFNDcw
MEMxMzgzOSAvKiBCM1dpZHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkREMDAwODI2RTAzOUI5
MDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjM5OThG
NzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MjQwMDBGNzI4MkRCQ0RCMTA1Nzg2N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM1RTg5RkQy
NUM1MEY4NzAwNzFFRTFFIC8qIEJpZ0ludDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGJm
NmZiZTMwNWIzZmQ0ZDU2YWFhODUyODljZTMxMzE1YTg3MzViZTUuLmYxZmY2Mzk0YzlmNGVlZDUx
YzEwMGM1ZTRjMjdlZjY4ZjBkYjViNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTY3NCwxMiArNjc0LDIyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHN1YjMyKHNyYywgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9p
ZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAg
ICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0
cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZv
aWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CkBAIC0xMDA3LDEyICsxMDE3LDIy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN1YjY0KHNyYywgZGVzdCk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0LCByaWdodCwgZGVzdCk7
CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAg
ICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAg
IH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CmluZGV4IGNkMTI5ZjZkOWE4N2UwNjlhZWNmYTQyNGFmZTcwZjBmMTE1Y2QxNDUuLmI1OTMwNzMz
ZGMwMzM4ZTZlZTM3ZmMzNGIzMjk3NjExYTk0MWQyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC01OSw3ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7IEZPUl9FQUNIX0dQX1JFR0lTVEVSKERVTU1ZX1JF
R0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1GUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0PGludD4oeyBGT1JfRUFDSF9GUF9SRUdJU1RF
UihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6ZSgpOwogI3VuZGVmIERVTU1ZX1JFR0lTVEVS
X1ZBTFVFCi0gICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBhZGRyZXNz
VGVtcFJlZ2lzdGVyOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHNjcmF0Y2hS
ZWdpc3RlcigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0KIAogICAgIE1hY3JvQXNz
ZW1ibGVyQVJNdjcoKQogICAgICAgICA6IG1fbWFrZUp1bXBQYXRjaGFibGUoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgKaW5kZXggMDQ1ZGVmZWRiMTU0ZmQwODlhMmI2OGRjZDYzMTgxMTk3MTAwMWUyMi4uYjJl
OTExYWExMzY2M2EyNTA5ODQwYTA1Njg4NDEyZjI5MjhlZjQ2MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAt
ODA0LDcgKzgwNCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YnFfaXIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgc3ViNjQoUmVnaXN0ZXJJRCBhLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtb3ZlKGEsIGRlc3QpOworICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OworICAgIH0KKwogICAgIHZvaWQgc3ViNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKaW5kZXggMDBhNTU0OTdmZDYzYWRl
YTljZjVmMWJmMGJjNmIxYmMxNWE4NDBkMi4uNzdlNGE2ZTllZjNmOGFjNzJhNWRkMGM3ODI4YTBi
ZGNlYzM1ZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJh
c2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaCIK
ICNpbmNsdWRlICJDYWxsTW9kZS5oIgogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgpAQCAtNDcs
MTQgKzQ4LDYgQEAgZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogc3RydWN0IENhbGxGcmFtZVNo
dWZmbGVEYXRhOwogc3RydWN0IFVubGlua2VkQ2FsbExpbmtJbmZvOwogCi0jaWYgRU5BQkxFKEpJ
VCkKLW5hbWVzcGFjZSBCYXNlbGluZUNhbGxSZWdpc3RlcnMgewotY29uc3RleHByIEpTVmFsdWVS
ZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07Ci1jb25zdGV4cHIgR1BSUmVnIGNh
bGxlZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci19Ci0jZW5kaWYKLQogY2xhc3MgQ2FsbExpbmtJbmZv
IDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKIHB1YmxpYzoK
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNDYyLDkgKzQ1NSw5
IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2Fs
bGVlR1BSOyB9Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkg
eyByZXR1cm4gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFI7IH0KLSAgICB2
b2lkIHNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSB7IFJFTEVBU0Vf
QVNTRVJUKGNhbGxMaW5rSW5mb0dQUiA9PSBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUik7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIoKSB7IHJl
dHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlR1BSOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUjsgfQorICAgIHZvaWQgc2V0Q2FsbExpbmtJ
bmZvR1BSKEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJ
bmZvR1BSID09IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOyB9
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4IDk0Mzc2OGVlZDlhNDA3ODIwMmNiYjE0YTNiOWM3
NDVhNjEyYmU5ZjguLmI0NzExNmRmZWRlNjg0ZDA3ZjQ3ODU1MGVmMWI3YWY2OTQxNDRmY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcApAQCAtMjMzLDIzICsyMzMsMTIgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6
OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIoKQogICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhqdW1wVG9PU1JFeGl0RXhjZXB0aW9uSGFuZGxlciwgb3JpZ2luYWxIYW5kbGVyLm5h
dGl2ZUNvZGUpOwogICAgICAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIgPSBqaXQtPmp1bXAoKTsKICAgICAgICAgVk0qIHZtID0gJm1fdm07CiAgICAgICAg
IGppdC0+YWRkTGlua1Rhc2soCiAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0aW9uSGFu
ZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0tPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgICAgIH0pOwotI2Vs
c2UKLSAgICAgICAgaml0LT5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZtX3ZtKSk7Ci0g
ICAgICAgIGppdC0+cHJlcGFyZUNhbGxPcGVyYXRpb24obV92bSk7Ci0gICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBsb29rdXBFeGNlcHRpb25IYW5kbGVyQ2FsbCA9IGppdC0+Y2FsbChPcGVyYXRp
b25QdHJUYWcpOwotICAgICAgICBqaXQtPmFkZExpbmtUYXNrKAotICAgICAgICAgICAgWz1dIChM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICBqaXQtPmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIobV92bSk7Ci0jZW5kaWYKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCmluZGV4IDVkMjg3ZGI1NjhkZmI5NzUzMzQwYzIwOTRhYjYwOWMyMDE3M2E2ZGQu
LjcyOTk0YTgyN2FmYmM2YmI2OTMxY2Y0ZDYxZjZjY2U5M2FiN2YxZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAt
MjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0
dWJJbmZvLmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgogI2luY2x1ZGUgIlJl
cGF0Y2guaCIKIApAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86Omlu
aXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAg
ICAgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KTsKICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRCeUlkICYmIHVubGlua2Vk
U3R1YkluZm8uYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgLy8gRm9yIGl0
ZXJhdG9yX25leHQsIHdlIGNhbid0IGNsb2JiZXIgdGhlICJkb250Q2xvYmJlckpTUiIgcmVnaXN0
ZXIgZWl0aGVyLgotICAgICAgICB1c2VkUmVnaXN0ZXJzLnNldChCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmRvbnRDbG9iYmVySlNSKTsKKyAgICAgICAgdXNlZFJlZ2lzdGVycy5zZXQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUik7CiAgICAg
fQogCiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CkBAIC01MjEsNzggKzUyMSw3OCBAQCB2b2lk
IFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1Yklu
Zm8oQ29kZUJsb2NrKiwgVW5saQogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewogICAgIGNhc2Ug
QWNjZXNzVHlwZTo6RGVsZXRlQnlWYWw6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9
IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVl
R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFs
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6
OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lz
dGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2Vs
aW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1
ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsK
KyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFz
ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNS
LnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6
RGVsZXRlQnlJRDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBJbnZhbGlkR1BS
UmVnOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0
SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFn
R1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAg
ICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1IudGFn
R1BSKCk7CiAgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAg
ICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQ
UigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlk
OjpGYXN0UGF0aDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQ
cml2YXRlTmFtZToKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAg
ICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0
dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
ICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1IucGF5
bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAg
YmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7
Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5
VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAg
IHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3Bl
cnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAgaGFzQ29uc3RhbnRJ
ZGVudGlmaWVyID0gZmFsc2U7CiAgICAgICAgIHByb3RvdHlwZUlzS25vd25PYmplY3QgPSBmYWxz
ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6dmFsdWVK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJl
Z2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm90b3R5cGVH
UFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFu
Y2VvZjo6dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAg
ICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpw
cm90b0pTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6dmFs
dWVKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5zdGFuY2VvZjo6dmFsdWVKU1IudGFnR1BSKCk7CiAgICAgICAgIHZhbHVlVGFnR1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5zdGFu
Y2VvZlJlZ2lzdGVyczo6cHJvdG9KU1IudGFnR1BSKCk7CisgICAgICAgIHYucHJvcGVydHlUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJvdG9KU1IudGFnR1BSKCk7
CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWU6IAogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6SGFzUHJpdmF0ZUJyYW5kOiAKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFs
c2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVJbkJ5VmFs
UmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVl
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZh
bDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQ
UiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAg
di5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1Iu
dGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6
cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNj
ZXNzVHlwZTo6SW5CeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwog
ICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2
YWx1ZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnN0dWJJ
bmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6
YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkluQnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnN0dWJJbmZvR1BSOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0g
ICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdH
UFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVz
dWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkluQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkOgpAQCAtNjAwLDY1
ICs2MDAsNjUgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21Vbmxpbmtl
ZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OkdldEJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAg
IHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQ
UiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRH
UFJSZWc7Ci0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnRhZ0dQUigp
OwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdp
dGhUaGlzOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnRoaXNHUFIgPSBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
ICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZFdpdGhUaGlzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OworICAgICAgICByZWdzLnRoaXNHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdp
dGhUaGlzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVl
VGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdH
UFIoKTsKLSAgICAgICAgdi50aGlzVGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OnRoaXNKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2
YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3Vs
dEpTUi50YWdHUFIoKTsKKyAgICAgICAgdi50aGlzVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6
dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQ
dXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFsdWVKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0gQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BSKCk7CisgICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUi50
YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlJZDo6dmFsdWVKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVO
YW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNl
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1IucGF5bG9hZEdQUigpOworICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpGYXN0UGF0
aDo6c3R1YkluZm9HUFI7CiAgICAgICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6OlB1
dEJ5VmFsKQotICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVHUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpwcm9maWxlR1BSOworICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdH
UFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUi50
YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVCcmFuZDoK
ICAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0ZUJyYW5kOgogICAgICAgICBoYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgdmFsdWVHUFIgPSBJbnZhbGlkR1BSUmVn
OwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLmJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1Iu
cGF5bG9hZEdQUigpOworICAgICAgICByZWdzLmJyYW5kR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHZhbHVlVGFnR1BSID0g
SW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFz
ZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnRhZ0dQUigpOworICAgICAgICBi
YXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YmFzZUpTUi50
YWdHUFIoKTsKKyAgICAgICAgdi5icmFuZFRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
cml2YXRlQnJhbmQ6OmJyYW5kSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5k
ZXggMWY2NWVjMDRlMjQ2YWJiZjk5MzA4Y2ViMzQ2MjUwN2ZjMWZmZmE5NS4uNDVmMzQzZjBkZDA1
OTA3ZjA5OTE3ZGIwM2ExZjQxNGRkNjgwMTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTEzNiw0MCArMTM2LDYgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUJvZHkoKQogICAgIEFTU0VSVF9VTlVTRUQoY29tcGlsZWRTcGVjdWxhdGl2
ZSwgY29tcGlsZWRTcGVjdWxhdGl2ZSk7CiB9CiAKLXZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVF
eGNlcHRpb25IYW5kbGVycygpCi17Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHkoKSkgewot
ICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5saW5rKHRoaXMp
OwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0
aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0q
LgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAgICAgICAgYWRkUHRy
KFRydXN0ZWRJbW0zMihtX2dyYXBoLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwot
ICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBt
X2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAg
ICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3Vt
ZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLQot
ICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwotCi0g
ICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotfQotCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0
YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMjczLDEyICsyMzksMTAgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4oKSk7CiAgICAgfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgp
KQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlv
bkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSkpOwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZy
YW1lUm9sbGJhY2suZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZlci5saW5rKG1fZXhjZXB0aW9u
Q2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENU
SVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdFRo
dW5rID0gdm0oKS5nZXRDVElTdHViKG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOwog
ICAgIGF1dG8gdGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KG9zckV4
aXRUaHVuay5jb2RlKCkpOwpAQCAtMzgyLDcgKzM0Niw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBw
ZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgUENUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAgICBjb21waWxlRXhjZXB0aW9uSGFu
ZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAKICAgICAvLyBDcmVhdGUgT1NSIGVu
dHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KQEAgLTQ4NCw3ICs0NDcsNiBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQ
YXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CiAgICAgbV9wY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwg
UENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOjpkZWZhdWx0Q29kZU9yaWdpbigpKTsKICAgICAKLSAg
ICBjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICBsaW5rT1NSRXhpdHMoKTsKICAgICAK
ICAgICAvLyBDcmVhdGUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzIGlmIG5lY2Vzc2FyeS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCBkZWRhNWRlYmFhOWIx
Nzg0OWEyMmYyMDc3YTk0MTU2MDY3Y2YxY2Y3Li45ODQyNzY4MzhkM2U4OTBjNTExMzZlMGEzZDE4
ZWUwYjk3MjQ2YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCkBAIC0zMjMsNyArMzIzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxpbmsoTGlua0J1ZmZl
ciYpOwogICAgIAogICAgIHZvaWQgZXhpdFNwZWN1bGF0aXZlV2l0aE9TUihjb25zdCBPU1JFeGl0
JiwgU3BlY3VsYXRpb25SZWNvdmVyeSopOwotICAgIHZvaWQgY29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCk7CiAgICAgdm9pZCBsaW5rT1NSRXhpdHMoKTsKICAgICB2b2lkIGRpc2Fzc2VtYmxlKExp
bmtCdWZmZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5k
ZXggM2I0Y2ExZDE1NzVkNTBiYmZlMWM0YjdhYjgyZjE5ZWFjOTA2MmI3Zi4uYTkzYTZiYTQxNjE1
ZTA0YTgzN2M5YjljMTM0NzllODRmNTExNzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCkBAIC0xMjgsMjQgKzEyOCwxMiBAQCB2b2lkIGNvbXBpbGUoU3RhdGUm
IHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogCiAgICAgLy8gRW1p
dCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgKnN0YXRlLmV4Y2VwdGlvbkhhbmRsZXIgPSBq
aXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBDQ2FsbEhlbHBl
cnM6Okp1bXAgaGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgVk0qIHZtUHRyID0gJnZtOwogICAg
IGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7
CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoaGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwo
dm1QdHItPmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKICAgICAgICAgfSk7Ci0jZWxzZQotICAgIGppdC5jb3B5Q2FsbGVlU2F2
ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIGppdC5q
dW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKLSAgICBqaXQuYWRkTGlua1Rhc2soCi0gICAgICAg
IFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgbGlua0J1ZmZlci5s
aW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhj
ZXB0aW9uSGFuZGxlcikpOwotICAgICAgICB9KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VV
bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZU
TCwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKaW5kZXggYTZhZmZlMzU5YTkxOTlhNTgwNWUzOWE4YTQwOWEyYTViNTM1ZDBkOS4uMjhi
ZGVlM2JhNzU1MzA2NmU1MzAzNzEzNTc0ODYxNmJkM2I4Y2Y2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCkBAIC03OCwxNyArNzgsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCAmdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxs
QXJpdHlDaGVjayA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSNpZiBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGF1dG8ganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9
IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6Okxlc3NUaGFuLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotI2Vsc2UKLSAgICAgICAgICAg
IGF1dG8gbm9FeGNlcHRpb24gPSBqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhh
bk9yRXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigwKSk7Ci0gICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJh
bWUgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICAgICAgaml0Lmp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgICAgICAgICAgbm9FeGNlcHRpb24ubGluaygmaml0KTsK
LSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogICAgICAgICAgICAgaWYgKEFT
U0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NCh2bS5hZGRyZXNzT2ZF
eGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAtMTExLDExICsxMDEsNyBAQCB2b2lkIGxp
bmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4oY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25D
b25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spKTsKLSNpZiBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoanVtcFRv
RXhjZXB0aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihoYW5kbGVF
eGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1
cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSkpOwot
I2VuZGlmCiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5j
dGlvblB0cjxKSVRUaHVua1B0clRhZz4odm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9y
KS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wcywg
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA3N2E0ZTAzZGQxMjI3Nzc3MzhkNTBkY2Ex
MmZiMDhkYjg1NTJmNWI3Li45ZjJlYTc3MDEyOTgxZWE0YTMwNDZlOGU1N2YxYjRkYTNhMDRkODA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE5
MjAsNDkgKzE5MjAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4
dEluc3RhbmNlTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCiAKLSAgICAvLyBD
aGVja3MgdGhhdCB0aGUgZ2l2ZW4gbGlzdCBvZiBHUFJSZWdzIGFuZCBKU1ZhbHVlUmVncyBkbyBu
b3Qgb3ZlcmxhcC4gVXNlIHRoaXMgaW4gc3RhdGljCi0gICAgLy8gYXNzZXJ0aW9ucyB0byBlbnN1
cmUgdGhhdCByZWdpc3RlciBhbGlhc2VzIGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1h
cCB0byB0aGUgc2FtZQotICAgIC8vIGFyY2hpdGVjdHVyYWwgcmVnaXN0ZXIuCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3Zlcmxh
cChBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwoMCwgYXJncy4uLik7IH0KLQot
cHJpdmF0ZToKLSAgICAvLyBCYXNlIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCkgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgLy8gR1BSUmVnIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50
NjRfdCB1c2VkLCBSZWdpc3RlcklEIGdwciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAg
dW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGdwcik7Ci0gICAgICAgIGlmICh1
c2VkICYgbWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG5v
T3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0KLQotICAgIC8vIEpTVmFs
dWVSZWdzIGNhc2UKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1c2VkLCBKU1ZhbHVlUmVncyBq
c3IsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1hc2sgPSBub092ZXJs
YXBJbXBsUmVnTWFzayhqc3IucGF5bG9hZEdQUigpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICBtYXNrIHw9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci50YWdHUFIoKSk7Ci0jZW5k
aWYKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7Ci0gICAg
fQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub092ZXJsYXBJbXBsUmVnTWFzayhS
ZWdpc3RlcklEIGdwcikKLSAgICB7Ci0gICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQUlJlZykK
LSAgICAgICAgICAgIHJldHVybiAwVUxMOwotICAgICAgICB1bnNpZ25lZCBiaXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZ3ByKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwgc2l6ZW9m
KHVpbnQ2NF90KSAqIENIQVJfQklUKTsKLSAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OwotICAg
IH0KLQogcHJvdGVjdGVkOgogICAgIHZvaWQgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXJJbXBsKEdQUlJlZyBjYWxsZWVTYXZlc0J1ZmZlcik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xY2M0Njk4NTcwOTM2YzUyNzUyNzAyZjRkM2ZiOWU5ZTVlMzUwNGIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oCkBA
IC0wLDAgKzEsNDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
R1BSSW5mby5oIgorI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK25hbWVzcGFjZSBCYXNlbGluZUpJVFJlZ2lzdGVycyB7CisKK25hbWVzcGFjZSBDYWxsIHsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAg
fTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxlZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07Cisg
ICAgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
fQorCituYW1lc3BhY2UgQ2hlY2tUcmFwcyB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsKK30KKworbmFtZXNwYWNlIEVudGVy
IHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGxvY2Fsc1RvSW5pdEdQUiB7IEdQUkluZm86OnJl
Z1QxIH07Cit9CisKK25hbWVzcGFjZSBJbnN0YW5jZW9mIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BS
MiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjph
cmd1bWVudEdQUjEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5m
bzo6bm9uQXJnR1BSMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBHUFJJ
bmZvOjpub25BcmdHUFIxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7CisjaWYgQ1BVKE1JUFMpCisgICAgICAgIEdQUklu
Zm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyCisjZWxzZQorICAgICAgICBK
U1JJbmZvOjpqc1JlZ1QzMgorI2VuZGlmCisgICAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvdG9KU1IgeyBKU1JJbmZvOjpqc1JlZ1Q1NCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDFHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aDJHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAodmFsdWVKU1IsIHByb3RvSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaDFHUFIsIHNjcmF0
Y2gyR1BSKSk7Cit9CisKK25hbWVzcGFjZSBKRmFsc2UgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisKK25hbWVzcGFjZSBKVHJ1
ZSB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MzIgfTsKK30KKworbmFtZXNwYWNlIFRocm93IHsKKyAgICB1c2luZyBTbG93T3BlcmF0aW9uID0g
ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3cpOworCisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgeyBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpIH07Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRocm93blZhbHVlSlNSIHsgcHJlZmVycmVkQXJndW1l
bnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAodGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZv
ciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGdsb2Jh
bE9iamVjdEdQUiwgdGhyb3duVmFsdWVKU1IpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBv
cGVyYXRpb24iKTsKK30KKworbmFtZXNwYWNlIFJlc29sdmVTY29wZSB7CisgICAgY29uc3RleHBy
IEdQUlJlZyBtZXRhZGF0YUdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQ
UlJlZyBzY29wZUdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1
aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KKworbmFtZXNwYWNlIEdldEZyb21TY29w
ZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07
CisgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Cisg
ICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29k
ZU9mZnNldEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKK30KKworbmFt
ZXNwYWNlIFB1dFRvU2NvcGUgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKK30KKworbmFtZXNwYWNlIEdldEJ5SWQgewor
ICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9
OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFj
ZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5m
bzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNS
IHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGRv
bnRDbG9iYmVySlNSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBT
bG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2Vu
ZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVjb2RlT2Zm
c2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8g
Q1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBj
YWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgR2V0QnlJZFdp
dGhUaGlzIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0
aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
dGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cisj
ZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBG
YXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
KyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAg
fQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQ
YXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86
OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpT
UiwgdGhpc0pTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsK
KyAgICB9Cit9CisKK25hbWVzcGFjZSBHZXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQg
b24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJl
c3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
KyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9w
ZXJ0eUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJl
Z1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7
IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAg
ICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgYnl0ZWNv
ZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxs
IHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNS
LCBwcm9wZXJ0eUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworI2lm
IFVTRShKU1ZBTFVFNjQpCituYW1lc3BhY2UgRW51bWVyYXRvckdldEJ5VmFsIHsKKyAgICBzdGF0
aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdU
MSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5m
bzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QyIH07CisgICAgLy8gV2UgcmVseSBvbiB0aGlzIHdoZW4gbGlua2luZyBhIENv
ZGVCbG9jayBhbmQgaW5pdGlhbGl6aW5nIHJlZ2lzdGVycyBmb3IgYSBHZXRCeVZhbCBTdHViSW5m
by4KKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0QnlWYWw6OmJhc2VKU1IpOworICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlWYWw6OnByb3BlcnR5SlNSKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHJlc3VsdEpTUiA9PSBHZXRCeVZhbDo6cmVzdWx0SlNSKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9H
UFIpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgeyBHUFJJbmZvOjpy
ZWdUMyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyIHsgR1BSSW5mbzo6
cmVnVDQgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyB7IEdQUkluZm86
OnJlZ1Q1IH07Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFB1dEJ5SWQgeworICAgIC8vIFJlZ2lz
dGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Cisj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25s
eSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0
ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAi
UmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChi
YXNlSlNSLnBheWxvYWRHUFIoKSwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBz
Y3JhdGNoMkdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xv
dyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQ
UkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
dmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAi
UmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOwor
ICAgIH0KK30KKworbmFtZXNwYWNlIFB1dEJ5VmFsIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBv
biBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OworI2Vu
ZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFz
dFBhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDQgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3Ig
RGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAg
bmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDUKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhIGJp
dCBzaG9ydCBvbiByZWdpc3RlcnMgb24gQVJNX1RIVU1CMiwgYnV0IHdlIGNhbiBqdXN0IGFib3V0
IGdldCBhd2F5IHdpdGggdGhpcworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQVJNdjc6
OnNjcmF0Y2hSZWdpc3RlcigpCisjZWxzZSAvLyBPdGhlciBKU1ZBTFVFMzJfNjQKKyAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUOAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBnbG9iYWxPYmplY3RHUFIgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAg
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpT
UiwgcHJvZmlsZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSKSwgIlJlcXVpcmVk
IGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIGdsb2JhbE9iamVj
dEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24i
KTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBJbkJ5SWQgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR2V0QnlJZDo6YmFzZUpTUiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFIgfTsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHZXRCeUlkOjpGYXN0UGF0aDo6c2Ny
YXRjaEdQUiB9OworfQorCituYW1lc3BhY2UgSW5CeVZhbCB7CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6
cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9
OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9
OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5k
aWYKKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gR2V0QnlWYWw6OmJhc2VKU1IpOworICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlKU1IgPT0gR2V0QnlWYWw6OnByb3BlcnR5SlNSKTsKK30K
KworbmFtZXNwYWNlIERlbEJ5SWQgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFz
dCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMy
IH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVz
cGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1Ig
eyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJs
YXAoYmFzZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJ
QyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVz
cGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
IHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQ
UiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoYmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQ
UiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0
byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIERlbEJ5VmFsIHsKKyAg
ICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6
cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyNlbmRpZgorCisgICAg
Ly8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAg
ICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZh
bHVlSlNSIH07CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsK
KyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0
eUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOwor
ICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBT
bG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBH
UFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1v
ZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQo
bm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1Yklu
Zm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNh
bGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSBQcml2YXRlQnJh
bmQgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR2V0QnlWYWw6OmJhc2VK
U1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUiB9OyAvLyBSZXF1
aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5rCisKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGgg
eworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYK
KyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgYnJhbmRKU1IsIHN0dWJJ
bmZvR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICBuYW1lc3BhY2Ug
U2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUiB9OyAvLyBSZXF1aXJlZCBieSBz
aGFyZWQgc2xvdyBwYXRoIHRodW5rCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSIH07IC8vIFJlcXVpcmVkIGJ5IHNo
YXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgYnJhbmRKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJl
ZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEJh
c2VsaW5lSklUUmVnaXN0ZXJzCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRl
eCAwNGU4YWZkZTQxYzI2OGFkOWNmMmViMWM1ZDNjZjA0MDk4Mjg5MzVlLi43MTZjZDNjNGI2ZWVh
ZDU2MGNiMDY4OTAzZDQ4YzIwMTJlOGVmNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC05NCw2ICs5NSw0MyBAQCB2b2lkIENDYWxsSGVscGVyczo6ZW1pdEpJVENvZGVPdmVyKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZQogICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgTm9QdHJUYWcsIGRlc2NyaXB0aW9uKTsKIH0KIAorc3RhdGljX2Fz
c2VydCghKChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCArIDIgKiBzaXplb2YoQ1BVUmVn
aXN0ZXIpKSAlIDE2KSwgIlN0YWNrIG11c3QgYmUgYWxpZ25lZCBhZnRlciBDVEkgdGh1bmsgZW50
cnkiKTsKKwordm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKCkKK3sKKyAg
ICAvLyBTdGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworICAgIHRhZ1JldHVy
bkFkZHJlc3MoKTsKKyNpZiBDUFUoWDg2XzY0KQorICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplYnAp
OyAvLyByZXR1cm4gYWRkcmVzcyBwdXNoZWQgYnkgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24KKyNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwdXNoUGFpcihm
cmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAg
ZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorICAgIC8vIE1ha2Ug
ZW5vdWdoIHNwYWNlIG9uIHRoZSBzdGFjayB0byBwYXNzIGFyZ3VtZW50cyBpbiBhIGNhbGwKKyAg
ICBpZiBjb25zdGV4cHIgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBz
dWJQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworfQorCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rRXBp
bG9ndWUoKQoreworICAgIC8vIFJlc2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAv
LyBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOyAvLyBSZXR1cm4gYWRkcmVzcyBsZWZ0IG9u
IHN0YWNrCisjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAgIHBvcFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAg
ICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwor
I2Vsc2UKKyMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlmCit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGFmYzVkY2M4OTllNzU2MzM5YTgx
MTYzNGUyM2MyMTdiZGExY2NmNjQuLmU3YjhkZDFiNWNlZjc3MmRiMjYxOTVlZmY0NTBiOTJjZDdk
ZjViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtODUz
LDE0NSArODUzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZW1pdEpJVENvZGVPdmVy
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2NvcGVkTGFt
YmRhPHZvaWQoQ0NhbGxIZWxwZXJzJik+LCBjb25zdCBjaGFyKik7CiAKLXByaXZhdGU6Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBz
dGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+Ojphcml0eSA+IEFyZ051bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBzaXplb2YodHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxBcmdOdW0+KTsKLSAgICB9Ci0KLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdO
dW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEFyZ3MuLi4gcmVz
dCkKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUs
IEFyZ051bSAtIEluZGV4PigpIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2Ug
YXJndW1lbnRzIik7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzIHsgZmlyc3QgfTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3Rl
eHByCi0gICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIElu
ZGV4IC0gMT4ocmVzdC4uLik7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdO
dW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJlZyBzZWNv
bmQsIEdQUlJlZyB0aGlyZCwgQXJncy4uLiByZXN0KQotICAgIHsKLSAgICAgICAgY29uc3RleHBy
IHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051
bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0g
OCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAg
aWYgY29uc3RleHByICghSW5kZXgpIHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9m
Q3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRml0cyBpbiBzaW5nbGUgR1BS
Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJu
aW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0odGhpcmQp
OyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAg
ICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8gc3Rh
cnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEKLSAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyB0aGlyZCwgc2Vjb25kIH07Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVu
IHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywg
c28gaXQgZG9lcyBub3QgbWF0dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdz
IHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAg
ICAgICAgIC8vIEZpdHMgaW4gc2luZ2xlIEdQUgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4o
c2Vjb25kLCB0aGlyZCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0ID09
IEdQUkluZm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIy
ICYmIHRoaXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgICAgIC8v
IFdpZGUgYXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8gc3RhcnQgd2l0aCBldmVuIHJl
Z2lzdGVyIG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEsIGJ1dCByZXVzZSBpdCBsYXRlcgot
ICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5k
ZXggLSAxPihmaXJzdCwgcmVzdC4uLik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3Vt
ZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVyCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRl
eCAtIDE+KHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0s
IHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJlZyBzZWNvbmQp
Ci0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXpl
T2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19h
c3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxh
cmdlIGFyZ3VtZW50cyIpOwotICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgYW5kICdzZWNv
bmQnIGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQgb24gdGhl
IHN0YWNrIGFueXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAg
ICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0
ZXhwcgotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmly
c3QpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVS
ZWdzIHsgc2Vjb25kLCBmaXJzdCB9OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
Y29uc3RleHByKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4
IC0gMT4oc2Vjb25kKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJlZ2lzdGVycyIpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFy
Z3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJz
dCkKLSAgICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNp
emVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUg
bGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBpcyBuZXZl
ciBhbiBhcmd1bWVudCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQgb24gdGhlIHN0YWNrIGFu
eXdheQotICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0Uo
Ik91dCBvZiByZWdpc3RlcnMiKTsKLSAgICB9Ci0jZW5kaWYKLQotcHVibGljOgotICAgIC8vIFNl
ZSBwcmVmZXJyZWRBcmd1bWVudEdQUiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbi4g
VGhpcyB2ZXJzaW9uIHJldHVybnMgYSBKU1ZhbHVlUmVncwotICAgIC8vIGluc3RlYWQgb2YgYSBH
UFIsIHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82
NCBhIEpTVmFsdWVSZWdzIGlzCi0gICAgLy8gcmVxdWlyZWQgdG8gaG9sZCBhIDY0LWJpdCB3aWRl
IGZ1bmN0aW9uIGFyZ3VtZW50LCBzbyB1c2UgdGhpcyBpbiBwYXJ0aWN1bGFyIHdoZW4gcGFzc2lu
ZyBhCi0gICAgLy8gSlNWYWx1ZS9FbmNvZGVkSlNWYWx1ZSBiZSBjb21wYXRpYmxlIHdpdGggYm90
aCBKU1ZBTFVFNjQgYW4gSlNWQUxVRTMyXzY0IHBsYXRmb3JtcywgYW5kIHVzZQotICAgIC8vIHBy
ZWZlcnJlZEFyZ3VtZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVlUmVncz4KLSAgICBwcmVmZXJyZWRBcmd1bWVudEpT
UigpCi0gICAgewotI2lmIFVTRShKU1ZBTFVFNjQpCi0jaWYgIU9TKFdJTkRPV1MpCi0gICAgICAg
IHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1
bWVudEdQUjQsIEdQUkluZm86OmFyZ3VtZW50R1BSNSk7Ci0jZWxzZQotICAgICAgICByZXR1cm4g
cGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwK
LSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6bm9uQXJnR1BSMCwg
ICBHUFJJbmZvOjpub25BcmdHUFIxKTsKLSNlbmRpZgotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSNpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLy8gVGhlIGxhc3QgcmVnaXN0ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBwdXNoZWQgb250byB0aGUgc3RhY2sgZm9yIGNhbGxzLCBzbyB3ZSBjYW4g
dXNlCi0gICAgICAgIC8vIHRoZSBsaW5rIHJlZ2lzdGVyIGFzIGEgdGVtcG9yYXJ5LgotICAgICAg
ICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVn
VDcsICAgICAgICBHUFJJbmZvOjpyZWdUNiwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCAg
ICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBBUk1SZWdpc3RlcnM6OmxyKTsKLSNlbGlmIENQ
VShNSVBTKQotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAot
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEs
IEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BS
MywgR1BSSW5mbzo6cmVnVDIsICAgICAgICBHUFJJbmZvOjpyZWdUMywKLSAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUsICAgICAgICBHUFJJbmZvOjpyZWdU
Nik7Ci0jZW5kaWYKLSNlbmRpZgotICAgIH0KLQotICAgIC8vIENvbXB1dGVzIChzdGF0aWNhbGx5
LCBhdCBjb21waWxhdGlvbiB0aW1lKSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIgYW4gYXJn
dW1lbnQgc2hvdWxkIGJlCi0gICAgLy8gbG9hZGVkIGludG8gZm9yIGEgZnVuY3Rpb24gY2FsbC4g
VGhpcyB5aWVsZHMgdGhlIEFCSSBzcGVjaWZpYyBhcmd1bWVudCByZWdpc3RlcnMgZm9yIHRoZQot
ICAgIC8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRl
bXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKLSAgICAvLyBhcmd1bWVudHMuIFRo
ZSBpZGVhIGlzIHRoYXQgJ3NldHVwQXJndW1lbnRzJyB3aWxsIGhhdmUgdG8gZG8gdGhlIG1pbmlt
YWwgYW1vdW50IG9mIHdvcmsgd2hlbgotICAgIC8vIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB0byBo
b2xkIHRoZSBhcmd1bWVudHMsIHNvIGlmIHlvdSBhcmUgbG9hZGluZyBtb3N0IGFyZ3VtZW50cyBm
cm9tIG1lbW9yeQotICAgIC8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0
aGUgc21hbGxlc3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkg
PiBBcmdOdW0pLCBHUFJSZWc+Ci0gICAgcHJlZmVycmVkQXJndW1lbnRHUFIoKQotICAgIHsKLSNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVy
YXRpb25UeXBlLCBBcmdOdW0+KCkgPD0gNCwgIkFyZ3VtZW50IGRvZXMgbm90IGZpdCBpbiBHUFIi
KTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gcHJlZmVycmVkQXJndW1lbnRKU1I8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtPigpLnBheWxvYWRHUFIoKTsKLSAgICB9CisgICAgdm9pZCBlbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOworICAgIHZvaWQgZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmNwcAppbmRleCA4MTgwZDZhYmE1NzQwNDAxYTJmY2FiMmQ1YTFmZGQ1
M2M5YTIwNmEzLi4xYzc0ZjFmOTgyZmM1MDk5NmQ4ZTFmZWRiMDFmZTNhYmJkN2FkODY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkJhc2Vs
aW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKQEAgLTk1
LDkgKzk2LDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNy
ZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGNvbnMKICAgICAgICAgICAgICAgICBEYXRh
Rm9ybWF0SlMpOwogICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHNodWZmbGVEYXRhLmNh
bGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVl
SlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICBzaHVmZmxlRGF0YS5jYWxsZWUg
PSBWYWx1ZVJlY292ZXJ5OjppbkdQUihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVl
SlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnRhZ0dQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOworICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVl
UmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnRh
Z0dQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIo
KSk7CiAjZW5kaWYKICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoJlJl
Z2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsK
ICAgICBzaHVmZmxlRGF0YS5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAppbmRleCA2MGE1YmVlMTViODIyMDc2NDY1MTIwZGY3NGU5NDA4ZDc4YmM3Y2Q3Li4wMDIy
YmQ5Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0NzgxZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25UcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk3Niw2ICs5NzgsMjExIEBAIGlubGluZSBOb1Jlc3Vs
dFRhZyBleHRyYWN0UmVzdWx0KE5vUmVzdWx0VGFnKSB7IHJldHVybiBOb1Jlc3VsdDsgfQogLy8g
V2UgdXNlIHRoaXMgaGFjayB0byBnZXQgdGhlIEdQUkluZm8gZnJvbSB0aGUgR1BSUmVnIHR5cGUg
aW4gdGVtcGxhdGVzIGJlY2F1c2Ugb3VyIGNvZGUgaXMgYmFkIGFuZCB3ZSBzaG91bGQgZmVlbCBi
YWQuLgogY29uc3RleHByIEdQUkluZm8gdG9JbmZvRnJvbVJlZyhHUFJSZWcpIHsgcmV0dXJuIEdQ
UkluZm8oKTsgfQogCitjbGFzcyBOb092ZXJsYXBJbXBsIHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG5vT3ZlcmxhcEltcGxSZWdNYXNrKEdQUlJlZyBncHIpCisgICAgeworICAgICAg
ICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXR1cm4gMFVMTDsKKyAg
ICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdwcik7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGJpdCA8IGNvdW50T2ZCaXRzPHVpbnQ2NF90Pik7CisgICAgICAgIHJl
dHVybiAxVUxMIDw8IGJpdDsKKyAgICB9CisKKyAgICAvLyBCYXNlIGNhc2UKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJ
bXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBHUFJSZWcgY2FzZQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5v
T3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgR1BSUmVnIGdwciwgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGdwcik7Cisg
ICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOworICAgIH0KKwor
ICAgIC8vIEpTVmFsdWVSZWdzIGNhc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIEpT
VmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWFz
ayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BSKCkpOworI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCisgICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnRhZ0dQ
UigpKTsKKyNlbmRpZgorICAgICAgICBpZiAodXNlZCAmIG1hc2spCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQgfCBtYXNrLCBhcmdz
Li4uKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICAvLyBFbnRyeSBwb2ludAorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbnRyeShBcmdz
Li4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwoMCwgYXJncy4uLik7IH0KK307CisKKy8v
IENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJlZ3MgYW5kIEpTVmFsdWVSZWdzIGRv
IG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKKy8vIGFzc2VydGlvbnMgdG8gZW5zdXJl
IHRoYXQgcmVnaXN0ZXIgYWxpYXNlcyBsaXZlIGF0IHRoZSBzYW1lIHBvaW50IGRvIG5vdCBtYXAg
dG8gdGhlIHNhbWUKKy8vIGFyY2hpdGVjdHVyYWwgcmVnaXN0ZXIuCit0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KK2NvbnN0ZXhwciBib29sIG5vT3ZlcmxhcChBcmdzLi4uIGFyZ3MpIHsgcmV0
dXJuIE5vT3ZlcmxhcEltcGw6OmVudHJ5KGFyZ3MuLi4pOyB9CisKK2NsYXNzIFByZWZlcnJlZEFy
Z3VtZW50SW1wbCB7CisgICAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFi
bGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwg
c2l6ZV90PiBzaXplT2ZBcmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemVvZih0eXBlbmFt
ZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPEFy
Z051bT4pOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdO
dW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
aWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiByZXN0KQorICAgIHsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCkgPD0gOCwg
IkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAgICAgaWYg
Y29uc3RleHByICghSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBmaXJz
dCB9OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8v
IE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgIHJldHVybiBw
aWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihyZXN0Li4uKTsKKyAgICAg
ICAgfQorICAgIH0KKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdO
dW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
aWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCwgR1BSUmVnIHRoaXJkLCBBcmdzLi4u
IHJlc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcg
PSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFu
ZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewor
ICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAg
ICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAg
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlyZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1
ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6
YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgdGhpcmQg
PT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAgICAgICAgLy8gV2lkZSBhcmd1
bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVt
YmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1l
bnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBzZWNvbmQsIGZpcnN0IH07CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIoc2l6
ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgLy8gRml0cyBpbiBzaW5nbGUg
R1BSCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdh
cm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9w
ZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNvbmQsIHRoaXJkLCByZXN0Li4uKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYm
IHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJn
dW1lbnRHUFIzKSB7CisgICAgICAgICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4g
R1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFy
Z3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVyCisgICAgICAgICAgICAgICAgcmV0dXJuIHBp
Y2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KGZpcnN0LCByZXN0Li4uKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVy
IGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhl
IHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlj
a0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4odGhpcmQsIHJlc3QuLi4pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWduZWQgSW5kZXggPSBBcmdOdW0s
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNr
SlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhw
ciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdO
dW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50QXJnIDw9
IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7CisgICAgICAg
IC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3NlY29uZCcgYXJlIG5ldmVyIGFyZ3VtZW50IHJl
Z2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNpemVPZkN1
cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAv
LyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBzZWNvbmQsIGZpcnN0IH07Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFy
ZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3
aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNr
SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNvbmQpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lU
SF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtLCB1bnNpZ25l
ZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0KQorICAgIHsKKyAgICAgICAgY29uc3Rl
eHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFy
Z051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcg
PD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAg
ICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5ldmVyIGFuIGFyZ3VtZW50IHJlZ2lzdGVyLCBv
ciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShmaXJzdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJlZ2lzdGVycyIpOworICAg
IH0KKyNlbmRpZgorCitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIEFyZ051bT4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lm
X3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEpTVmFs
dWVSZWdzPgorICAgIHByZWZlcnJlZEFyZ3VtZW50SlNSKCkKKyAgICB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9u
VHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJ
bmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgR1BSSW5mbzo6YXJndW1l
bnRHUFI1KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFy
Z051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAorICAgICAgICAgICAgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCAgIEdQUkluZm86Om5vbkFyZ0dQUjEpOwor
I2VuZGlmCisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2lmIENQVShBUk1fVEhVTUIyKQorICAg
ICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBndWFyYW50ZWVkIHRvIGJlIHB1c2hlZCBvbnRv
IHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNhbiB1c2UKKyAgICAgICAgLy8gdGhlIGxpbmsg
cmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCisgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlv
blR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAorICAgICAgICAgICAgR1BS
SW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUNywgICAgICAgIEdQUkluZm86OnJlZ1Q2
LAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAg
ICAgIEFSTVJlZ2lzdGVyczo6bHIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgICAgIHJldHVybiBw
aWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUMiwgICAgICAg
IEdQUkluZm86OnJlZ1QzLAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAgICBHUFJJ
bmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJlZ1Q2KTsKKyNlbmRpZgorI2VuZGlmCisgICAg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051
bT4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEdQUlJlZz4KKyAgICBwcmVmZXJyZWRB
cmd1bWVudEdQUigpCisgICAgeworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKSA8PSA0LCAiQXJndW1l
bnQgZG9lcyBub3QgZml0IGluIEdQUiIpOworI2VuZGlmCisgICAgICAgIHJldHVybiBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkucGF5bG9hZEdQUigpOworICAg
IH0KK307CisKKy8vIENvbXB1dGVzIChzdGF0aWNhbGx5LCBhdCBjb21waWxhdGlvbiB0aW1lKSwg
dGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIgYW4gYXJndW1lbnQgc2hvdWxkIGJlCisvLyBsb2Fk
ZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxsLiBUaGlzIHlpZWxkcyB0aGUgQUJJIHNwZWNpZmlj
IGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhlCisvLyBpbml0aWFsIGFyZ3VtZW50cyBhcyBhcHBy
b3ByaWF0ZSwgdGhlbiBzdWl0YWJsZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzIGZvciB0aGUgcmVtYWlu
aW5nCisvLyBhcmd1bWVudHMuIFRoZSBpZGVhIGlzIHRoYXQgJ3NldHVwQXJndW1lbnRzJyB3aWxs
IGhhdmUgdG8gZG8gdGhlIG1pbmltYWwgYW1vdW50IG9mIHdvcmsgd2hlbgorLy8gdXNpbmcgdGhl
c2UgcmVnaXN0ZXJzIHRvIGhvbGQgdGhlIGFyZ3VtZW50cywgc28gaWYgeW91IGFyZSBsb2FkaW5n
IG1vc3QgYXJndW1lbnRzIGZyb20gbWVtb3J5CisvLyBhbnl3YXksIHVzaW5nIHRoZXNlIHJlZ2lz
dGVycyB5aWVsZHMgdGhlIHNtYWxsZXN0IGNvZGUgcmVxdWlyZWQgZm9yIGEgY2FsbC4KK3RlbXBs
YXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Citjb25zdGV4cHIg
c3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4g
QXJnTnVtKSwgR1BSUmVnPgorcHJlZmVycmVkQXJndW1lbnRHUFIoKQoreworICAgIHJldHVybiBQ
cmVmZXJyZWRBcmd1bWVudEltcGw6OnByZWZlcnJlZEFyZ3VtZW50R1BSPE9wZXJhdGlvblR5cGUs
IEFyZ051bT4oKTsKK30KKworLy8gU2VlIHByZWZlcnJlZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVy
cG9zZSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIHZlcnNpb24gcmV0dXJucyBhIEpTVmFsdWVSZWdz
CisvLyBpbnN0ZWFkIG9mIGEgR1BSLCB3aGljaCBvbiBKU1ZBTFVFNjQgYXJlIGVxdWl2YWxlbnQs
IGJ1dCBvbiBKU1ZBTFVFMzJfNjQgYSBKU1ZhbHVlUmVncyBpcworLy8gcmVxdWlyZWQgdG8gaG9s
ZCBhIDY0LWJpdCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50LCBzbyB1c2UgdGhpcyBpbiBwYXJ0aWN1
bGFyIHdoZW4gcGFzc2luZyBhCisvLyBKU1ZhbHVlL0VuY29kZWRKU1ZhbHVlIHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBib3RoIEpTVkFMVUU2NCBhbiBKU1ZBTFVFMzJfNjQgcGxhdGZvcm1zLCBhbmQg
dXNlCisvLyBwcmVmZXJyZWRBcmd1bWVudEdQUiB3aGVuIHBhc3NpbmcgaG9zdCBwb2ludGVycy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Citjb25z
dGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFy
aXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CitwcmVmZXJyZWRBcmd1bWVudEpTUigpCit7Cisg
ICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVycmVkQXJndW1lbnRKU1I8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYzY0
ZGRlZjIzZDRiMmQ2MjRmYjczNDU5ZjA1NDdhZjU3ODg5NDY5Zi4uNTE1Yjc5NmI4YWIzODk3ZmZh
ZDk4MjJiMDQyNWVlY2JiMDU0ZTA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MTY4LDcgKzE2OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNkZWZpbmUgREVGSU5FX1NMT1df
T1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAgICAgICAgaWYgKG1fYnl0ZWNv
ZGVJbmRleCA+PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsgXAotICAgICAgICAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF8j
I25hbWUpOyBcCisgICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOyBc
CiAgICAgICAgIH0gXAogICAgICAgICBORVhUX09QQ09ERV9JTl9NQUlOKG9wXyMjbmFtZSk7IFwK
QEAgLTE5MCwxNSArMTkwLDE1IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKIAogI2RlZmluZSBERUZJ
TkVfU0xPV0NBU0VfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBvcF8jI25hbWU6IHsgXAotICAg
ICAgICBlbWl0U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgc2xvd19wYXRo
XyMjbmFtZSk7IFwKKyAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChpdGVyLCBzbG93X3BhdGhfIyNu
YW1lKTsgXAogICAgICAgICBicmVhazsgXAogICAgIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93Q2Fz
ZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQordm9pZCBK
SVQ6OmVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
ciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc3R1Yik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzdHVi
KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC02NTcsOSArNjU3LDYgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X1NMT1dfT1Aoc3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5zdHJp
Y3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoZ2V0X3Byb3RvdHlwZV9vZikK
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9T
TE9XX09QKHJlc29sdmVfc2NvcGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NM
T1dfT1AoY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUCh0b19wcm9w
ZXJ0eV9rZXkpCiAgICAgICAgIGRlZmF1bHQ6CkBAIC04NjAsOSArODU3LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZm
b3J0KQogICAgICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVsOyAvLyBOZXZlciByZXF1aXJl
IGFyaXR5IGZpeHVwLgogCiAgICAgQVNTRVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKLSAgICAK
LSAgICBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7Ci0gICAgCisKICAgICBpZiAo
bV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFi
ZWwoKSk7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShsYWJlbCgp
LCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwpAQCAtOTE0
LDEyICs5MDksMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0jaWYg
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0
eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9j
YXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENh
bGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNl
cHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtKCku
Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHJl
Y29yZCA6IG1fbmVhckp1bXBzKSB7CiAgICAgICAgIGlmIChyZWNvcmQudGFyZ2V0KQpAQCAtMTA0
MCwzNSArMTAzMyw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0CiAgICAgcmV0dXJuIGZpbmFs
aXplT25NYWluVGhyZWFkKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKSB7
Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmxpbmsodGhp
cyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBW
TSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2Zh
ckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwot
ICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkgewotICAgICAgICBt
X2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAgIGNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0KLSAgICAg
ICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3Vt
ZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSgpKTsKLSAg
ICAgICAgbV9mYXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChjYWxsKE9wZXJhdGlvblB0clRh
ZyksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9u
SGFuZGxlcikpKTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9
Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklUOjpkb01h
aW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKQogewogICAgIC8vIFRoaXMgZW5zdXJl
cyB0aGF0IHdlIGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4g
cGVyZm9ybWluZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9ucyBmb3Igb3BfcHJvZmlsZV90eXBlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODdjZTlkYzU5ZTFkMmU2OGNhZjg3NWMxNzY1Y2Fj
NDk1MTJiODBkNC4uYzI2NWNjYzA0Nzk4N2JmOWM3NzQ3ODgyNDFiZTA3MjFhMGE2NWQxZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5hcHBl
bmQoZW1pdEV4Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotCiAgICAgICAgIHZvaWQgYWR2YW5j
ZVRvTmV4dENoZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dUb0hvdEZvckNo
ZWNrcG9pbnQoSnVtcCk7CiAgICAgICAgIHZvaWQgc2V0RmFzdFBhdGhSZXN1bWVQb2ludCgpOwpA
QCAtNTUzLDcgKzU1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGNv
ZGVUeXBlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4KLSAgICAgICAgdm9pZCBlbWl0
X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IE9w
Y29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdF9lbnVt
ZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVuY3Rp
b25UeXBlKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25f
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0LDcgKzYxMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF90b19zY29wZShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAotICAg
ICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CisgICAgICAgIHZvaWQg
ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1Bh
dGhGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAt
NjIyLDcgKzYyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZShWaXJ0dWFsUmVnaXN0
ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5T3JC
cmFuZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhhc1ByaXZhdGVTbG93KFZpcnR1
YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHksIEFjY2Vzc1R5cGUpOwor
ICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlKTsKIAogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0TmV3RnVuY0NvbW1vbihjb25z
dCBJbnN0cnVjdGlvbiopOwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVy
bkZyb21CYXNlbGluZUdlbmVyYXRvcihWTSYpOwogCiAgICAgcHJpdmF0ZToKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgLy8gVGh1bmsgZ2VuZXJhdG9ycy4KLSAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxf
YnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
Jik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOwot
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKKyAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
Jik7CisKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsKLQotICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5k
bGVyR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKICAgICAgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfdGhyb3dfaGFu
ZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7CiAK
LSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRodW5rSXNVc2VkRm9yT3BHZXRGcm9tU2Nv
cGUoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEds
b2JhbFZhciBiZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGVtaXQgaW5saW5lIHRoYW4g
dXNlIGEgdGh1bmsuCi0gICAgICAgICAgICAvLyBSZXNvbHZlZENsb3N1cmVWYXIgYW5kIE1vZHVs
ZVZhciBiZWNhdXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3aXRoIG9wX2dldF9mcm9tX3Nj
b3BlLgotICAgICAgICAgICAgcmV0dXJuICEocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJl
c29sdmVUeXBlID09IFJlc29sdmVkQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVW
YXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2Vu
ZXJhdG9yKFZNJik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0
X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNs
b3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfZnJvbV9zY29wZUdl
bmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mKTsKICAgICAgICAg
dGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAg
ICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0m
KTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZh
bHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKQEAgLTcxOCw5
ICs3MDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4pOwogICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2soQWRk
cmVzcyk7Ci0jaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJu
VHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKLSNlbmRpZgogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25F
eGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVl
UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4sIFZpcnR1YWxSZWdpc3Rl
ciByZXN1bHQpOwogICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwpAQCAtNzYzLDcg
Kzc0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC8vIHg2NCBXaW5kb3dzIGNh
bm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4gdHlwZSBpcyBsYXJnZXIgdGhh
biA2NCBiaXRzLgogICAgICAgICAgICAgaWYgY29uc3RleHByIChpczY0Qml0VHlwZTx0eXBlbmFt
ZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZT46OnZhbHVlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNs
b3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAgICAgICAgICAgdXBkYXRlVG9wQ2FsbEZy
YW1lKCk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKKyAgICAgICAgICAgIGV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgICAgICAgICByZXR1cm4gY2FsbDsKICAgICAgICAgfQogI2Vsc2UgLy8g
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDc2ZTA2ODlmYzE5NTBlNDU1MzE0NjQ3ZDU0OTcyNjA4
NmYyNDJhZDkuLmY0MjYwNzRmNDViYWY0ZmM2MGM4NTI4NWQwZGZjYjBjMWE3NTVlYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtNDUxLDE5ICs0
NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIGpzUmVnVDEw
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKICNl
bHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IElu
c3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgp
OwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wb3coY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wb3co
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Bvdyk7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfcG93KTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5KCkpOwogICAgICAgICBBU1NF
UlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAgICAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kaXYp
OworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9k
aXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2NjNDc4ZmY0N2ZhZGE3MWVjOWRjMThmYWQx
ZDM0NTU0NTY5YjUuLmM2OGU0N2VlOWM4OGIxNmU4MTYxNGZkYzhkY2EwYzYwYzQyYzI4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5oIgogI2lu
Y2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVTaHVmZmxlci5oIgpA
QCAtMTUzLDcgKzE1NCw3IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVj
b2RlKQogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5jaDMyKEFib3ZlLCByZWdUMywgcmVnVDIp
OwogICAgIHN0b3JlMzIocmVnVDIsIEFkZHJlc3MocmVnVDAsIENhbGxMaW5rSW5mbzo6b2Zmc2V0
T2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSk7CiAgICAgbm90QmlnZ2VzdC5saW5r
KHRoaXMpOwotICAgIAorCiAgICAgLy8gSW5pdGlhbGl6ZSAndGhpcycuCiAgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBqc1JlZ1QxMDsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHRoaXNWYWx1ZSwgdGhpc0pTUik7CkBAIC0xOTYsMTEgKzE5NywxMSBAQCB2b2lkIEpJVDo6
Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0NhcwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAq
IHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVS
ZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IsIEJhc2VsaW5lQ2FsbFJlZ2lz
dGVyczo6Y2FsbExpbmtJbmZvR1BSLCByZWdUMykpOwotICAgIGxvYWRWYWx1ZShBZGRyZXNzKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpj
YWxsZWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsZWVKU1IsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlu
a0luZm9HUFIsIHJlZ1QzKSk7CisgICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNS
KTsKICAgICBsb2FkR2xvYmFsT2JqZWN0KHJlZ1QzKTsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxM
aW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAg
ZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCgqbV92bSwgQmFzZWxpbmVD
YWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFk
YXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6
Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFs
T2JqZWN0KCptX3ZtLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BS
LCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgcmVzZXRTUCgpOwogfQogCkBAIC0yMTMsMTggKzIx
NCwxOCBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wJiwgVW5saW5rZWRDYWxs
TGlua0luZm8qLCB1bnNpZ25lZCkKIHRlbXBsYXRlPD4KIGJvb2wgSklUOjpjb21waWxlVGFpbENh
bGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVubGlua2VkQ2FsbExpbmtJbmZvKiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01l
dGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0lu
Zm8oKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOwotICAgIEp1bXBM
aXN0IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgo
KnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFz
ZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+
KFsmXSB7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRh
aWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgSnVtcExpc3Qgc2xvd1BhdGhzID0g
Q2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7
CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRhID0gQ2FsbEZyYW1lU2h1
ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGJ5dGVjb2RlLCBtX3Vu
bGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlciBzaHVmZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0YSB9OwotICAgICAgICBzaHVmZmxlci5s
b2NrR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAg
c2h1ZmZsZXIubG9ja0dQUihCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZv
R1BSKTsKICAgICAgICAgc2h1ZmZsZXIucHJlcGFyZUZvclRhaWxDYWxsKCk7CiAgICAgfSkpOwog
ICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IGxh
YmVsKCk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5kb25l
TG9jYXRpb24gPSBkb25lTG9jYXRpb247Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjYyLDggKzI2Myw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAgICAgdWludDMyX3Qg
bG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLmJpdHMoKTsKICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBBZGRyZXNzKGNhbGxGcmFtZVJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZzZXQpKTsKIAotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpT
Uik7Ci0gICAgc3RvcmVWYWx1ZShCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUiwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbGVlSlNSKTsKKyAgICBzdG9yZVZhbHVlKEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpjYWxsZWVKU1IsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgLSBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChjb21waWxlQ2FsbEV2YWwoYnl0ZWNv
ZGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNzEsMTcgKzI3MiwxNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxM
aW5rSW5mb0luZAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgLy8gV2UgbmVlZCB0aGlzIG9u
IEpTVkFMVUUzMl82NCBvbmx5IGFzIG9uIEpTVkFMVUU2NCBhIHBvaW50ZXIgY29tcGFyaXNvbiBp
biB0aGUgRGF0YUlDIGZhc3QKICAgICAvLyBwYXRoIGNhdGNoZXMgdGhpcy4KLSAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk5vdENlbGwoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNh
bGw6OmNhbGxlZUpTUikpOwogI2VuZGlmCiAKICAgICBpZiAoY29tcGlsZVRhaWxDYWxsKGJ5dGVj
b2RlLCBpbmZvLCBjYWxsTGlua0luZm9JbmRleCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1h
dGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQ
Uik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0
YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsTGlua0luZm9HUFIpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpIHsKLSAg
ICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbERhdGFJQ0Zh
c3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl0geworICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1p
dFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0gewogICAgICAgICAgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xv
dyhCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBw
cmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlu
a0luZm9HUFIpOwogICAgICAgICB9KSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7
CiAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKQEAgLTI4OSw3ICsyOTAsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRhSUNGYXN0UGF0aCgqdGhpcywg
QmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNh
bGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgYXV0byBzbG93UGF0aHMgPSBDYWxs
TGlua0luZm86OmVtaXREYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsTGlua0luZm9HUFIpOwogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAg
ICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwogCkBAIC0zNzgsNyArMzc5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2wKIHsKICAgICBjb21waWxlQ2FsbEV2YWxTbG93Q2FzZShjdXJyZW50SW5z
dHJ1Y3Rpb24sIGl0ZXIpOwogfQotIAorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbF92YXJh
cmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9w
Q2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRl
eCsrKTsKQEAgLTM5MywxMiArMzk0LDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0CiB7CiAg
ICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRzPihjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CiB9Ci0gICAgCisK
IHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdFZhcmFyZ3M+KGN1
cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KLSAgICAK
Kwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQog
ewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVjdD4oY3VycmVudEluc3RydWN0
aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAtNDE2LDcgKzQxNyw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
SXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDI3LDkgKzQyOCw5IEBAIHZvaWQgSklU
OjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQog
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJldHVyblZhbHVlSlNSKTsKIAotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHJl
dHVyblZhbHVlSlNSLCBzdHViSW5mb0dQUikpOwogICAgIHN0YXRpY19hc3NlcnQocmV0dXJuVmFs
dWVKU1IgPT0gYmFzZUpTUik7IC8vIE90aGVyd2lzZSB3aWxsIG5lZWQgbW92ZShyZXR1cm5WYWx1
ZUpTUiwgYmFzZUpTUikKQEAgLTQ2OSw3ICs0NzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
QwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwogCiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKLSAgICBKU1ZhbHVlUmVncyBpdGVyYXRvckpTUiA9IEJhc2Vs
aW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICBKU1ZhbHVlUmVncyBpdGVyYXRvckpT
UiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOwogICAgIEp1bXBMaXN0
IG5vdE9iamVjdDsKICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChpdGVyYXRv
ckpTUikpOwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QoaXRlcmF0b3JK
U1IucGF5bG9hZEdQUigpKSk7CkBAIC00NzgsNyArNDc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0MKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5TmFtZXMt
Pm5leHQuaW1wbCgpOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlk
c1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKKwogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwogCiAgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSk7CkBAIC01MTgsMTYgKzUxOSwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
dGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKICAgICAgICAgfQog
ICAgIH0pKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgY29u
c3RleHByIEpTVmFsdWVSZWdzIG5leHRKU1IgPSBiYXNlSlNSOyAvLyBVc2VkIGFzIHRlbXBvcmFy
eSByZWdpc3RlcgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBu
ZXh0SlNSKTsKICAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNoSWZOb3RFbXB0eShuZXh0SlNS
KTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24s
IHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBm
YXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRy
dXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykp
KTsKIApAQCAtNjE2LDggKzYxNyw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZW1p
dFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2tw
b2ludChqdW1wKCkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6ZG9udENs
b2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgaXRlckNhbGxSZXN1bHRKU1Ig
PSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAwNGZmMjJlNmU0MjVhMDNjNjE0MTQ3
MDU2N2YzN2RhNjM2NTM0YWU2Li5iNjVhNjA0YzM0ZmUxYzUyNzMyYTcyZjM4MGVlZGUzY2QzMWQ0
YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAor
I2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKQEAgLTE0OSw5ICsxNTAsOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6
OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1Ygog
CiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
IAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKICAgICBnZW5l
cmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRj
aEdQUiwgcmVzdWx0SlNSKTsKQEAgLTE4NSw5ICsxODYsOSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1
bnNpZwogCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRXaXRoVGhpc1JlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAog
ICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKICAgICBnZW5lcmF0
ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgc2NyYXRjaEdQ
UiwgcmVzdWx0SlNSKTsKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHZvaWQgSklUUHV0QnlJZEdlbmVy
YXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBz
dHViCiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBzdHViSW5mb0dQUik7CiAKLSAg
ICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0
ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6dmFs
dWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRo
OjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpG
YXN0UGF0aDo6c2NyYXRjaDJHUFI7CiAKICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlSlNSLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CiAgICAgYXV0byBkb0lubGluZUFjY2VzcyA9IGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1
cmVJRCgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YkkKIAog
ICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3Rl
cnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c2NyYXRjaEdQUjsK
IAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDYyOTI5YzBj
MjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUyNGY5YjA0OWUwZjNmMzFjMjk2ZGM0
ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5MCArNDgsNiBAQCBzdHJ1Y3QgVW5s
aW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsK
IGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5
VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZv
OjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRp
ZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVT
RShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBV
U0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5m
bzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJu
VmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5
SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQot
I2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxS
ZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBH
UFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2Rl
QmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8u
Ci1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BS
ID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSKTsKLQotc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdUMzsKLXN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7Ci1zdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBC
YXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OwotY29uc3RleHBy
IEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9OwotY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKLSNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6
anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07Ci0jZWxz
ZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsK
LSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5mbzo6anNSZWdU
NTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9Owot
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGlj
X2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0
dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKLX0KLQotbmFtZXNwYWNlIEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSICB7IEdQUkluZm86OnJlZ1Qz
LCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
SlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRv
bnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcg
fTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNl
SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpKTsKLX0KLQotbmFt
ZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShK
U1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qw
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwg
R1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0
ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBC
YXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKLX0K
LQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQ
UkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBS
ZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFSTV9USFVNQjIKLSNlbmRpZgot
fQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1j
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BS
UmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUklu
Zm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpT
UiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVBy
aXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0KIGNsYXNzIEpJVElubGluZUNhY2hl
R2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyNmViMmFmZWNhZWY1
YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdmYTdlLi4zOTgxZjE3ZjA0MmJkOTA5MWI0YzIxMmFjODkz
ZWM0MzBjZWFjNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
MTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAgZXhjZXB0aW9uQ2hlY2soKTsKIH0K
IAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRo
UmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQot
ewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShmdW5jdGlvbik7Ci0gICAgZXhj
ZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xs
YmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rp
b24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8vIFRoZSBjYWxsZWUgaXMgcmVzcG9u
c2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRoZWlyIGNhbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZTU0MDRmZDlkNDRmMjVkN2Q2ZWEw
ZDZhMWIxNzc1YWFlNjVhZGZiMi4uNTZkZmI4NzM2NTIzYTc1YzNjYTUxMmM4ZmMxOGMzMTMyNDYw
MWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUg
IkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
QEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVj
b2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJz
OjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOwot
ICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3JhdGNoMUdQUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gxR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNoMkdQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5z
dGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CiAg
ICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnBy
b3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90
b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90bycgd2lsbCBiZSBwYXNzZWQgb24g
c3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90b0pTUiA9PSBwcmVmZXJyZWRBcmd1
bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJCaXQoKSk7CiAgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIHBy
b3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJl
bCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJl
Z1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAg
IGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJh
bmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBS
ZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIp
LCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
Y29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElT
dHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2Nywy
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0Zh
bHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1Qw
OwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFs
c2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFH
UFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9i
YWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0Zh
bHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNo
MSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXkubGlu
aygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRv
bmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZt
LCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBz
aG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAg
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygmaml0
KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVl
SXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJ
c0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9
IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
IAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25z
dGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElm
VHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEs
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFy
Z2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRp
dGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2
YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFk
ZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQog
Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Ly8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0
aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAtNjc5LDMxICs2NTQsMjcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlH
ZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Ny
YXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZh
bHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSBy
ZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmpl
Y3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9
IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1Qw
KTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0
KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGlu
aygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1
ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1v
dmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAg
ICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxz
ZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRo
eSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3Bf
dGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRp
Y19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUs
IHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVj
dEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxz
ZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQog
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwor
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BS
OworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25W
YWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVl
LCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRDVElTdHVi
KG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2Vu
ZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIAotICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6
OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICNpZiBOVU1CRVJf
T0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBqaXQubG9hZFB0cigmdm0udG9wRW50
cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsKKyAgICB7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVjdEdQUjsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zm
c2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWluZyBwYXJhbWV0ZXJzIik7CisgICAg
ICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAg
aml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hH
UFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwog
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQot
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9i
amVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xv
YmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQu
Y2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
dm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtMTI1MCw3NyArMTIxMSw3
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8g
RXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0
YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5u
ZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFz
aW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2st
Pm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZp
cnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFs
dWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsg
aiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBB
U1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Y2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNU
b0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxv
Y2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVC
bG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BS
KTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6
ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0lu
aXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVP
cHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCksIGxvY2Fs
c1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2Vu
dGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRl
cl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0j
aWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBD
UFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICAvLyBvcF9l
bnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KLSAgICBqaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVu
ZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5lZEdQUiA9
IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0g
YXJndW1lbnRHUFI0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2Fu
QmVPcHRpbWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENv
ZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
OwotICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9j
YWwpLm9mZnNldCgpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChzdGFydE9mZnNldCAqIHNp
emVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgaml0LnN1YjY0KGl0ZXJhdG9yR1BS
LCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Ci0KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAgICBhdXRv
IGluaXRMb29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gz
MihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAgICAgICAg
aml0LnN0b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAgICAgICBqaXQuc3ViNjQoVHJ1c3Rl
ZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGppdC5qdW1w
KGluaXRMb29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjps
b2NhbHNUb0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRl
cmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSByZWdU
NTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpzUmVnVDMy
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIsIGNhbkJl
T3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAgICAgc2l6
ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VB
c1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVChzdGFy
dE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVy
YXRvckdQUik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVy
KSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BSKTsKKyAgICAgICAgaml0LnN1YlB0
cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIpOworICAgICAgICBqaXQubW92
ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAgICAgIGF1
dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGppdC5i
cmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAgICAgICB7
CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3MoaXRlcmF0
b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdp
c3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsKICAgICB9Ci0gICAgaW5pdERv
bmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgor
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1bWVudEdQ
UjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNSZW1lbWJl
cmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVu
dEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAg
Ly8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0IDAuCisgICAgaml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworCisgICAg
Ly8gc2F2ZSBjYW5CZU9wdGltaXplZEdQUiAoYXJndW1lbnRzIHRvIGNhbGwgYmVsb3cgYXJlIGlu
IHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFjayB0aGlzKS4KKyAgICAv
LyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1c2hUb1NhdmUsIGFzIGl0
IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisgICAgaml0LnN1YlB0cihU
cnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZVB0
cihjYW5CZU9wdGltaXplZEdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworCisg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQ
YXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVy
Q2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQubW92ZShHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlciksIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gUmVzdG9yZSBjYW5CZU9wdGltaXplZEdQUgor
ICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsg
Ly8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVu
LmxpbmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEzMzUsMTEgKzEyOTIsMzAg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hh
bmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5i
cmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9m
ZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAgICBqaXQuY29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7CiAgICAg
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dTKSAmJiBD
UFUoWDg2XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0
aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBh
cworICAgICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRz
IGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQg
YnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2
bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BS
MiB9OworI2Vsc2UKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBH
UFJJbmZvOjphcmd1bWVudEdQUjAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworI2VuZGlmCisgICAg
ICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKSwgdm1Qb2ludGVyQXJnR1BSKTsKKyAgICAg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBieXRlY29kZUluZGV4Qml0c0FyZ0dQUik7CisK
ICAgICAgICAgb3BlcmF0aW9uT3B0aW1pemVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFn
KTsKIAorI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGppdC5wb3AoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyB0YXJnZXRQQworICAgICAgICBqaXQucG9wKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSMik7IC8vIGRhdGFCdWZmZXIgKHVudXNlZCwgYnV0IG5lZWRzIHBv
cHBpbmcgdG8gcmVzdG9yZSBzdGFjaykKKyNlbmRpZgorCiAgICAgICAgIHNraXBPcHRpbWl6ZS5h
cHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpKTsKICAgICAgICAg
aml0LmZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
IApAQCAtMTM0NywxMSArMTMyMyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2
UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElU
aHVuayk7CkBAIC0xMzYyLDcgKzEzMzQsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1NzMsNTcgKzE1NDQsNDIgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGUKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRH
UFIwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQ
UjApOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIzOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNv
ZGVPZmZzZXRHUFIpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNoZWNrVHJh
cHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBz
X2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNp
ZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihm
cmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBqaXQuc3Rv
cmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9
IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFw
czo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tHUFIpOwotICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNs
dHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9u
ID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFsT2JqZWN0
R1BSKSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnAp
OwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJ
VGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5z
dG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
ICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9i
YWxPYmplY3RHUFIpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2Fs
bChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisK
KyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNl
cHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
aGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3Bf
Y2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGEzMmJlMjMwYjRkZDcyZWFlMTUyOWYwNGRkYmMzOGM4
NGVjMmVmZTQuLjI1MzI2MGZjMWMxNmIzNzdjNmQ3MmE4NjZiODI1NjE2NGU2MjlmNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1
ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1
bWVudHMuaCIKQEAgLTUyLDExICs1MywxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lz
dGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDIsMjIg
QEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBi
eXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVy
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgr
K107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlW
YWxSZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJl
Z3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAg
IG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pT
Uik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6
TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwot
I2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4
KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNl
dEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2Vk
LgotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFy
Z3VtZW50R1BSMSk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEp
OwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmls
ZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0g
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29w
X2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNv
ZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0
cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJh
dGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwg
cHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBz
bG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmls
ZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewpAQCAtMjAxLDEwICsxNzIsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
aXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5m
b0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMjMwLDU1
ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOwotICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0
ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7Ci0gICAg
dXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0
aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLSAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1tt
X2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwog
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8g
YXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNS
ID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZt
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTI4NiwzNCArMjMx
LDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxv
Y2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygp
OworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJv
cGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93
UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGlj
X2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOworICAg
IHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9
PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEg
U3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAot
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4
Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9w
cml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0
X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
QEAgLTMyMSw5ICsyNjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5
dGVjb2RlLm1fYnJhbmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJh
bmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNl
SlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0z
NTQsNDYgKzI5OSwyMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9Q
QVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
LQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJh
bmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5k
PigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFBy
aXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8v
IGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJy
YW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1p
emUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdl
dENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA0
LDkgKzMyNCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29k
ZS5tX2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpz
dHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5
ICszNDgsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tf
cHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+
KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwot
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNS
PFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9i
cmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAg
ICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VK
U1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNj
ZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6
c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQ
cml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRp
Y19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChn
ZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRy
YWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50
VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2Vu
LnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDgzLDE5
ICszNzcsMjAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJv
cGVydHlKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsK
KyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7CiAKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgcHJvZmlsZUdQUik7
Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRh
dGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIpOworCisgICAgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyog
c2NyYXRjaEdQUjogKi8gc3R1YkluZm9HUFIpOwogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBudWxscHRyLCBudWxscHRyLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCkBAIC01MjksNzYgKzQyNCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
X2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRf
b3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQog
Ci12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGJvb2wgaXNEaXJlY3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5
OwotICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVD
TUFNb2RlOjpzdHJpY3QoKTsKLQotICAgIGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7
Ci0gICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAg
ICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci0gICAgfTsKLQotICAgIGlmIChp
c0RpcmVjdCkKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxE
aXJlY3Q+KCkpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0QnlWYWw+KCkpOwotCi0gICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0
QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgNT4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBpZiAo
aXNEaXJlY3QpCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCksIE9wUHV0QnlWYWxEaXJlY3Q6Ok1l
dGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wUHV0QnlWYWw+KCksIE9wUHV0QnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BS
LCBwcm9maWxlR1BSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBh
cmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGds
b2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpA
QCAtNjA2LDM5ICs0NTIsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdG9pbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSByZWdUNTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVy
dHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNl
bGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
ZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwotICAgIHsKLSAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZChiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHByb2ZpbGVH
UFIpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVnVDQpKTsKLSAgICAgICAgQVNT
RVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q1KSk7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93
IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8
U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7Cisg
ICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpPihnbG9iYWxP
YmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIHBy
b2ZpbGVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVt
aXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3Bf
cHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hl
Y2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV92
YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVf
bmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjQ3LDEw
ICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0
ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2ICs1MjIsMjcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRP
cHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsK
LSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHVi
SW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJh
c2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1
ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1Is
IHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQot
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3Im
IGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgp
KTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtNzM2LDM0ICs1NTAsMzkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2Vs
aW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdU
MzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDQ7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2Rl
T2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisK
KyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZz
ZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykp
OwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLQorICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0
aGlzIHJlZ2lzdGVyIGlzIG5lY2Vzc2FyeSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGwKKyAgICAvLyB0byBub3QgY2xvYmJlciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwg
YW5kIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51
bGxwdHIpLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENh
bGw8U2xvd09wZXJhdGlvbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7
CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0
aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwg
c3R1YkluZm9HUFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwotICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBq
aXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25M
YWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTg0MSwxMCArNjYwLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6
c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1
LDYyICs2OTQsMzYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5t
X3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRz
W21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7
CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0
aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmpl
Y3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9j
aywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1v
ZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtl
ZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09
IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQo
cmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1
bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMzICs3MzEsMzYgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcg
U2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1p
dENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBq
aXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50
R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9i
amVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9j
azo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2Rl
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
KyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpT
UiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJl
ZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVk
IGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNh
bGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJu
VmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzMsMTEgKzc2OSwxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnNjcmF0
Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVz
dWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZh
bDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJh
c2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBi
YXNlKTsKQEAgLTEwMTAsNjMgKzgwNiwzNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQorICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAg
ICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4
KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFs
OjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAg
bG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5m
b0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0z
MihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJl
Z1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJh
c2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVz
dWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0
SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBv
cnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29y
ayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUg
ZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwzMyArODQzLDM2IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxf
cHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2Jq
ZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRD
VElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0
LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQ
UjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1lbnRHUFI0OwotCi0gICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6
Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVH
UFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwor
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNS
LCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5W
YWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1l
bnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVj
ayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVj
aywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3Zh
bF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTA5LDkgKzg4MSw5IEBAIHZvaWQgSklUOjplbWl0X29w
X3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKQEAgLTExMzgsNDkgKzkxMCwy
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4o
KTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRp
bWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFz
ZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAg
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwK
LSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNl
Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9n
ZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIy
OwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0
eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BS
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlH
ZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFs
dWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1
bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVy
blZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENh
bGwoKSk7CiB9CiAKQEAgLTExOTEsOSArOTQxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTIxOSw0OSArOTY5LDI3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGly
ZWN0PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+
KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVu
dEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3Rh
bnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkp
OwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihi
eXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9n
ZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BS
OworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBh
cmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJn
dW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3Bl
cnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRp
b25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0
eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwor
CisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0
SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyNzIsMTUgKzEwMDAsMTUgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3Vs
dEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwot
ICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsKLSAgICAKLSAgICBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKKworICAgIGlmICgqaWRlbnQgPT0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxvYWQ4RnJvbU1ldGFkYXRhKGJ5
dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0YSgpICsgR2V0
QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBK
dW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoCkBAIC0xMzEyLDUx
ICsxMDQwLDY2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsK
LSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0g
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQot
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJ
ZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsK
LQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRH
UFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBh
cmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5s
aW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAg
IHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0
dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
aWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQor
eworICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5l
IGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5v
dCBtYXRjaAorICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJz
IGppdDsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQ
YXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRp
b24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9i
YWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9i
amVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1l
bnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZv
Iik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24g
Y2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY1LDEwICsxMTA4LDEwIEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1ZSZWcgPSBieXRlY29kZS5tX3Ro
aXNWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAtMTM5NSw5NiAr
MTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQotewotICAgIC8vIFRoZSB0aHVu
ayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50
IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91
dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6
Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdp
bmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAotICAgIC8vIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGlmICgh
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRh
Z1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQ
UjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0K
LSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0
aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2Rl
QmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJ
ZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0
aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7
Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpT
UjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
dGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAot
ICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBi
YXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5y
YXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChC
eXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigp
OworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5p
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkV2l0aFRoaXNH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4
KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6cHJvcGVydHlH
UFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5
bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJ
ZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0
aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5r
ZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlH
UFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
aWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFdpdGhU
aGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZN
JiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNDky
LDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
OjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJu
QWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpieXRl
Y29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdp
dGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0
LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAg
ICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdU
MDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0
aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVydHlHUFIpOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3Bl
cnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0
Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIx
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25Q
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0
byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1
bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dl
dF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
Iik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewpAQCAtMTUzNCwxMCArMTIxMywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyB0byBqdXN0IGFmdGVy
IHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJl
Z2luJywgYW5kIHdlIGdlbmVyYXRlIGNvZGUKICAgICAvLyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVy
ZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhpcy4KIAot
ICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVn
aXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRC
eUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2
YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlk
OjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2
YWx1ZUpTUik7CkBAIC0xNTYxLDcgKzEyNDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7
IC8vIFdlIG1pZ2h0IE9TUiBleGl0IGhlcmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkg
cmVzZXQgU1AKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7
Ci0gICAgCisKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRl
LWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNp
emUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5
NQpAQCAtMTU3MCw1NiArMTI0OSwzMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbih0aGlzKTsKLSAgICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQot
ICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQo
Z2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2Fs
bE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayht
X3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BQdXRCeUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJiht
X3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luKHRoaXMpOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkg
aW4gdXNlLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3Rh
dGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0
cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
c2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJ
U3R1YihzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Ly8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0
aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3Vt
cHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2MjcsMzUgKzEyODAsMzUgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CiAK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJn
dW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlH
UFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50
R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3Vt
ZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0
dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
dmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVl
ZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0
LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVs
c2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hl
Y2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlv
bkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY2NCw5ICsxMzE3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTY5MSw1MSArMTM0NCwyOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
LSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJ
bmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93
T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93
T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRp
ZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5
R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBi
eXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5C
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9
PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
IHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9p
ZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4
YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0
aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgog
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9w
dGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAg
ICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVy
czo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xNzQ2LDExICsxMzc3LDExIEBAIHZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVj
b2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJh
c2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2Vs
aW5lSW5CeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlW
YWw6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VK
U1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsK
QEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2Vz
KGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
bkJ5VmFsPigpOwotCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1tt
X2luQnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVH
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJh
dGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVm
ZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwotCi0gICAgbG9hZEdsb2JhbE9i
amVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0
dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2Zp
bGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQ
UigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2Rl
LCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BS
KTsKLSAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkg
d2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEg
ZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lz
dGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlw
ZSkKIHsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJ
bkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5C
eVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFs
OjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eU9yQnJhbmQsIHByb3BlcnR5
SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZp
cnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVy
IHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93
KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNz
VHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlW
YWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAw
PigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNl
SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwg
c3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAg
IGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNl
bHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNl
dCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChi
eXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJh
dG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1
YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplKT46OnZhbHVlKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxs
U2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBA
IC0xOTEyLDEyICsxNDkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX25hbWUo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0
ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9o
YXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQot
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5h
bWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUu
bV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUpOworICAgIGVtaXRIYXNQcml2
YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC0xOTI2LDEyICsxNTA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRl
X2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhh
c1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFu
ZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1By
aXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBi
eXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOworICAgIGVtaXRI
YXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9
IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQz
Ml90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VS
VChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAg
IEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRl
eCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE5NDksMTQgKzE1MjQsMTQgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIC8vIElmIHdlIHByb2ZpbGUgY2VydGFpbiByZXNvbHZlIHR5cGVzLCB3ZSdy
ZSBndWFyYW50ZWVkIGFsbCBsaW5rZWQgY29kZSB3aWxsIGhhdmUgdGhlIHNhbWUKICAgICAvLyBy
ZXNvbHZlIHR5cGUuCiAKLSAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIp
IAorICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVsZVZhcikKICAgICAgICAgbG9h
ZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkxleGljYWxFbnZpcm9ubWVudCgpLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIHVpbnQzMl90IG1ldGFkYXRhT2Zmc2V0ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bWV0
YWRhdGEoKS5vZmZzZXRJbk1ldGFkYXRhVGFibGUoYnl0ZWNvZGUpOwogCi0gICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsKLSAgICAgICAgY29uc3RleHByIEdQUlJl
ZyBzY29wZUdQUiA9IHJlZ1QwOwotICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gcmVnVDM7CisgICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNv
bHZlU2NvcGU6Om1ldGFkYXRhR1BSOworICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQUjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7CiAKICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNjb3BlR1BSKTsKICAgICAgICAgYWRkUHRy
KFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIsIG1ldGFkYXRhR1BS
KTsKQEAgLTE5NjQsMjMgKzE1MzksMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY29kZTsKICAgICAgICAgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRD
VElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAgICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxD
bG9zdXJlVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJh
dGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7
CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAg
ICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5r
PEdsb2JhbFZhcj4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0
ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkpCi0gICAgICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsK
KyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29w
ZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAg
ICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVu
azxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5
cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUg
PSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHVi
KGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENU
SVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAg
IGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2Jh
bFZhcj4pOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKICAgICB9CkBAIC0yMDAwLDEyICsxNTc1LDEyIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmso
Vk0mIHZtKQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICB1c2luZyBNZXRhZGF0YSA9IE9w
UmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BS
ID0gcmVnVDI7IC8vIGluY29taW5nCi0gICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJl
Z1QwOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSByZWdUMzsgLy8gaW5jb21pbmcgLSBwYXNzIHRocnUgdG8gc2xvdyBwYXRoLgorICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNv
bWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OnNjb3Bl
R1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZl
U2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBz
bG93IHBhdGguCiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7IC8vIGxv
Y2FsIHRlbXBvcmFyeQogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZU9mZnNldEdQUik7Ci0gICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVHUFIsIG1ldGFkYXRhR1BSLCBieXRl
Y29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNjb3BlR1BSID09IHJldHVyblZhbHVlR1BSKTsgLy8gZW1pdFJl
c29sdmVDbG9zdXJlIGFzc3VtZXMgdGhpcwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
QEAgLTIxMzYsNTAgKzE3MTEsMzMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICAvLyBU
aGUgZmFzdCBwYXRoIGFscmVhZHkgcHVzaGVkIHRoZSByZXR1cm4gYWRkcmVzcy4KLSNpZiBDUFUo
WDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02
NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wdXNoUGFpcihm
cmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAg
IGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRp
ZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVn
VDM7Ci0gICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIElu
Y29taW5nCiAKICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKICAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25z
dGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwotICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKGluY29taW5nQnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBn
bG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGlu
c3RydWN0aW9uR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAg
IC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Cisg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwogICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0cnVjdGlv
bkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVj
dGlvbkdQUik7Ci0KKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlv
bkdQUik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblJlc29sdmVT
Y29wZUZvckJhc2VsaW5lKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7Ci0gICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9IGppdC5j
YWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0
Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBq
aXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVy
cm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKLSAgICBqaXQucmV0KCk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8g
ZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1w
KCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRp
b24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9y
QmFzZWxpbmUpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3Rh
Y2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcmVzb2x2ZV9zY29w
ZSIpOwogfQogCkBAIC0yMTkwLDM4ICsxNzQ4LDM3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9m
cm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmly
dHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAgICBSZXNvbHZlVHlwZSBw
cm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9wcm9maWxlZENvZGVCbG9j
aykubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgp
OwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KG1f
Ynl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BS
ID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Qz
OwotCiAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3VubGlua2VkQ29kZUJsb2NrLT5t
ZXRhZGF0YSgpLm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29kZSk7CiAKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29wZUdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsK
KwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBzY29wZUdQUik7CiAg
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0YWRhdGFHUFIsIG1l
dGFkYXRhR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVj
b2RlT2Zmc2V0R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY29kZTsKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQotICAg
ICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8Q2xv
c3VyZVZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZl
VHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9
IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2Vu
ZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
Pik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIpCi0gICAg
ICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9i
YWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlw
ZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRl
T3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAg
ICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSkKLSAgICAg
ICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2Jh
bFByb3BlcnR5Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdl
dEZyb21TY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRS
ZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJ
U3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcj4pOworICAg
ICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxH
bG9iYWxMZXhpY2FsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAgICAgY29kZSA9IHZt
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFZhcj4pOwogCiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7CkBAIC0yMjM1LDkg
KzE3OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Omdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5s
aW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5
IG5vdCBtYXRjaAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgdXNpbmcgTWV0
YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBt
ZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgPSByZWdU
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7IC8vIFVz
ZWQgb25seSBvbiBzbG93IHBhdGgKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BS
OyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zm
c2V0R1BSKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5WYWx1ZUpTUiwgbWV0
YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOwpAQCAt
MjI1Niw3ICsxODE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgICAgIGppdC5sb2Fk
UHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBt
X3ZhckluamVjdGlvbldhdGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNsb3dDYXNl
LmFwcGVuZChqaXQuYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNoR1BSLCBXYXRjaHBvaW50
U2V0OjpvZmZzZXRPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlkYXRlZCkpKTsKICAg
ICB9OwotICAgIAorCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEds
b2JhbFByb3BlcnR5OgpAQCAtMjM3MSw2OCArMTkyOSw0MiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihW
TSYgdgogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJU0NWNjQpCi0gICAg
aml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxlbWVudGVkIG9uIHBs
YXRmb3JtIgotI2VuZGlmCi0KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0RnJvbVNjb3BlOjpN
ZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDQ7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0gICAg
aml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8gSW5jb21pbmcK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOwotICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0
R1BSLCBzY3JhdGNoR1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBn
bG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092
ZXJsYXAobWV0YWRhdGFHUFIsIHJldHVyblZhbHVlR1BSKSk7CiAKLSAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwotICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0
Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0
cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBp
bnN0cnVjdGlvbkdQUik7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CiAKLSAgICAv
LyBQcmVzZXJ2ZSBtZXRhZGF0YSBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcjsKLSAgICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsK
LSAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkK
LSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gc19tZXRhZGF0YUdQUjsKLSAgICBh
dXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAgICAgaml0LmxvYWRQdHIoYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzX21ldGFkYXRhR1BSKTsKLSAgICAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhzX21ldGFkYXRhR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9m
TWV0YWRhdGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgfTsKLSNlbmRpZgotICAgIEFT
U0VSVChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKG1ldGFkYXRh
Q1NSKSk7Ci0gICAgaml0Lm1vdmUobWV0YWRhdGFHUFIsIG1ldGFkYXRhQ1NSKTsKLQotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9iYWxP
YmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGluc3RydWN0aW9uR1BSKTsKKyAgICBq
aXQubG9hZFB0cihBZGRyZXNzKGluc3RydWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
aW5zdHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOworCisgICAgLy8gc2F2ZSBtZXRhZGF0YUdQUiAoYXJndW1lbnRzIHRv
IGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBz
dGFjayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNl
IHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQu
CisgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgIGppdC5zdG9yZVB0cihtZXRhZGF0YUdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdp
c3RlcikpOworCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcp
OwogICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlv
bkNoZWNrKHZtKTsKIAotICAgIGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNz
KG1ldGFkYXRhQ1NSLCBNZXRhZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6
Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwotICAgIHJlc3RvcmVIaWphY2tlZENTUigpOworICAg
IGppdC5sb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBtZXRhZGF0YUdQUik7
IC8vIFJlc3RvcmUgbWV0YWRhdGFHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorICAgIGpp
dC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBNZXRhZGF0
YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQo
KSkpOwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsK
LSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAg
IGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFk
ZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxh
dGZvcm0iCi0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQu
cmV0KCk7CiAKICAgICBleGNlcHRpb25DaGVjay5saW5rKCZqaXQpOwotICAgIHJlc3RvcmVIaWph
Y2tlZENTUigpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBKdW1wIGp1bXBUb0hh
bmRsZXIgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0y
NTkwLDI3ICsyMTIyLDIwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQg
Q29kZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJl
IGd1YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsK
KyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhy
b3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOwotI2Vsc2UKLSAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAg
ICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAg
ICAgICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2Rl
SW5kZXgpOwogICAgICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25B
dChtX2J5dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICAgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Cisg
ICAgICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9m
ZnNldEdQUjsKIAotICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2Vu
ZGlmCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOworICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xv
d19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAg
ICAgfQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Io
Vk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBj
YW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTI2
MTksNDMgKzIxNDQsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0
KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJS
ZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BS
MzsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsgLy8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3Vt
ZW50R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKKyAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSLCBieXRlY29kZU9m
ZnNldEdQUiwgY29kZUJsb2NrR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUo
KTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29k
ZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAg
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwg
aW5zdHJ1Y3Rpb25HUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25QdXRUb1Njb3BlKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgQ2Fs
bCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBq
aXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBv
cChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIo
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0
KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAg
ZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdl
dENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRv
cik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFi
ZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKQEAgLTI2NjMsNyArMjE3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3Vt
ZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1l
bnRzID0gYnl0ZWNvZGUubV9hcmd1bWVudHM7CiAgICAgaW50IGluZGV4ID0gYnl0ZWNvZGUubV9p
bmRleDsKLSAgICAKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGFyZ3VtZW50
cywgcmVnVDApOwogICAgIGxvYWRWYWx1ZShBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6
OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikp
LCBqc1JlZ1QxMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwganNSZWdU
MTApOwpAQCAtMjc0Myw3ICsyMjU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5
X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBk
b25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpA
QCAtMjgwNiw3ICsyMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNl
cy5saW5rKHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI4
MjQsMTMgKzIzNDAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlzdCBk
b25lQ2FzZXM7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5lRW51
bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5
R1BSID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxpbmVF
bnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDEgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2Ny
YXRjaDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lRW51bWVyYXRv
ckdldEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gzID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1l
cmF0b3JHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6cHJvcGVydHlKU1IucGF5
bG9hZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gxID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRC
eVZhbDo6c2NyYXRjaDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gyOworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5
VmFsOjpzY3JhdGNoMzsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQ
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihtb2RlLCBzY3JhdGNoMyk7CkBAIC0yOTA2
LDcgKzI0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotdm9pZCBKSVQ6
OmVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5jdGlv
blR5cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5l
cmFsQ2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAg
ICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTM2LDcgKzI0
NTIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhp
cyk7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25l
LmxpbmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNDYwLDMxIEBAIHZvaWQgSklUOjplbWl0X2VudW1l
cmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hhc19w
cm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
RW51bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7Cisg
ICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBs
KGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNs
b3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVt
ZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xv
d19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9nZXRf
YnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
QEAgLTI5NzcsMTUgKzI0OTMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3Jf
Z2V0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUUKICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRv
cl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKIHsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9o
YXNfb3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1
Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X2hhc19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5MDFkZjU2YWZiMTNi
NDhjMWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3MDM2NmIzNTBlMjM5
N2ZiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0xNzEs
OCArMTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVu
a3M6OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRo
RnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2Fz
dDxUaHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEsOCArMTc5LDYgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQ
YXRoRnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5U2VhcmNoZXIgewog
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYga2V5KSB7IHJl
dHVybiBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNvbnN0IEhvc3RGdW5j
dGlvbktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjplcXVhbChhLCBi
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggODQ3Y2UyNTAyZTQw
MThhMmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZlMGRiNTdmY2Q4YTBj
YTZmMTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC02
Myw5ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQ
dHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRodW5rR2VuZXJhdG9y
KTsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiwgU2xvd1BhdGhG
dW5jdGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0
dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1
bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlv
biBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9TbG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlmOTdjYjA3NDdhMGE0
ZTEzZDcyOGIuLjMyZjA1YjgzZjUyOWU4OTVkYmQ4ZTYyZDlmN2NjMjUwNDMyMDhjMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDkg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK25h
bWVzcGFjZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEpJVDo6
YXJndW1lbnRHUFIzOworfQogCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CkBAIC00
NCw5ICs0Niw3IEBAIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5k
ZXgpOwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAgbV9qaXQtPm1v
dmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7
CisgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRl
Y29kZU9mZnNldEdQUik7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJz
LT5jdGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwogfQogCkBAIC01NCw0NiArNTQsNDkgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmso
Vk0mIHZtLCBTbG8KIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwotCi0jaWYgQ1BVKFg4
Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxw
ZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwot
I2VuZGlmCi0KLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywgQ0NhbGxIZWxwZXJz
Ojp0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQot
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5lbWl0Q1RJVGh1bmtQ
cm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMy
KGJ5dGVjb2RlT2Zmc2V0R1BSLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1l
bnRHUFIxID09IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBqaXQubW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMgbGFy
Z2VyIHRoYW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIgcGFz
c2VkIGFzCisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3VtZW50
cyBhcmUgc2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkg
Z2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJn
R1BSID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdH
UFIgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCBjYWxsRnJhbWVBcmdHUFIsIHBjQXJnR1BSLCBieXRlY29k
ZU9mZnNldEdQUikpOworI2Vsc2UKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFyZ0dQ
UiA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJnR1BS
ID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNh
bGxGcmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZW5kaWYKKyAg
ICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lQXJnR1BSKTsK
KyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKSwgcGNBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhwY0FyZ0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIo
KSksIHBjQXJnR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBwY0FyZ0dQ
Uik7CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXRO
b25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGpp
dC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQ
YWlyKENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlu
a1JlZ2lzdGVyKTsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3Ao
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBwYworICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyKTsgLy8gY2FsbEZyYW1lCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAKLSAg
ICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRI
YW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgp
OworCisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIENDYWxs
SGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxp
bmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93
UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5k
ZXggODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4
MjY1MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1Nsb3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCog
aml0LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5j
dGlvbikKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xv
d1BhdGhGdW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0
aEZ1bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7CiAg
ICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0m
LCBTbG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0
ZVRvcENhbGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAg
IG1faml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAg
ICAgICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQ
UjEpOwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6
YXJndW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpU
cnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAg
SklUOjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwot
Ci0jaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6
OnJlZ1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxG
cmFtZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0g
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5leGNl
cHRpb25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBT
bG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlv
biogbV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1NzFhNmNiNTdlODI0ZGNjOWUxY2Ey
MzVlNGRiZGVhMzA5MzNiMC4uZjE1YzcwMzdmYjEwMTA3M2U3NjM2MTg3MzU2YjNkMzUzMTcwMzI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApA
QCAtNDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJh
dGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5LDgg
KzU3LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkK
IHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsMjAgKzczLDEzIEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJv
bGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAK
LSNlbmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5r
U3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZSZWdp
c3RlcnM6OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
UklTQ1Y2NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBq
aXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBl
cnM6OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVt
ZW50ZWQgb24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisjaWYg
Q1BVKFg4Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVzIHRo
ZSByZXR1cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6
ZXNwKTsKICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9IGpp
dC5qdW1wKCk7CkBAIC0xMDEsMzIgKzkwLDIyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9w
VGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIC8vIFRoaXMgdGh1bmsgaXMg
dGFpbCBjYWxsZWQgZnJvbSBvdGhlciB0aHVua3MsIGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMg
YWx3YXlzIGFscmVhZHkgdGFnZ2VkCiAKKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2Fs
bCBhIHJ1bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4g
YWRkcmVzcyBoZXJlLgogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6
KCkpKSB7Ci0gICAgICAgIC8vIEV4Y2VwdGlvbiBmdXp6aW5nIGNhbiBjYWxsIGEgcnVudGltZSBm
dW5jdGlvbi4gU28sIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHJldHVybiBhZGRyZXNzIGhlcmUu
Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgaml0LnB1c2goWDg2UmVnaXN0ZXJzOjplYnApOwot
I2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmVtaXRDVElUaHVu
a1Byb2xvZ3VlKCk7CiAgICAgfQogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRsZUV4Y2Vw
dGlvbiA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSNpZiBDUFUoWDg2XzY0
KQotICAgICAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICAgICAgaml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgfQorICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBqaXQuZW1pdENUSVRo
dW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBhdXRvIGhhbmRsZXJHZW5lcmF0
b3IgPSBPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkgPyBwb3BUaHVua1N0YWNrUHJlc2VydmVz
QW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yIDogaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yOwpA
QCAtMTQzLDggKzEyMiw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGFn
VHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggYTlmZWVlYTkyNGFlMDA3OGQ4NDUxZTE3
MmM0YzQ5NDVkZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3ODI5ZjBiNGFiY2FiYWVkYzQ5NzM1YTJk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0z
OCwxMyArMzgsOCBAQCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7
CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CkBAIC04Miw5ICs3Nyw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihWTSYpOwog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJik7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNjY0YjBlMjlmNmJhM2NlNDgyNmU1MTA5ZDczZjg2
Y2M5YmM2YWRmZC4uNWVjNzQwOWJjOWFlODZjMzQyOGU2MmVjMjBhNDUwYWYyZTc4YjRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQgKzgzOSw2IEBACiAjZGVmaW5lIEVOQUJM
RV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpIHx8
IChDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykpCi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2Yg
dGhlc2UgdGh1bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1bWVudCByZWdpc3RlcnMsIGFuZAotICAg
bWFrZSB1c2Ugb2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4gRm9yIG5vdywgd2UnbGwgb25seSBzdXBw
b3J0IHRoZW0gb24gcGxhdGZvcm1zCi0gICB0aGF0IGhhdmUgNiBvciBtb3JlIGFyZ3VtZW50IHJl
Z2lzdGVycyB0byB1c2UuCi0qLwotI2RlZmluZSBFTkFCTEVfRVhUUkFfQ1RJX1RIVU5LUyAxCi0j
ZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSkgJiYgIU9TKFdJ
TkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSAxCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450677</attachid>
            <date>2022-02-02 11:22:41 -0800</date>
            <delta_ts>2022-03-01 03:53:02 -0800</delta_ts>
            <desc>fix double tagging of return address in resolve_scope and get_from_scope</desc>
            <filename>bug-233822-20220202192239.patch</filename>
            <type>text/plain</type>
            <size>281565</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZWQyM2JmNjQ2OTE3N2I5OTU0ZGFmMTY2MGIyOTA5OGU0NTkyYmQxLi5jNTBjMjg5NTJhNzQxYmFh
NWVhYzQwZjQ5MjMxN2NkMDA1ZjE2NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDItMDIgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgYW5kIGVu
YWJsZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29k
ZSBwYXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRm
b3JtcywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5j
dGlvbiBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAg
ICAgICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBU
byBlbmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1
ZSBhbmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50
cm9kdWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFj
ZSBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVj
a2luZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hl
Y2sgdGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUg
Y29kZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hl
Y2sgdGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQg
YmFzZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZv
cm1zICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVk
IG91dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisg
ICAgICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJl
IGFyZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdo
YXQgZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zl
cmxhcCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3Rl
eHByCisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28g
dGhlc2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcg
dGhlIGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAg
ICAgICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0
YXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0
Y2hSZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICog
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmxpbmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRp
Yy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0
QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAg
KEpTQzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlD
RmFzdFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJh
c2VsaW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6
b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfY2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRs
ZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0
X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVf
YnJhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5k
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1
dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1By
aXZhdGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9u
YW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51
bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJh
dG9yX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAq
IGppdC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1Bh
dGhDYWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9u
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMS0xOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpeCBZYXJySklUIGJhY2t0
cmFja0NoYXJhY3RlckNsYXNzTm9uR3JlZWR5IGJyZWFrcG9pbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTFiNDdiZDYzMjE5
YTE2MTk3NjE5NjMyMjIwM2I5MTQyMjZlY2YyZC4uMjEyZDI0Y2I2NDQ2MzU1NDUwZTQyMDY3Y2Y0
NGQyOWFhMGM0MDc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wMiAgR2V6YSBMb3Jl
ICA8Z2xvcmVAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBQb3J0IEVYVFJBX0NUSV9USFVO
S1MgdG8gYWxsIHBsYXRmb3JtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzODIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgUmVtb3ZlIEVYVFJB
X0NUSV9USFVOS1MgZGVmaW5lIChub3cgYWx3YXlzIG9uIG9uIGFsbCBwbGF0Zm9ybXMpCisKIDIw
MjItMDEtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
byBub3QgdXNlIHBhcyB1dGlscyBvdXRzaWRlIG9mIGxpYnBhcwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGI5ODcxMjE3NWM5YTdkOWU0NDM3ZmYzNTcyOWE4NGM0MWVlOGM2
NGYuLjI1MWI5ZTQ1OTk2YjNmMjEwNzI3OTU3NmE1NGUxOTI4ZjFmNDIzMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg0Myw2ICs4NDMsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGppdC9Bc3NlbWJseUhlbHBlcnMu
aAogICAgIGppdC9Bc3NlbWJseUhlbHBlcnNTcG9vbGVycy5oCiAgICAgaml0L0Jhc2VsaW5lSklU
Q29kZS5oCisgICAgaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgKICAgICBqaXQvQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuaAogICAgIGppdC9DQ2FsbEhlbHBlcnMuaAogICAgIGppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTZiZGZlMDc1Mzg0
NTI4ODg4MjBjY2I2NDM5ZmIyNzAzZWM1NmZmMC4uMGE2MTJiNzA2ZDI5YmViZDZiMTVmNzZhMDQy
ODA4OTExYTlkM2FjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTUsNiAr
MTE5NSw3IEBACiAJCTcyMTMxQkZBMjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFuU3RhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTMxQkY2MjY1
ODdFRjIwMDcxMTRDRiAvKiBKSVRQbGFuU3RhZ2UuaCAqLzsgfTsKIAkJNzIxMzFCRkMyNjU4N0VG
QTAwNzExNENGIC8qIEpJVFdvcmtsaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxMzFCRkIyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdv
cmtsaXN0SW5saW5lcy5oICovOyB9OwogCQk3MjM5OThGNzI2NURCQ0RCMDA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjM5OThGNTI2NURCQ0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRQbGFuLmggKi87IH07
CisJCTcyNDAwMEY3MjgyREJDREIxMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0MDA5RjUyNzhE
QkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjAyNjU4MTY1MzAwOEU2Rjgy
IC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjZCOTFBODI2NTgxNjUyMDA4RTZGODIgLyogSklUV29ya2xpc3RUaHJl
YWQuaCAqLzsgfTsKIAkJNzI2QjkxQjMyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2
QjkxQUIyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNkI5MUI3MjY1ODE2NTMw
MDhFNkY4MiAvKiBKSVRQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjZCOTFBRjI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxhbi5oICovOyB9OwpA
QCAtNDIyMSw2ICs0MjIyLDcgQEAKIAkJNzIxMzFCRkIyNjU4N0VGQTAwNzExNENGIC8qIEpJVFdv
cmtsaXN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRXb3Jr
bGlzdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzOTk4RjUyNjVE
QkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYXNlbGluZUpJVFBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlbGluZUpJVFBsYW4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjQwMDlGNTI3OERCQ0RCMDA1Nzg2N0YgLyogQmFz
ZWxpbmVKSVRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2Qjkx
QTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFdvcmtsaXN0VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNkI5MUFBMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFBsYW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFBQjI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGls
YXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0
aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3Miw2ICs2NDc0LDcg
QEAKIAkJCQk1MkREMDAwNjI2RTAzOUIzMDA1NEU0MDggLyogQmFzZWxpbmVKSVRDb2RlLmggKi8s
CiAJCQkJNzIzOTk4RjYyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5jcHAgKi8s
CiAJCQkJNzIzOTk4RjUyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovLAor
CQkJCTcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFJlZ2lzdGVycy5oICov
LAogCQkJCTBGNjRCMjZGMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guY3BwICovLAog
CQkJCTBGNjRCMjcwMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guaCAqLywKIAkJCQk2
NUI4MzkyRDFCQUNBOUQzMDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuY3BwICovLApAQCAtOTgw
NSw2ICs5ODA4LDcgQEAKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJERDAwMDgyNkUwMzlCOTAwNTRFNDA4IC8qIEJhc2VsaW5l
SklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzIzOTk4RjcyNjVEQkNEQjAwNTc4NjdGIC8q
IEJhc2VsaW5lSklUUGxhbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI0MDAwRjcyODJEQkNEQjEw
NTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3
OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNUU4OUZEMjVDNTBGODcwMDcxRUUxRSAvKiBC
aWdJbnQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBiZjZmYmUzMDViM2ZkNGQ1NmFhYTg1
Mjg5Y2UzMTMxNWE4NzM1YmU1Li5mMWZmNjM5NGM5ZjRlZWQ1MWMxMDBjNWU0YzI3ZWY2OGYwZGI1
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCkBAIC02NzQsMTIgKzY3NCwyMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdWIz
MihzcmMsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
c3ViMzIobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgc3ViUHRyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKGltbSwg
ZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjMy
KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1t
UHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3ViMzIoVHJ1c3RlZElt
bTMyKGltbSksIGRlc3QpOwpAQCAtMTAwNywxMiArMTAxNywyMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBzdWI2NChzcmMsIGRlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRy
KFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgc3ViNjQobGVmdCwgcmlnaHQsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQg
c3ViUHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IHN1YjY0KGltbSwgZGVzdCk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzdWJQdHIoUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHN1YjY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0
cihUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3Vi
NjQoVHJ1c3RlZEltbTY0KGltbSksIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBjZDEyOWY2ZDlhODdl
MDY5YWVjZmE0MjRhZmU3MGYwZjExNWNkMTQ1Li5iNTkzMDczM2RjMDMzOGU2ZWUzN2ZjMzRiMzI5
NzYxMWE5NDFkMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1HUFJzID0gc3RkOjppbml0aWFsaXplcl9saXN0
PGludD4oeyBGT1JfRUFDSF9HUF9SRUdJU1RFUihEVU1NWV9SRUdJU1RFUl9WQUxVRSkgfSkuc2l6
ZSgpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtRlBScyA9IHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hfRlBfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFM
VUUpIH0pLnNpemUoKTsKICN1bmRlZiBEVU1NWV9SRUdJU1RFUl9WQUxVRQotICAgIFJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3RlcjsgfQorICAg
IHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKSB7IHJldHVybiBh
ZGRyZXNzVGVtcFJlZ2lzdGVyOyB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3KCkKICAgICAg
ICAgOiBtX21ha2VKdW1wUGF0Y2hhYmxlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDA0NWRlZmVk
YjE1NGZkMDg5YTJiNjhkY2Q2MzE4MTE5NzEwMDFlMjIuLmIyZTkxMWFhMTM2NjNhMjUwOTg0MGEw
NTY4ODQxMmYyOTI4ZWY0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTgwNCw3ICs4MDQsMTMgQEAgcHVi
bGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2lyKGltbS5t
X3ZhbHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQg
YSwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92
ZShhLCBkZXN0KTsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN1YjY0KFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCmluZGV4IDAwYTU1NDk3ZmQ2M2FkZWE5Y2Y1ZjFiZjBiYzZiMWJjMTVh
ODQwZDIuLjc3ZTRhNmU5ZWYzZjhhYzcyYTVkZDBjNzgyOGEwYmRjZWMzNWQ2YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJVFJlZ2lzdGVycy5o
IgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVEYXRhLmgiCiAjaW5jbHVkZSAiQ2FsbE1vZGUu
aCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKQEAgLTQ3LDE0ICs0OCw2IEBAIGVudW0gT3Bj
b2RlSUQgOiB1bnNpZ25lZDsKIHN0cnVjdCBDYWxsRnJhbWVTaHVmZmxlRGF0YTsKIHN0cnVjdCBV
bmxpbmtlZENhbGxMaW5rSW5mbzsKIAotI2lmIEVOQUJMRShKSVQpCi1uYW1lc3BhY2UgQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QxMCB9OwotY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIgeyBHUFJJbmZvOjpy
ZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OwotfQotI2VuZGlmCi0KIGNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTQ2Miw5ICs0NTUsOSBAQCBwdWJsaWM6CiAgICAgfQog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsZWVHUFIo
KSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUdQUjsgfQotICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIHsgcmV0dXJuIEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSOyB9Ci0gICAgdm9pZCBzZXRDYWxsTGlua0luZm9H
UFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm9H
UFIgPT0gQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkNhbGw6OmNhbGxlZUdQUjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNh
bGxMaW5rSW5mb0dQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
TGlua0luZm9HUFI7IH0KKyAgICB2b2lkIHNldENhbGxMaW5rSW5mb0dQUihHUFJSZWcgY2FsbExp
bmtJbmZvR1BSKSB7IFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mb0dQUiA9PSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsgfQogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAppbmRleCA0YjlhNDk1OWZkOGZmMzUxZDI5ZGFmY2EwOTcyNDUzYjdiYzE2NzY2Li45NmJlMzgz
N2ExYWY5ZTcyNWQyNTI0ZjRlZmU2OGQ2MWFhY2MyMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTIzMywyMyAr
MjMzLDEyIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjplbWl0RXhwbGljaXRFeGNlcHRp
b25IYW5kbGVyKCkKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvT1NSRXhp
dEV4Y2VwdGlvbkhhbmRsZXIsIG9yaWdpbmFsSGFuZGxlci5uYXRpdmVDb2RlKTsKICAgICAgICAg
ICAgIH0pOwogICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBqdW1wVG9FeGNlcHRpb25IYW5kbGVyID0gaml0LT5qdW1w
KCk7CiAgICAgICAgIFZNKiB2bSA9ICZtX3ZtOwogICAgICAgICBqaXQtPmFkZExpbmtUYXNrKAog
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIsIENvZGVMb2NhdGlvbkxh
YmVsKHZtLT5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKSk7CiAgICAgICAgICAgICB9KTsKLSNlbHNlCi0gICAgICAgIGppdC0+c2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik+KEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmbV92bSkpOwotICAgICAgICBqaXQtPnByZXBhcmVD
YWxsT3BlcmF0aW9uKG1fdm0pOwotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgbG9va3VwRXhj
ZXB0aW9uSGFuZGxlckNhbGwgPSBqaXQtPmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAg
aml0LT5hZGRMaW5rVGFzaygKLSAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewotICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhsb29rdXBFeGNlcHRpb25IYW5k
bGVyQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgaml0LT5qdW1wVG9FeGNl
cHRpb25IYW5kbGVyKG1fdm0pOwotI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA4MDk4
NDZkM2RmZDhhZDE4YTQxOGU5ZGM2ZTg3MTg4NTBiYTU0MWU2Li41NGRjZDYxZTQ3NTFhMjA3NTVi
MmE0ODM1MzYzYjc5MjAzZjRkZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCisjaW5jbHVk
ZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIgotI2luY2x1ZGUgIkpJVElubGluZUNhY2hlR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJSZXBhdGNoLmgiCiAKQEAgLTQyNyw3
ICs0MjcsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0aWFsaXplRnJvbVVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQogICAgIHVzZWRSZWdpc3RlcnMgPSBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CiAgICAgaWYgKGFjY2Vzc1R5
cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZCAmJiB1bmxpbmtlZFN0dWJJbmZvLmJ5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIC8vIEZvciBpdGVyYXRvcl9uZXh0LCB3ZSBjYW4n
dCBjbG9iYmVyIHRoZSAiZG9udENsb2JiZXJKU1IiIHJlZ2lzdGVyIGVpdGhlci4KLSAgICAgICAg
dXNlZFJlZ2lzdGVycy5zZXQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJlckpT
Uik7CisgICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1IpOwogICAgIH0KIAogICAgIHN3aXRjaCAoYWNj
ZXNzVHlwZSkgewpAQCAtNTI0LDc4ICs1MjQsNzggQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKENvZGVCbG9jayosIFVubGkK
ICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5
VmFsOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVs
QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OkZhc3RQYXRoOjpyZXN1bHRKU1IucGF5bG9hZEdQ
UigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAg
ICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BS
KCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJz
Ojpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAg
ICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6OnBy
b3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5SUQ6CiAgICAgICAg
IGhhc0NvbnN0YW50SWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICBiYXNlR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOwog
ICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVH
UFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0g
ICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpG
YXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lRGVsQnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOwogICAgICAgICB2LnBy
b3BlcnR5VGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNl
bGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVU
YWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpT
Ui50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OkdldEJ5VmFsOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0UHJpdmF0ZU5hbWU6CiAgICAgICAg
IGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxp
bmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3Mu
cHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6
cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
cmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVy
dHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZv
R1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5
VGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFnR1BSKCk7
Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0
SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAg
ICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJlc3Vs
dEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5
cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwog
ICAgICAgICBwcm90b3R5cGVJc0tub3duT2JqZWN0ID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIg
PSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnJlc3VsdEpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVJbnN0YW5j
ZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9H
UFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNSLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFu
Y2VvZjo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy5wcm90b3R5cGVHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6cHJvdG9KU1IucGF5bG9hZEdQUigp
OworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNl
b2Y6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdH
UFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAg
ICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVl
SlNSLnRhZ0dQUigpOwogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3Rv
SlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeVZhbDoKICAgICBjYXNlIEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lOiAKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVCcmFuZDog
CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwotICAgICAgICBiYXNlR1BS
ID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgcmVncy5wcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lz
dGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cHJv
cGVydHlKU1IucGF5bG9hZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJ
bmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnN0dWJJbmZvR1BSOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUluQnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBC
YXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2
YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRhZ0dQUigp
OworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OmJh
c2VKU1IudGFnR1BSKCk7CisgICAgICAgIHYucHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUi50YWdHUFIoKTsK
ICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlJZDoKICAg
ICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BS
ID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0
ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUlu
QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5m
b0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFz
ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigp
OworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3Vs
dEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5CeUlkOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0g
QmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVl
VGFnR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAg
ICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OmJhc2VKU1Iu
dGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
QnlJZDo6cmVzdWx0SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZDoKQEAgLTYwMyw2NSArNjAzLDY1IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhD
b2RlQmxvY2sqLCBVbmxpCiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkOgogICAgICAgICBo
YXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZh
bGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIg
PSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOwor
ICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICB2LnRoaXNUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNl
VGFnR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAg
ICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSLnRh
Z0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgaGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSLnBheWxv
YWRHUFIoKTsKLSAgICAgICAgcmVncy50aGlzR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNS
ZWdpc3RlcnM6OnRoaXNKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0g
QmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBi
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6YmFzZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgcmVncy50aGlz
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUi5wYXls
b2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0
ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lR2V0
QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7Ci0gICAgICAgIHYudGhp
c1RhZ0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnRhZ0dQ
UigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRX
aXRoVGhpczo6YmFzZUpTUi50YWdHUFIoKTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAg
ICAgIHYudGhpc1RhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6
OnRoaXNKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpQdXRCeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwog
ICAgICAgICByZWdzLnRoaXNHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlR1BSID0g
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
dmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHVi
SW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BSID0gSW52
YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZVB1dEJ5
SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHZh
bHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OnZhbHVlSlNSLnRhZ0dQ
UigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlW
YWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRQcml2YXRlTmFtZToKICAgICAgICAgaGFzQ29u
c3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5
VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm9wZXJ0
eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIo
KTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpT
Ui5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5VmFs
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJv
cGVydHlHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlWYWw6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogICAg
ICAgICBpZiAoYWNjZXNzVHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXRCeVZhbCkKLSAgICAgICAgICAg
IG1fYXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQ
UjsKKyAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpwcm9maWxlR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJh
c2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwot
ICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IudGFnR1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6dmFsdWVKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHYu
cHJvcGVydHlUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3BlcnR5
SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeVZhbDo6dmFsdWVKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gZmFs
c2U7CiAgICAgICAgIHZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9
IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICAgICAgcmVncy5icmFuZEdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpicmFu
ZEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZVByaXZh
dGVCcmFuZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAg
ICAgcmVncy5icmFuZEdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJy
YW5kSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgICAgICB2YWx1ZVRhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUi50
YWdHUFIoKTsKLSAgICAgICAgdi5icmFuZFRhZ0dQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVn
aXN0ZXJzOjpicmFuZEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1IudGFnR1BSKCk7CisgICAgICAgIHYu
YnJhbmRUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpT
Ui50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGViMjBjZTY0NWFmMGJiNTg0
NTVmNjgwM2U4ZDQ3MjRhNzRhNzFmOTQuLjQ5ZmNhYjk0MTM5MjAwNjY4MGM1YjRiZjE3MGU5NWRh
MzllZTMxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCkBAIC0xMzYsNDAgKzEzNiw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KCkK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3BlY3VsYXRp
dmUpOwogfQogCi12b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQot
ewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25D
aGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUp
OwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVy
RnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobV9ncmFw
aC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0gICAgICAgIGFwcGVuZENh
bGwob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSk7Ci0KLSAg
ICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1f
ZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25DaGVja3MubGlu
ayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0KLSAgICAgICAgYXBwZW5kQ2FsbChv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKTsKLQotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKLX0KLQogdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQog
ewogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEg
c3RydWN0dXJlcy4KQEAgLTI3MywxMiArMjM5LDEwIEBAIHZvaWQgSklUQ29tcGlsZXI6Omxpbmso
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+KCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0
dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsK
ICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkp
CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlv
bldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVuayA9IHZtKCkuZ2V0Q1RJU3R1
Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKICAgICBhdXRvIHRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPihvc3JFeGl0VGh1bmsuY29kZSgpKTsKQEAg
LTM4Miw3ICszNDYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1
bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIp
OwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFwcGVuZEl0ZW0obGFiZWxJZ25vcmlu
Z1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcjo6ZGVmYXVsdENvZGVPcmln
aW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7CiAgICAgbGlua09T
UkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIE9TUiBlbnRyeSB0cmFtcG9saW5lcyBpZiBu
ZWNlc3NhcnkuCkBAIC00ODQsNyArNDQ3LDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKCkKICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIpOwogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmFw
cGVuZEl0ZW0obGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVp
bGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CiAgICAgCi0gICAgY29tcGlsZUV4Y2VwdGlvbkhh
bmRsZXJzKCk7CiAgICAgbGlua09TUkV4aXRzKCk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIE9TUiBl
bnRyeSB0cmFtcG9saW5lcyBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKaW5kZXggODk0N2NiZTlhM2M1MjE3NmEyZDQ1MzQ3ODgyOTYyZTk1
YzFlMzhmOS4uZjc2ZGEyMjBhMzk4NzYzNzk3OGY2YmRiMWZlMjBmOGE5NTc1Zjk4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMzIzLDcgKzMyMyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rKExpbmtCdWZmZXImKTsKICAgICAKICAgICB2b2lk
IGV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IoY29uc3QgT1NSRXhpdCYsIFNwZWN1bGF0aW9uUmVjb3Zl
cnkqKTsKLSAgICB2b2lkIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIHZvaWQgbGlu
a09TUkV4aXRzKCk7CiAgICAgdm9pZCBkaXNhc3NlbWJsZShMaW5rQnVmZmVyJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDNiNGNhMWQxNTc1ZDUwYmJm
ZTFjNGI3YWI4MmYxOWVhYzkwNjJiN2YuLmE5M2E2YmE0MTYxNWUwNGE4MzdjOWI5YzEzNDc5ZTg0
ZjUxMTc5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAt
MTI4LDI0ICsxMjgsMTIgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpS
ZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKIAogICAgIC8vIEVtaXQgdGhlIGV4Y2VwdGlvbiBoYW5k
bGVyLgogICAgICpzdGF0ZS5leGNlcHRpb25IYW5kbGVyID0gaml0LmxhYmVsKCk7Ci0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRsZXIgPSBq
aXQuanVtcCgpOwogICAgIFZNKiB2bVB0ciA9ICZ2bTsKICAgICBqaXQuYWRkTGlua1Rhc2soCiAg
ICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGhhbmRsZXIsIENvZGVMb2NhdGlvbkxhYmVsKHZtUHRyLT5nZXRDVElTdHViKGhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAg
ICAgIH0pOwotI2Vsc2UKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cih2bSk7Ci0gICAgaml0LmFkZExpbmtUYXNrKAotICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKLSAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKLSAg
ICAgICAgfSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKICAgICBzdGF0
ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGpp
dCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpGVEwsIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IGE2YWZmZTM1
OWE5MTk5YTU4MDVlMzlhOGE0MDlhMmE1YjUzNWQwZDkuLjI4YmRlZTNiYTc1NTMwNjZlNTMwMzcx
MzU3NDg2MTZiZDNiOGNmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApA
QCAtNzgsMTcgKzc4LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGpp
dC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Q2hlY2sgPSBqaXQuY2Fs
bChPcGVyYXRpb25QdHJUYWcpOwogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAg
ICAgICAgICBhdXRvIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIgPSBqaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpMZXNzVGhhbiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDApKTsKLSNlbHNlCi0gICAgICAgICAgICBhdXRvIG5vRXhjZXB0aW9uID0g
aml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRv
cEVudHJ5RnJhbWUpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNh
bGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsK
LSAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCiAKICAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAg
ICAgICAgICAgICAgIGppdC5sb2FkNjQodm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUkluZm86
OnJlZ1QxKTsKQEAgLTExMSwxMSArMTAxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsaW5rQnVm
ZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6
IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKSk7Ci0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIsIENv
ZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKLSNlbHNlCi0g
ICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRpb25IYW5kbGVyRnJv
bUNhbGxlckZyYW1lLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKTsKLSNlbmRpZgogICAgICAgICAgICAg
bGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHI8SklUVGh1bmtQdHJU
YWc+KHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIHN0YXRlLmdlbmVyYXRlZEZ1bmN0
aW9uKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggMjNlMDg3MThkYmY4MjA0MjM1ZTM5OWFhNjVjYjBkOTkwODI5NzFlMC4uNDdh
YjNlODE1MmE0MzgyODkyMDdiYzRlOWQ4MTgyOGRmYzNhMzg3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xOTE5LDQ5ICsxOTE5LDYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZU5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogCi0gICAgLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVu
IGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlz
IGluIHN0YXRpYwotICAgIC8vIGFzc2VydGlvbnMgdG8gZW5zdXJlIHRoYXQgcmVnaXN0ZXIgYWxp
YXNlcyBsaXZlIGF0IHRoZSBzYW1lIHBvaW50IGRvIG5vdCBtYXAgdG8gdGhlIHNhbWUKLSAgICAv
LyBhcmNoaXRlY3R1cmFsIHJlZ2lzdGVyLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXAoQXJncy4uLiBhcmdzKSB7IHJl
dHVybiBub092ZXJsYXBJbXBsKDAsIGFyZ3MuLi4pOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gQmFz
ZSBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJuIHRydWU7IH0KLQotICAg
IC8vIEdQUlJlZyBjYXNlCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgUmVnaXN0ZXJJ
RCBncHIsIEFyZ3MuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIG1hc2sgPSBub092
ZXJsYXBJbXBsUmVnTWFzayhncHIpOwotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQgfCBt
YXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICAvLyBKU1ZhbHVlUmVncyBjYXNlCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3Zl
cmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4uIGFyZ3MpCi0g
ICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soanNyLnBh
eWxvYWRHUFIoKSk7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgbWFzayB8PSBub092
ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkpOwotI2VuZGlmCi0gICAgICAgIGlmICh1c2Vk
ICYgbWFzaykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG5vT3Zl
cmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1wbFJlZ01hc2soUmVnaXN0ZXJJRCBncHIpCi0gICAg
ewotICAgICAgICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICByZXR1cm4g
MFVMTDsKLSAgICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdwcik7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdCA8IHNpemVvZih1aW50NjRfdCkgKiBDSEFSX0JJ
VCk7Ci0gICAgICAgIHJldHVybiAxVUxMIDw8IGJpdDsKLSAgICB9Ci0KIHByb3RlY3RlZDoKICAg
ICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVySW1wbChH
UFJSZWcgY2FsbGVlU2F2ZXNCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Jhc2VsaW5lSklUUmVnaXN0ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNjNDY5ODU3MDkzNmM1Mjc1
MjcwMmY0ZDNmYjllOWU1ZTM1MDRiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaApAQCAtMCwwICsxLDQ1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmFzZWxp
bmVKSVRSZWdpc3RlcnMgeworCituYW1lc3BhY2UgQ2FsbCB7CisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGNhbGxlZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEdQ
UlJlZyBjYWxsZWVHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcg
Y2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKK30KKworbmFtZXNwYWNlIENoZWNr
VHJhcHMgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZv
Ojpub25BcmdHUFIwIH07Cit9CisKK25hbWVzcGFjZSBFbnRlciB7CisgICAgY29uc3RleHByIEdQ
UlJlZyBjYW5CZU9wdGltaXplZEdQUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHBy
IEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgeyBHUFJJbmZvOjpyZWdUMSB9OworfQorCituYW1lc3Bh
Y2UgSW5zdGFuY2VvZiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjIgfTsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvdG9KU1IgeyBHUFJJbmZvOjphcmd1bWVudEdQUjMgfTsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIxIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMSB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0
SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeworI2lmIENQVShNSVBTKQorICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMgorI2Vsc2UKKyAgICAgICAgSlNSSW5mbzo6anNSZWdUMzIKKyNl
bmRpZgorICAgIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgSlNSSW5m
bzo6anNSZWdUNTQgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlSlNSLCBwcm90
b0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUikpOworfQorCituYW1l
c3BhY2UgSkZhbHNlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgSlRydWUgeworICAgIGNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07Cit9CisKK25hbWVzcGFj
ZSBUaHJvdyB7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRo
cm93KTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB0aHJvd25WYWx1ZUpTUiB7IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24s
IDE+KCkgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5m
bzo6bm9uQXJnR1BSMCB9OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHRocm93blZhbHVl
SlNSLCBieXRlY29kZU9mZnNldEdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIHRocm93blZh
bHVlSlNSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7Cit9CisKK25h
bWVzcGFjZSBSZXNvbHZlU2NvcGUgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIg
eyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NvcGVHUFIgeyBHUFJJ
bmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBH
UFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BS
LCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJ
IHRodW5rIik7Cit9CisKK25hbWVzcGFjZSBHZXRGcm9tU2NvcGUgeworICAgIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NvcGVHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgIHN0YXRpY19hc3NlcnQobm9P
dmVybGFwKG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVPZmZzZXRHUFIpLCAiUmVxdWly
ZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7Cit9CisKK25hbWVzcGFjZSBQdXRUb1Njb3BlIHsK
KyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6YXJndW1l
bnRHUFIyIH07Cit9CisKK25hbWVzcGFjZSBHZXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNl
ZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisKKyAgICAvLyBG
YXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJ
bmZvOjpyZWdUMSB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJ
bmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJK
U1IgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBkb250Q2xvYmJlckpTUiB7IEdQUkluZm86OnJlZ1Q2LCBH
UFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KGJhc2VKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBkb250Q2xvYmJlckpTUiksICJSZXF1
aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIs
IHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlv
biIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5SWRXaXRoVGhpcyB7CisgICAgLy8gUmVn
aXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgeyBHUFJJbmZvOjpy
ZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHRoaXNKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0
IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdGhpc0pTUiwgc3R1YkluZm9HUFIsIHNjcmF0
Y2hHUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0
aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
eyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHRoaXNKU1IsIGJ5dGVjb2Rl
T2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IHRoaXNKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3Bh
Y2UgR2V0QnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xv
dyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpy
ZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MTAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpq
c1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgRmFzdFBhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2VsaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZv
ciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAg
ICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9Owor
I2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmls
ZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSLCBzdHViSW5m
b0dQUiwgcHJvZmlsZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwg
dG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorbmFt
ZXNwYWNlIEVudW1lcmF0b3JHZXRCeVZhbCB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAg
IC8vIFdlIHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxp
emluZyByZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCisgICAgc3RhdGljX2Fzc2Vy
dChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7CisgICAgc3RhdGljX2Fzc2VydChyZXN1
bHRKU1IgPT0gR2V0QnlWYWw6OnJlc3VsdEpTUik7CisgICAgc3RhdGljX2Fzc2VydChzdHViSW5m
b0dQUiA9PSBHZXRCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSKTsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDMgeyBHUFJJbmZvOjpyZWdUNSB9OworfQorI2VuZGlm
CisKK25hbWVzcGFjZSBQdXRCeUlkIHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZh
c3QgYW5kIFNsb3cgcGF0aHMKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEw
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdU
MzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFt
ZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6
cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IGJhc2VKU1Iu
dGFnR1BSKCkgfTsgLy8gUmV1c2luZyByZWdUMSBmb3IgYmV0dGVyIGNvZGUgc2l6ZSBvbiBBUk1f
VEhVTUIyCisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
dmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUi5wYXlsb2FkR1BSKCks
IHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIpLCAiUmVxdWly
ZWQgZm9yIERhdGFJQyIpOworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVy
cworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Qz
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdU
NCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBn
bG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BS
UmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VuZGlmCisgICAg
ICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBieXRlY29kZU9m
ZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB2
YWx1ZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIpLCAiUmVx
dWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisKK25hbWVzcGFj
ZSBQdXRCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93
IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Bl
cnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
IHsgR1BSSW5mbzo6cmVnVDYsIEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDUgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBw
YXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJv
ZmlsZUdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAgIH0KKwor
ICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q1CisjZWxpZiBDUFUoQVJNX1RI
VU1CMikKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYSBiaXQgc2hvcnQgb24gcmVnaXN0ZXJz
IG9uIEFSTV9USFVNQjIsIGJ1dCB3ZSBjYW4ganVzdCBhYm91dCBnZXQgYXdheSB3aXRoIHRoaXMK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OjpzY3JhdGNoUmVnaXN0ZXIoKQor
I2Vsc2UgLy8gT3RoZXIgSlNWQUxVRTMyXzY0CisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSIHsgZ2xvYmFsT2JqZWN0R1BSIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1
bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlK
U1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSKSwg
IlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1l
c3BhY2UgSW5CeUlkIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdldEJ5
SWQ6OmJhc2VKU1IgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNS
SW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
IHsgR2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSIH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoR1BSIHsgR2V0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFIgfTsKK30KKworbmFt
ZXNwYWNlIEluQnlWYWwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBK
U1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlK
U1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgc3RhdGljX2Fzc2Vy
dChiYXNlSlNSID09IEdldEJ5VmFsOjpiYXNlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5SlNSID09IEdldEJ5VmFsOjpwcm9wZXJ0eUpTUik7Cit9CisKK25hbWVzcGFjZSBEZWxCeUlk
IHsKKyAgICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworI2VuZGlmCisKKyAgICAv
LyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgRmFzdFBhdGggeworICAg
ICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9Owor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9Owor
I2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAv
LyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QwIH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpy
ZWdUMCB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBl
Y21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJbmZvOjpyZWdUNyB9
OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKSwgIlJl
cXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChiYXNlSlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQ
UiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsK
KyAgICB9Cit9CisKK25hbWVzcGFjZSBEZWxCeVZhbCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQg
b24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QzMiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7
IEpTUkluZm86OmpzUmVnVDEwIH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJl
Z2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisjZW5kaWYKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93
IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2Rl
R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1Q0
IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdU
NiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVn
VDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQUiks
ICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGVjbWFNb2RlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHJpdmF0ZUJyYW5kIHsKKyAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdldEJ5VmFsOjpiYXNlSlNSIH07IC8vIFJlcXVpcmVkIGJ5
IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYnJhbmRK
U1IgeyBHZXRCeVZhbDo6cHJvcGVydHlKU1IgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cg
cGF0aCB0aHVuaworCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBm
b3IgRGF0YUlDIik7CisgICAgfQorCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdldEJ5VmFsOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFIgfTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVu
aworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR2V0QnlWYWw6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRoIHRodW5r
CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIGJyYW5kSlNSLCBieXRl
Y29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRo
dW5rIik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBCYXNlbGluZUpJVFJlZ2lzdGVycwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggMDRlOGFmZGU0MWMyNjhhZDlj
ZjJlYjFjNWQzY2YwNDA5ODI4OTM1ZS4uOTUxZjcyNzdjNjk3N2RhMWNhMmZmODJlNTMyMzM5NDUz
ZTA4NWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJMaW5rQnVmZmVy
LmgiCisjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTQsNiArOTUsNDQgQEAg
dm9pZCBDQ2FsbEhlbHBlcnM6OmVtaXRKSVRDb2RlT3ZlcihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNJbnRlcm5hbFB0clRhZz4gd2hlcmUKICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIE5v
UHRyVGFnLCBkZXNjcmlwdGlvbik7CiB9CiAKK3N0YXRpY19hc3NlcnQoISgobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwgKyAyICogc2l6ZW9mKENQVVJlZ2lzdGVyKSkgJSAxNiksICJTdGFj
ayBtdXN0IGJlIGFsaWduZWQgYWZ0ZXIgQ1RJIHRodW5rIGVudHJ5Iik7CisKK3ZvaWQgQ0NhbGxI
ZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1ZShib29sIHJldHVybkFkZHJlc3NBbHJlYWR5VGFn
Z2VkKQoreworICAgIC8vIFN0YXNoIGZyYW1lIHBvaW50ZXIgYW5kIHJldHVybiBhZGRyZXNzCisg
ICAgaWYgKCFyZXR1cm5BZGRyZXNzQWxyZWFkeVRhZ2dlZCkKKyAgICAgICAgdGFnUmV0dXJuQWRk
cmVzcygpOworI2lmIENQVShYODZfNjQpCisgICAgcHVzaChYODZSZWdpc3RlcnM6OmVicCk7IC8v
IHJldHVybiBhZGRyZXNzIHB1c2hlZCBieSB0aGUgY2FsbCBpbnN0cnVjdGlvbgorI2VsaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikKKyAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHB1c2hQYWlyKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICBlcnJv
ciAiTm90IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlmCisgICAgLy8gTWFrZSBlbm91
Z2ggc3BhY2Ugb24gdGhlIHN0YWNrIHRvIHBhc3MgYXJndW1lbnRzIGluIGEgY2FsbAorICAgIGlm
IGNvbnN0ZXhwciAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIHN1YlB0
cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7Cit9CisKK3ZvaWQgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1
ZSgpCit7CisgICAgLy8gUmVzZXQgc3RhY2sKKyAgICBpZiBjb25zdGV4cHIgKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgIC8vIFJl
c3RvcmUgZnJhbWUgcG9pbnRlciBhbmQgcmV0dXJuIGFkZHJlc3MKKyNpZiBDUFUoWDg2XzY0KQor
ICAgIHBvcChYODZSZWdpc3RlcnM6OmVicCk7IC8vIFJldHVybiBhZGRyZXNzIGxlZnQgb24gc3Rh
Y2sKKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpCisgICAgcG9wUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHBv
cFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisjZWxz
ZQorIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYWZjNWRjYzg5OWU3NTYzMzlhODExNjM0
ZTIzYzIxN2JkYTFjY2Y2NC4uNjg3ZWZkYjAwZWFjN2QxODU5ZTY5NzE1MzlkZjBhYTVlZDM5OGE3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC04NTMsMTQ1
ICs4NTMsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0SklUQ29kZU92ZXIoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+IHdoZXJlLCBTY29wZWRMYW1iZGE8
dm9pZChDQ2FsbEhlbHBlcnMmKT4sIGNvbnN0IGNoYXIqKTsKIAotcHJpdmF0ZToKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgotICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZBcmcoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVt
cGxhdGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOwotICAgIH0KLQotI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwg
dW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiByZXN0KQot
ICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtIC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1
bWVudHMiKTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIK
LSAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXgg
LSAxPihyZXN0Li4uKTsKLSAgICAgICAgfQotICAgIH0KLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwg
dW5zaWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCwg
R1BSUmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCi0gICAgewotICAgICAgICBjb25zdGV4cHIgc2l6
ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0g
SW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAi
RG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAgICAgICBpZiBj
b25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJy
ZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKLSAg
ICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcg
ZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlyZCk7IC8v
IE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjph
cmd1bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3
aXRoIGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVn
aXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBp
dCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBz
ZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCi0gICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZp
cnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAg
ICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNv
bmQsIHRoaXJkLCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYg
dGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2lk
ZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0
ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVyCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAt
IDE+KGZpcnN0LCByZXN0Li4uKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQg
d2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0g
MT4odGhpcmQsIHJlc3QuLi4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5z
aWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFy
ZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2Ug
YXJndW1lbnRzIik7Ci0gICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3NlY29uZCcg
YXJlIG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3Rh
Y2sgYW55d2F5Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7Ci0gICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHBy
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3Mg
eyBzZWNvbmQsIGZpcnN0IH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiBjb25z
dGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAg
ICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAx
PihzZWNvbmQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0KQot
ICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9m
QXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJn
ZSBhcmd1bWVudHMiKTsKLSAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5ldmVyIGFu
IGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5
Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0
IG9mIHJlZ2lzdGVycyIpOwotICAgIH0KLSNlbmRpZgotCi1wdWJsaWM6Ci0gICAgLy8gU2VlIHBy
ZWZlcnJlZEFyZ3VtZW50R1BSIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlz
IHZlcnNpb24gcmV0dXJucyBhIEpTVmFsdWVSZWdzCi0gICAgLy8gaW5zdGVhZCBvZiBhIEdQUiwg
d2hpY2ggb24gSlNWQUxVRTY0IGFyZSBlcXVpdmFsZW50LCBidXQgb24gSlNWQUxVRTMyXzY0IGEg
SlNWYWx1ZVJlZ3MgaXMKLSAgICAvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVu
Y3Rpb24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEK
LSAgICAvLyBKU1ZhbHVlL0VuY29kZWRKU1ZhbHVlIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIEpT
VkFMVUU2NCBhbiBKU1ZBTFVFMzJfNjQgcGxhdGZvcm1zLCBhbmQgdXNlCi0gICAgLy8gcHJlZmVy
cmVkQXJndW1lbnRHUFIgd2hlbiBwYXNzaW5nIGhvc3QgcG9pbnRlcnMuCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojph
cml0eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgotICAgIHByZWZlcnJlZEFyZ3VtZW50SlNSKCkK
LSAgICB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSNpZiAhT1MoV0lORE9XUykKLSAgICAgICAgcmV0
dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKLSAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIsCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50
R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBwaWNr
SlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAg
ICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCAgIEdQ
UkluZm86Om5vbkFyZ0dQUjEpOwotI2VuZGlmCi0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotI2lm
IENQVShBUk1fVEhVTUIyKQotICAgICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBndWFyYW50
ZWVkIHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNhbiB1c2UK
LSAgICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCi0gICAgICAgIHJl
dHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUNywg
ICAgICAgIEdQUkluZm86OnJlZ1Q2LAotICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAg
ICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVyczo6bHIpOwotI2VsaWYgQ1BVKE1J
UFMpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCi0gICAg
ICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBH
UFJJbmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1QzLAotICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJlZ1Q2KTsK
LSNlbmRpZgotI2VuZGlmCi0gICAgfQotCi0gICAgLy8gQ29tcHV0ZXMgKHN0YXRpY2FsbHksIGF0
IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdpc3RlciBhbiBhcmd1bWVu
dCBzaG91bGQgYmUKLSAgICAvLyBsb2FkZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxsLiBUaGlz
IHlpZWxkcyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhlCi0gICAg
Ly8gaW5pdGlhbCBhcmd1bWVudHMgYXMgYXBwcm9wcmlhdGUsIHRoZW4gc3VpdGFibGUgdGVtcG9y
YXJ5IHJlZ2lzdGVycyBmb3IgdGhlIHJlbWFpbmluZwotICAgIC8vIGFyZ3VtZW50cy4gVGhlIGlk
ZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1hbCBh
bW91bnQgb2Ygd29yayB3aGVuCi0gICAgLy8gdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHRvIGhvbGQg
dGhlIGFyZ3VtZW50cywgc28gaWYgeW91IGFyZSBsb2FkaW5nIG1vc3QgYXJndW1lbnRzIGZyb20g
bWVtb3J5Ci0gICAgLy8gYW55d2F5LCB1c2luZyB0aGVzZSByZWdpc3RlcnMgeWllbGRzIHRoZSBz
bWFsbGVzdCBjb2RlIHJlcXVpcmVkIGZvciBhIGNhbGwuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0
ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFy
Z051bSksIEdQUlJlZz4KLSAgICBwcmVmZXJyZWRBcmd1bWVudEdQUigpCi0gICAgewotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlv
blR5cGUsIEFyZ051bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9lcyBub3QgZml0IGluIEdQUiIpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybiBwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0+KCkucGF5bG9hZEdQUigpOwotICAgIH0KKyAgICB2b2lkIGVtaXRDVElUaHVua1By
b2xvZ3VlKGJvb2wgcmV0dXJuQWRkcmVzc0FscmVhZHlUYWdnZWQgPSBmYWxzZSk7CisgICAgdm9p
ZCBlbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCmlu
ZGV4IDgxODBkNmFiYTU3NDA0MDFhMmZjYWIyZDVhMWZkZDUzYzlhMjA2YTMuLjFjNzRmMWY5ODJm
YzUwOTk2ZDhlMWZlZGIwMWZlM2FiYmQ3YWQ4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNp
bmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgpAQCAtOTUsOSArOTYsOSBAQCBDYWxsRnJhbWVT
aHVmZmxlRGF0YSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50
VGFpbENhbGwoY29ucwogICAgICAgICAgICAgICAgIERhdGFGb3JtYXRKUyk7CiAgICAgfQogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6
aW5HUFIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRh
Rm9ybWF0SlMpOworICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BS
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBEYXRh
Rm9ybWF0SlMpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzaHVmZmxlRGF0YS5jYWxs
ZWUgPSBWYWx1ZVJlY292ZXJ5OjppblBhaXIoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVK
U1IudGFnR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIo
KSk7CisgICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5QYWlyKEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IudGFnR1BSKCksIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIHNodWZm
bGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycygmUmVnaXN0ZXJBdE9mZnNldExpc3Q6Omxs
aW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIHNodWZmbGVEYXRhLnNocmlu
a1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3
N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNjMmNjYjkyMjYuLjgyYWY3MTY5MzA5ZDdjOTAwYWM4ZjBlNTVk
NmI1NzdhYTYxMmI2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC0yNyw2
ICsyNyw4IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPGFycmF5
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvblRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtOTc2LDYgKzk3OCwyMTEgQEAgaW5saW5lIE5vUmVzdWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9S
ZXN1bHRUYWcpIHsgcmV0dXJuIE5vUmVzdWx0OyB9CiAvLyBXZSB1c2UgdGhpcyBoYWNrIHRvIGdl
dCB0aGUgR1BSSW5mbyBmcm9tIHRoZSBHUFJSZWcgdHlwZSBpbiB0ZW1wbGF0ZXMgYmVjYXVzZSBv
dXIgY29kZSBpcyBiYWQgYW5kIHdlIHNob3VsZCBmZWVsIGJhZC4uCiBjb25zdGV4cHIgR1BSSW5m
byB0b0luZm9Gcm9tUmVnKEdQUlJlZykgeyByZXR1cm4gR1BSSW5mbygpOyB9CiAKK2NsYXNzIE5v
T3ZlcmxhcEltcGwgeworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9PdmVybGFwSW1w
bFJlZ01hc2soR1BSUmVnIGdwcikKKyAgICB7CisgICAgICAgIGlmIChncHIgPT0gSW52YWxpZEdQ
UlJlZykKKyAgICAgICAgICAgIHJldHVybiAwVUxMOworICAgICAgICB1bnNpZ25lZCBiaXQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3ByKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0IDwg
Y291bnRPZkJpdHM8dWludDY0X3Q+KTsKKyAgICAgICAgcmV0dXJuIDFVTEwgPDwgYml0OworICAg
IH0KKworICAgIC8vIEJhc2UgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QpIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIC8vIEdQUlJlZyBjYXNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbm9PdmVybGFwSW1wbCh1aW50NjRfdCB1
c2VkLCBHUFJSZWcgZ3ByLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBt
YXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2soZ3ByKTsKKyAgICAgICAgaWYgKHVzZWQgJiBtYXNr
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1w
bCh1c2VkIHwgbWFzaywgYXJncy4uLik7CisgICAgfQorCisgICAgLy8gSlNWYWx1ZVJlZ3MgY2Fz
ZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgSlNWYWx1ZVJlZ3MganNyLCBBcmdzLi4u
IGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01h
c2soanNyLnBheWxvYWRHUFIoKSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgbWFz
ayB8PSBub092ZXJsYXBJbXBsUmVnTWFzayhqc3IudGFnR1BSKCkpOworI2VuZGlmCisgICAgICAg
IGlmICh1c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFyZ3MuLi4pOworICAgIH0KKworcHVibGlj
OgorICAgIC8vIEVudHJ5IHBvaW50CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVudHJ5KEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9P
dmVybGFwSW1wbCgwLCBhcmdzLi4uKTsgfQorfTsKKworLy8gQ2hlY2tzIHRoYXQgdGhlIGdpdmVu
IGxpc3Qgb2YgR1BSUmVncyBhbmQgSlNWYWx1ZVJlZ3MgZG8gbm90IG92ZXJsYXAuIFVzZSB0aGlz
IGluIHN0YXRpYworLy8gYXNzZXJ0aW9ucyB0byBlbnN1cmUgdGhhdCByZWdpc3RlciBhbGlhc2Vz
IGxpdmUgYXQgdGhlIHNhbWUgcG9pbnQgZG8gbm90IG1hcCB0byB0aGUgc2FtZQorLy8gYXJjaGl0
ZWN0dXJhbCByZWdpc3Rlci4KK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorY29uc3RleHBy
IGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gTm9PdmVybGFwSW1wbDo6ZW50
cnkoYXJncy4uLik7IH0KKworY2xhc3MgUHJlZmVycmVkQXJndW1lbnRJbXBsIHsKKyAgICBwcml2
YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdO
dW0+CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBzaXplX3Q+IHNpemVPZkFyZygpCisg
ICAgeworICAgICAgICByZXR1cm4gc2l6ZW9mKHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8QXJnTnVtPik7CisgICAgfQorCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBB
cmdzLi4uIHJlc3QpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVy
YXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKSA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFu
ZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBpZiBjb25zdGV4cHIgKCFJbmRleCkKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IGZpcnN0IH07CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVl
IHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtLCBJbmRleCAtIDE+KHJlc3QuLi4pOworICAgICAgICB9CisgICAgfQorI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBH
UFJSZWcgc2Vjb25kLCBHUFJSZWcgdGhpcmQsIEFyZ3MuLi4gcmVzdCkKKyAgICB7CisgICAgICAg
IGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25U
eXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJy
ZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAgICBpZiBjb25zdGV4
cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4g
c2luZ2xlIEdQUgorICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZWNvbmQpOyAvLyBPdGhl
cndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisgICAgICAgICAgICAgICAgVU5VU0VEX1BB
UkFNKHRoaXJkKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25k
ID09IEdQUkluZm86OmFyZ3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQ
UjMpIHsKKyAgICAgICAgICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5l
ZWRzIHRvIHN0YXJ0IHdpdGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRH
UFIxCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgdGhpcmQsIHNlY29uZCB9
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRo
ZXIgYW4gZXZlbiByZWdpc3Rlciwgb3IgdGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0
aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsK
KyAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKKyAgICAgICAgICAgICAgICBV
TlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHBy
CisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJ
bmRleCAtIDE+KHNlY29uZCwgdGhpcmQsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIGlm
IChmaXJzdCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjEgJiYgc2Vjb25kID09IEdQUkluZm86OmFy
Z3VtZW50R1BSMiAmJiB0aGlyZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjMpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXaWRlIGFyZ3VtZW50IHBhc3NlZCBpbiBHUFJzIG5lZWRzIHRvIHN0YXJ0IHdp
dGggZXZlbiByZWdpc3RlciBudW1iZXIsIHNvIHNraXAgYXJndW1lbnRHUFIxLCBidXQgcmV1c2Ug
aXQgbGF0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBB
cmdOdW0sIEluZGV4IC0gMT4oZmlyc3QsIHJlc3QuLi4pOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBGaXJzdCBpcyBlaXRoZXIgYW4gZXZlbiByZWdpc3Rlciwgb3Ig
dGhpcyBhcmd1bWVudCB3aWxsIGJlIHB1c2hlZCB0byB0aGUgc3RhY2ssIHNvIGl0IGRvZXMgbm90
IG1hdHRlcgorICAgICAgICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFy
Z051bSwgSW5kZXggLSAxPih0aGlyZCwgcmVzdC4uLik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0LCBHUFJS
ZWcgc2Vjb25kKQorICAgIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50
QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRv
IGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3Qn
IGFuZCAnc2Vjb25kJyBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVz
aGVkIG9uIHRoZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpIHsK
KyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAg
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1
ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlUmVncyB7IHNlY29uZCwgZmlyc3QgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwcihzaXplT2ZDdXJyZW50QXJnIDw9IDQpIHsKKyAgICAgICAgICAg
ICAgICBVTlVTRURfUEFSQU0oZmlyc3QpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29u
c3RleHByCisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJn
TnVtLCBJbmRleCAtIDE+KHNlY29uZCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdp
c3RlcnMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJnTnVtLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcGlja0pTUihH
UFJSZWcgZmlyc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkN1cnJl
bnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5kZXg+KCk7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cg
dG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICAvLyBCYXNlIGNhc2UsICdmaXJz
dCcgaXMgbmV2ZXIgYW4gYXJndW1lbnQgcmVnaXN0ZXIsIG9yIHdpbGwgYmUgcHVzaGVkIG9uIHRo
ZSBzdGFjayBhbnl3YXkKKyAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50QXJnIDw9
IDQpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRURfV0lU
SF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7CisgICAgfQorI2VuZGlmCisKK3B1YmxpYzoK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CisgICAgcHJlZmVycmVk
QXJndW1lbnRKU1IoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorI2lmICFPUyhXSU5ET1dT
KQorICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAorICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BS
SW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86Om5v
bkFyZ0dQUjAsICAgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CisjZW5kaWYKKyNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCisjaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgIC8vIFRoZSBsYXN0IHJlZ2lz
dGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGZvciBjYWxscywg
c28gd2UgY2FuIHVzZQorICAgICAgICAvLyB0aGUgbGluayByZWdpc3RlciBhcyBhIHRlbXBvcmFy
eS4KKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAg
ICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQ
UkluZm86OnJlZ1Q3LCAgICAgICAgR1BSSW5mbzo6cmVnVDYsCisgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgQVJNUmVnaXN0ZXJzOjpscik7
CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjMsIEdQUkluZm86OnJlZ1QyLCAgICAgICAgR1BSSW5mbzo6cmVnVDMsCisgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUNCwgICAgICAgIEdQUkluZm86OnJlZ1Q1LCAgICAgICAgR1BS
SW5mbzo6cmVnVDYpOworI2VuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5
ID4gQXJnTnVtKSwgR1BSUmVnPgorICAgIHByZWZlcnJlZEFyZ3VtZW50R1BSKCkKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3Bl
cmF0aW9uVHlwZSwgQXJnTnVtPigpIDw9IDQsICJBcmd1bWVudCBkb2VzIG5vdCBmaXQgaW4gR1BS
Iik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHByZWZlcnJlZEFyZ3VtZW50SlNSPE9wZXJhdGlv
blR5cGUsIEFyZ051bT4oKS5wYXlsb2FkR1BSKCk7CisgICAgfQorfTsKKworLy8gQ29tcHV0ZXMg
KHN0YXRpY2FsbHksIGF0IGNvbXBpbGF0aW9uIHRpbWUpLCB0aGUgaWRlYWwgbWFjaGluZSByZWdp
c3RlciBhbiBhcmd1bWVudCBzaG91bGQgYmUKKy8vIGxvYWRlZCBpbnRvIGZvciBhIGZ1bmN0aW9u
IGNhbGwuIFRoaXMgeWllbGRzIHRoZSBBQkkgc3BlY2lmaWMgYXJndW1lbnQgcmVnaXN0ZXJzIGZv
ciB0aGUKKy8vIGluaXRpYWwgYXJndW1lbnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxl
IHRlbXBvcmFyeSByZWdpc3RlcnMgZm9yIHRoZSByZW1haW5pbmcKKy8vIGFyZ3VtZW50cy4gVGhl
IGlkZWEgaXMgdGhhdCAnc2V0dXBBcmd1bWVudHMnIHdpbGwgaGF2ZSB0byBkbyB0aGUgbWluaW1h
bCBhbW91bnQgb2Ygd29yayB3aGVuCisvLyB1c2luZyB0aGVzZSByZWdpc3RlcnMgdG8gaG9sZCB0
aGUgYXJndW1lbnRzLCBzbyBpZiB5b3UgYXJlIGxvYWRpbmcgbW9zdCBhcmd1bWVudHMgZnJvbSBt
ZW1vcnkKKy8vIGFueXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxl
c3QgY29kZSByZXF1aXJlZCBmb3IgYSBjYWxsLgordGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChGdW5j
dGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+CitwcmVm
ZXJyZWRBcmd1bWVudEdQUigpCit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6
cHJlZmVycmVkQXJndW1lbnRHUFI8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCisvLyBT
ZWUgcHJlZmVycmVkQXJndW1lbnRHUFIgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24u
IFRoaXMgdmVyc2lvbiByZXR1cm5zIGEgSlNWYWx1ZVJlZ3MKKy8vIGluc3RlYWQgb2YgYSBHUFIs
IHdoaWNoIG9uIEpTVkFMVUU2NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBh
IEpTVmFsdWVSZWdzIGlzCisvLyByZXF1aXJlZCB0byBob2xkIGEgNjQtYml0IHdpZGUgZnVuY3Rp
b24gYXJndW1lbnQsIHNvIHVzZSB0aGlzIGluIHBhcnRpY3VsYXIgd2hlbiBwYXNzaW5nIGEKKy8v
IEpTVmFsdWUvRW5jb2RlZEpTVmFsdWUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggSlNWQUxV
RTY0IGFuIEpTVkFMVUUzMl82NCBwbGF0Zm9ybXMsIGFuZCB1c2UKKy8vIHByZWZlcnJlZEFyZ3Vt
ZW50R1BSIHdoZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgordGVtcGxhdGUgPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KK2NvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90
PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBKU1ZhbHVl
UmVncz4KK3ByZWZlcnJlZEFyZ3VtZW50SlNSKCkKK3sKKyAgICByZXR1cm4gUHJlZmVycmVkQXJn
dW1lbnRJbXBsOjpwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCk7
Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBjNjRkZGVmMjNkNGIyZDYyNGZiNzM0NTlm
MDU0N2FmNTc4ODk0NjlmLi41MTViNzk2YjhhYjM4OTdmZmFkOTgyMmIwNDI1ZWVjYmIwNTRlMDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBK
SVQ6OnJlc2V0U1AoKQogI2RlZmluZSBERUZJTkVfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBv
cF8jI25hbWU6IHsgXAogICAgICAgICBpZiAobV9ieXRlY29kZUluZGV4ID49IHN0YXJ0Qnl0ZWNv
ZGVJbmRleCkgeyBcCi0gICAgICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoXyMjbmFtZSk7IFwK
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7IFwKICAgICAgICAgfSBcCiAgICAgICAg
IE5FWFRfT1BDT0RFX0lOX01BSU4ob3BfIyNuYW1lKTsgXApAQCAtMTkwLDE1ICsxOTAsMTUgQEAg
dm9pZCBKSVQ6OnJlc2V0U1AoKQogCiAjZGVmaW5lIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKG5h
bWUpIFwKICAgICBjYXNlIG9wXyMjbmFtZTogeyBcCi0gICAgICAgIGVtaXRTbG93Q2FzZUNhbGwo
Y3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAorICAgICAgICBl
bWl0U2xvd0Nhc2VDYWxsKGl0ZXIsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgIGJyZWFr
OyBcCiAgICAgfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0dWIpCit2b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBTbG93UGF0aEZ1bmN0aW9uIHN0
dWIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzdHViKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHN0dWIpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKQEAgLTY1Nyw5ICs2NTcsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChzdHJpY3RlcSkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AobnN0cmljdGVxKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfU0xPV19PUChnZXRfcHJvdG90eXBlX29mKQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1AocmVzb2x2ZV9zY29wZSkK
LSNlbmRpZgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChjaGVja190ZHopCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHRvX3Byb3BlcnR5X2tleSkKICAgICAgICAgZGVm
YXVsdDoKQEAgLTg2MCw5ICs4NTcsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0
RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIG1fYXJpdHlD
aGVjayA9IGVudHJ5TGFiZWw7IC8vIE5ldmVyIHJlcXVpcmUgYXJpdHkgZml4dXAuCiAKICAgICBB
U1NFUlQobV9qbXBUYWJsZS5pc0VtcHR5KCkpOwotICAgIAotICAgIHByaXZhdGVDb21waWxlRXhj
ZXB0aW9uSGFuZGxlcnMoKTsKLSAgICAKKwogICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAg
ICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbCgpKTsKICAgICBtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsKCksIFBDVG9Db2RlT3JpZ2luTWFwQnVp
bGRlcjo6ZGVmYXVsdENvZGVPcmlnaW4oKSk7CkBAIC05MTQsMTIgKzkwOSwxMCBAQCB2b2lkIEpJ
VDo6bGluaygpCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVm
ZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVMb2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJ
U3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkp
OwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2suZW1wdHko
KSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJh
bWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2Vw
dGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7Ci0jZW5kaWYKIAogICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFySnVtcHMpIHsK
ICAgICAgICAgaWYgKHJlY29yZC50YXJnZXQpCkBAIC0xMDQwLDM1ICsxMDMzLDYgQEAgQ29tcGls
YXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25FZmZvcnQKICAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQoY29kZUJs
b2NrKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQot
ewotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpIHsKLSAgICAgICAgbV9leGNlcHRpb25D
aGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2subGluayh0aGlzKTsKLQotICAgICAgICBjb3B5Q2Fs
bGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUp
OwotCi0gICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVy
RnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgcHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxS
ZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpKSk7Ci0gICAg
ICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4
Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmso
dGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
ICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVu
ZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOwotICAgICAgICBq
dW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKLX0KLQogdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVm
b3JlQ29tcGlsZSgpCiB7CiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9z
dCB1cCB0byBkYXRlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBv
cHRpbWl6YXRpb25zIGZvciBvcF9wcm9maWxlX3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCA4N2NlOWRjNTllMWQyZTY4Y2FmODc1YzE3NjVjYWM0OTUxMmI4MGQ0Li5jMjY1Y2NjMDQ3
OTg3YmY5Yzc3NDc4ODI0MWJlMDcyMWEwYTY1ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
QEAgLTI3Niw4ICsyNzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2so
dm0oKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlv
bkhhbmRsZXJzKCk7Ci0KICAgICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOwog
ICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsKICAgICAg
ICAgdm9pZCBzZXRGYXN0UGF0aFJlc3VtZVBvaW50KCk7CkBAIC01NTMsNyArNTUxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZVR5cGUsIHR5cGVuYW1lIFNsb3dQ
YXRoRnVuY3Rpb25UeXBlPgotICAgICAgICB2b2lkIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVy
dHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgT3Bjb2RlVHlwZSYsIFNsb3dQYXRoRnVu
Y3Rpb25UeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1w
bChjb25zdCBPcGNvZGVUeXBlJiwgU2xvd1BhdGhGdW5jdGlvblR5cGUpOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZW51bWVyYXRvcl9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfaGFzX293bl9wcm9wZXJ0eShjb25zdCBJbnN0cnVj
dGlvbiopOwogCkBAIC02MTQsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCi0gICAgICAgIHZvaWQgZW1pdFNsb3dDYXNl
Q2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
LCBTbG93UGF0aEZ1bmN0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd0Nhc2VDYWxsKFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgICAg
ICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC02MjIsNyArNjIwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAg
ICB2b2lkIGVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHlPckJyYW5kLCBBY2Nlc3NUeXBlKTsKLSAg
ICAgICAgdm9pZCBlbWl0SGFzUHJpdmF0ZVNsb3coVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSwgQWNjZXNzVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEhhc1By
aXZhdGVTbG93KEFjY2Vzc1R5cGUpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgog
ICAgICAgICB2b2lkIGVtaXROZXdGdW5jQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02
NTgsMzkgKzY1NiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9y
KFZNJik7CiAKICAgICBwcml2YXRlOgotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
ICAgICAvLyBUaHVuayBnZW5lcmF0b3JzLgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5l
cmF0b3IoVk0mKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVf
bmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9k
ZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0m
KTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKwogICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29w
ZUdlbmVyYXRvcihWTSYpOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKLSAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50
ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7Cisg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2No
ZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKIAotICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdGh1bmtJc1VzZWRGb3JPcEdldEZyb21TY29wZShSZXNvbHZlVHlwZSByZXNvbHZl
VHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gR2xvYmFsVmFyIGJlY2F1c2UgaXQgaXMg
bW9yZSBlZmZpY2llbnQgdG8gZW1pdCBpbmxpbmUgdGhhbiB1c2UgYSB0aHVuay4KLSAgICAgICAg
ICAgIC8vIFJlc29sdmVkQ2xvc3VyZVZhciBhbmQgTW9kdWxlVmFyIGJlY2F1c2Ugd2UgZG9uJ3Qg
dXNlIHRoZXNlIHR5cGVzIHdpdGggb3BfZ2V0X2Zyb21fc2NvcGUuCi0gICAgICAgICAgICByZXR1
cm4gIShyZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gUmVzb2x2ZWRD
bG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlz
RmFsc2V5R2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfaWRfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7Cisg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CiAgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVz
b2x2ZV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+
CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2
ZVR5cGU+CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYpOworICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9lbnRlcl9oYW5kbGVyR2VuZXJh
dG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihW
TSYpOwogCiAgICAgICAgIEp1bXAgZ2V0U2xvd0Nhc2UoVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKICAgICAgICAgewpAQCAtNzE4LDkgKzcwNiw2IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPik7CiAgICAgICAgIHZv
aWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhBZGRyZXNzKTsKLSNpZiBPUyhXSU5ET1dT
KSAmJiBDUFUoWDg2XzY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4pOwotI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBw
ZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoY29uc3QgRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CiAgICAgICAgIHZv
aWQgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQoQWRkcmVzcywg
VmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7CkBAIC03NjMsNyArNzQ4LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgLy8geDY0IFdpbmRvd3MgY2Fubm90IHVzZSBzdGFuZGFyZCBjYWxs
IHdoZW4gdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlciB0aGFuIDY0IGJpdHMuCiAgICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKGlzNjRCaXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJh
dGlvblR5cGU+OjpSZXN1bHRUeXBlPjo6dmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJh
dGlvbik7CisgICAgICAgICAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlw
ZShvcGVyYXRpb24pOworICAgICAgICAgICAgZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAg
IHJldHVybiBjYWxsOwogICAgICAgICB9CiAjZWxzZSAvLyBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5k
ZXggNzZlMDY4OWZjMTk1MGU0NTUzMTQ2NDdkNTQ5NzI2MDg2ZjI0MmFkOS4uZjQyNjA3NGY0NWJh
ZjRmYzYwYzg1Mjg1ZDBkZmNiMGMxYTc1NWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC00NTEsMTkgKzQ1MSwxOSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwganNSZWdUMTApOwogfQogCi12b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bW9kKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9tb2Qp
OworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX21vZCk7
CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogI2Vsc2UgLy8gQ1BVKFg4Nl82NCkKIAot
dm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3df
cGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTUyMiwxMSArNTIy
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZXN1bHRSZWdz
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvdyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfcG93KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIHNsb3dfcGF0aF9wb3cpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAg
LTk3OCw3ICs5NzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoZ2VuLmVu
ZEp1bXBMaXN0KCkuZW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChnZW4uc2xvd1BhdGhKdW1wTGlz
dCgpLmVtcHR5KCkpOwotICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Rpdik7CisgICAgICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2Rpdik7CiAgICAgICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAK
aW5kZXggZWUzY2M0NzhmZjQ3ZmFkYTcxZWM5ZGMxOGZhZDFkMzQ1NTQ1NjliNS4uYzY4ZTQ3ZWU5
Yzg4YjE2ZTgxNjE0ZmRjOGRjYTBjNjBjNDJjMjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJKSVQuaCIKIAorI2lu
Y2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5k
c0ZvckNoZWNrcG9pbnQuaCIKICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5o
IgogI2luY2x1ZGUgIkNhbGxGcmFtZVNodWZmbGVyLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgSklU
Ojpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUpCiAgICAgSnVtcCBub3RCaWdn
ZXN0ID0gYnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCByZWdUMik7CiAgICAgc3RvcmUzMihyZWdUMiwg
QWRkcmVzcyhyZWdUMCwgQ2FsbExpbmtJbmZvOjpvZmZzZXRPZk1heEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpKTsKICAgICBub3RCaWdnZXN0LmxpbmsodGhpcyk7Ci0gICAgCisKICAgICAv
LyBJbml0aWFsaXplICd0aGlzJy4KICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiA9
IGpzUmVnVDEwOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCB0aGlzSlNS
KTsKQEAgLTE5NiwxMSArMTk3LDExIEBAIHZvaWQgSklUOjpjb21waWxlQ2FsbEV2YWxTbG93Q2Fz
ZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzCiAKICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNp
emVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCBzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChCYXNlbGluZUNhbGxSZWdp
c3RlcnM6OmNhbGxlZUpTUiwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIs
IHJlZ1QzKSk7Ci0gICAgbG9hZFZhbHVlKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJh
bWVBbmRQQykpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUik7CisgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgcmVnVDMpKTsKKyAg
ICBsb2FkVmFsdWUoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVy
KSAqIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOwogICAgIGxvYWRHbG9iYWxPYmpl
Y3QocmVnVDMpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwg
T3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKLSAgICBlbWl0VmlydHVhbENhbGxXaXRob3V0
TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5r
SW5mb0dQUiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9N
ZXRhZGF0YShieXRlY29kZSwgT3BDYWxsRXZhbDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJ
bmZvKCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAg
IGVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxPYmplY3QoKm1fdm0sIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2RlOjpSZWd1bGFyKTsK
ICAgICByZXNldFNQKCk7CiB9CiAKQEAgLTIxMywxOCArMjE0LDE4IEBAIGJvb2wgSklUOjpjb21w
aWxlVGFpbENhbGwoY29uc3QgT3AmLCBVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkKQog
dGVtcGxhdGU8PgogYm9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBi
eXRlY29kZSwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmRl
eCkKIHsKLSAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFp
bENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdp
c3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7Ci0gICAgSnVtcExpc3Qgc2xvd1BhdGhzID0gQ2FsbExp
bmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVn
aXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKKyAgICBtYXRlcmlhbGl6
ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFpbENhbGw6Ok1ldGFkYXRhOjpvZmZz
ZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXRUYWls
Q2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5r
SW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKICAgICAgICAgQ2FsbEZyYW1lU2h1
ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFz
ZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNodWZmbGVyIHsgKnRoaXMs
IHNodWZmbGVEYXRhIH07Ci0gICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFzZWxpbmVDYWxsUmVn
aXN0ZXJzOjpjYWxsTGlua0luZm9HUFIpOworICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICBzaHVmZmxl
ci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAgYWRkU2xvd0Nhc2Uoc2xvd1Bh
dGhzKTsKIAogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAgICBtX2NhbGxDb21w
aWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmRvbmVMb2NhdGlvbiA9IGRvbmVMb2NhdGlv
bjsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjIsOCArMjYzLDggQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNp
Z25lZCBjYWxsTGlua0luZm9JbmQKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCkuYml0cygpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KGxvY2F0aW9uQml0cyksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSArIFRhZ09mZnNldCkpOwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjYWxs
ZWUsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSKTsKLSAgICBzdG9yZVZhbHVlKEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjYWxsZWUsIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IpOwor
ICAgIHN0b3JlVmFsdWUoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUiwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkp
OwogCiAgICAgaWYgKGNvbXBpbGVDYWxsRXZhbChieXRlY29kZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI3MSwxNyArMjcyLDE3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICAgICAvLyBXZSBuZWVkIHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMg
b24gSlNWQUxVRTY0IGEgcG9pbnRlciBjb21wYXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAg
IC8vIHBhdGggY2F0Y2hlcyB0aGlzLgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChC
YXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aElmTm90Q2VsbChCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5k
aWYKIAogICAgIGlmIChjb21waWxlVGFpbENhbGwoYnl0ZWNvZGUsIGluZm8sIGNhbGxMaW5rSW5m
b0luZGV4KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01l
dGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJh
c2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBtYXRlcmlhbGl6ZVBv
aW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlu
a0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykgewotICAgICAgICBhdXRvIHNsb3dQYXRocyA9
IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5l
Q2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0
ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgICAg
IGF1dG8gc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0
aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExh
bWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7
Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lQ2FsbFJlZ2lzdGVy
czo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbFNsb3co
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIH0p
KTsKICAgICAgICAgYWRkU2xvd0Nhc2Uoc2xvd1BhdGhzKTsKICAgICAgICAgYXV0byBkb25lTG9j
YXRpb24gPSBsYWJlbCgpOwpAQCAtMjg5LDcgKzI5MCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZv
SW5kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxM
aW5rSW5mbzo6ZW1pdERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6
OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdERhdGFJQ0Zh
c3RQYXRoKCp0aGlzLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxv
YWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAg
ICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRo
cyk7CiAKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2FsbF9ldmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogewogICAg
IGNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CiB9Ci0g
CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jYWxsX3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BDYWxsVmFyYXJncz4oY3VycmVudElu
c3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAtMzkzLDEyICszOTQs
MTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3QKIHsKICAgICBjb21waWxlT3BDYWxsU2xvd0Nh
c2U8T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHM+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwg
bV9jYWxsTGlua0luZm9JbmRleCsrKTsKIH0KLSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2NvbnN0cnVjdF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9w
Q2FsbFNsb3dDYXNlPE9wQ29uc3RydWN0VmFyYXJncz4oY3VycmVudEluc3RydWN0aW9uLCBpdGVy
LCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwogfQotICAgIAorCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGlsZU9wQ2FsbFNs
b3dDYXNlPE9wQ29uc3RydWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAgICAgICAgIH0KICAgICB9
KSgpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlv
biwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIHRyeUZhc3RGdW5jdGlvbik7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1w
IGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSkpOwogCkBAIC00MjcsOSArNDI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Bl
bihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiAKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwocmV0dXJuVmFsdWVKU1IpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BS
OwogCiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFsdWVKU1IsIHN0dWJJbmZv
R1BSKSk7CiAgICAgc3RhdGljX2Fzc2VydChyZXR1cm5WYWx1ZUpTUiA9PSBiYXNlSlNSKTsgLy8g
T3RoZXJ3aXNlIHdpbGwgbmVlZCBtb3ZlKHJldHVyblZhbHVlSlNSLCBiYXNlSlNSKQpAQCAtNDY5
LDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgZW1pdEp1bXBTbG93VG9I
b3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwot
ICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpi
YXNlSlNSOworICAgIEpTVmFsdWVSZWdzIGl0ZXJhdG9ySlNSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OmJhc2VKU1I7CiAgICAgSnVtcExpc3Qgbm90T2JqZWN0OwogICAgIG5vdE9i
amVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKGl0ZXJhdG9ySlNSKSk7CiAgICAgbm90T2JqZWN0
LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChpdGVyYXRvckpTUi5wYXlsb2FkR1BSKCkpKTsKQEAg
LTQ3OCw3ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CiAKICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwot
ICAgIAorCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICB1c2luZyBT
bG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKQEAgLTUx
OCwxNiArNTE5LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIHVzaW5n
IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdp
c3RlcnM6OmRvbnRDbG9iYmVySlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVy
czo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3Vs
dEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6
OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgbmV4
dEpTUiA9IGJhc2VKU1I7IC8vIFVzZWQgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIG5leHRKU1IpOwogICAgIEp1bXAgZ2Vu
ZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KG5leHRKU1IpOwogCi0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHRyeUZhc3RGdW5jdGlvbik7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKICAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90
RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOwogCkBAIC02MTYsOCArNjE3LDgg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29k
ZSk7CiAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CiAKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNl
bGluZUdldEJ5SWRSZWdpc3RlcnM6OmRvbnRDbG9iYmVySlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsKIAogICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBpdGVyQ2FsbFJlc3VsdEpTUiA9IGRvbnRDbG9iYmVySlNSOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCmluZGV4IGM2N2JjZTA5ZmZiYzYwZTI0MzNlNjIyZTM3ODI3OGNmMjA3NGI0YmUuLmYy
NzNmNDJiOTQ2NDYwMGJiMmQ5NmEzODU3MDQwNWI2YTA5ZmEyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSklUKQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRS
ZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTQ5LDkg
KzE1MCw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJ
Q0Zhc3RQYXRoKEpJVCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICBtX3N0YXJ0ID0gaml0Lmxh
YmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFu
dChzdHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2Vz
cyhqaXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAt
MTg1LDkgKzE4Niw5IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0
ZUJhc2VsaW5lRGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnCiAKICAgICBtX3N0YXJ0ID0g
aml0LmxhYmVsKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpz
Y3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRo
aXM6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRo
VGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
V2l0aFRoaXM6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgaml0LmxvYWRDb25zdGFudChz
dHViSW5mbywgc3R1YkluZm9HUFIpOwogICAgIGdlbmVyYXRlR2V0QnlJZElubGluZUFjY2Vzcyhq
aXQsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBzY3JhdGNoR1BSLCByZXN1bHRKU1IpOwpAQCAtMjE1
LDEwICsyMTYsMTAgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5l
RGF0YUlDRmFzdFBhdGgoSklUJiBqaXQsIHVuc2lnbmVkIHN0dWIKIAogICAgIGppdC5sb2FkQ29u
c3RhbnQoc3R1YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQ
UjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2gyR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoMkdQUjsK
IAogICAgIGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VKU1IucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICBhdXRv
IGRvSW5saW5lQWNjZXNzID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0
Y2hHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mSW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSgpKSk7CkBAIC00MDUsOSArNDA2
LDkgQEAgdm9pZCBKSVRJbkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0
UGF0aChKSVQmIGppdCwgdW5zaWduZWQgc3R1YkkKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1
YkluZm8sIHN0dWJJbmZvR1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7
Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlJZDo6c2NyYXRjaEdQUjsKIAogICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QgZG9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2Rl
NjQ5ZmM5OGMuLjUyNGY5YjA0OWUwZjNmMzFjMjk2ZGM0ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTQ4LDE5MCArNDgsNiBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsK
IGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVp
bnQ4X3Q7CiAKLW5hbWVzcGFjZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lm
IFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86
OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpy
ZWdUMCB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYg
VVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxp
bmVEZWxCeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBK
U1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRj
aEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQot
Ci1uYW1lc3BhY2UgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9
OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1l
c3BhY2UgQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnMgewotc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owotc3RhdGlj
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdl
IHJlbHkgb24gdGhpcyB3aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxpemluZyBy
ZWdpc3RlcnMgZm9yIGEgR2V0QnlWYWwgU3R1YkluZm8uCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1Ig
PT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHBy
b3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0
YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3Vs
dEpTUik7Ci1zdGF0aWNfYXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSKTsKLQotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEg
PSBHUFJJbmZvOjpyZWdUMzsKLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BS
SW5mbzo6cmVnVDQ7Ci1zdGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEdQUkluZm86
OnJlZ1Q1OwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3Rl
cnMgewotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQ
UkluZm86OmFyZ3VtZW50R1BSMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsg
R1BSSW5mbzo6YXJndW1lbnRHUFIzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6YXJndW1lbnRHUFIxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsg
R1BSSW5mbzo6bm9uQXJnR1BSMCB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQ
UkluZm86Om5vbkFyZ0dQUjEgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQ
UykKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BS
MywgR1BSSW5mbzo6YXJndW1lbnRHUFIyIH07Ci0jZWxzZQotY29uc3RleHByIEpTVmFsdWVSZWdz
IHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKLSNlbmRpZgotY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3RvSlNSIHsgSlNSSW5mbzo6anNSZWdUNTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNo
MUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsg
R1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6
Om5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVK
U1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsg
R1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZv
OjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHByb3BlcnR5SlNSICB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29u
c3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi1zdGF0aWNfYXNz
ZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0
aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3Bl
cnR5SlNSKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsK
LWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1Ig
fTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQ
UkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpy
ZWdUMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6
cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1Ig
eyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2Vy
dChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiwgZG9udENsb2JiZXJKU1IpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdp
dGhUaGlzUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJ
bmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgdGhpc0pTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQ
UkluZm86OnJlZ1QzIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0
ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1Qy
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0K
LQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFIgfTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0
QnlJZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1
ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQg
fTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVS
ZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyR1BSIHsgYmFzZUpTUi50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIg
Y29kZSBzaXplIG9uIEFSTV9USFVNQjIKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQ
dXRCeVZhbFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZv
OjpyZWdUMyB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIg
fTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJ
bmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJl
Z1Q0IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9Owot
I2VuZGlmCi19Ci0KLW5hbWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0j
aWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5m
bzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJl
Z1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsK
LSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdz
IGJyYW5kSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fz
c2VydChiYXNlSlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3Rh
dGljX2Fzc2VydChicmFuZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUik7Ci19Ci0KIGNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoK
ICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCAyNmViMmFmZWNhZWY1YWU0ZTM3YmEwOTBmYzJiYTU4NjFhMjdm
YTdlLi4zOTgxZjE3ZjA0MmJkOTA5MWI0YzIxMmFjODkzZWM0MzBjZWFjNmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtMTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgSklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVu
Y3Rpb24pCiAgICAgZXhjZXB0aW9uQ2hlY2soKTsKIH0KIAotI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQotewotICAgIHVwZGF0ZVRvcENhbGxGcmFt
ZSgpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQ
YXRoUmV0dXJuVHlwZShmdW5jdGlvbik7Ci0gICAgZXhjZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1
cm4gY2FsbDsKLX0KLSNlbmRpZgotCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2Fs
bEZyYW1lKCk7IC8vIFRoZSBjYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdG9wQ2Fs
bEZyYW1lIHRvIHRoZWlyIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggOTAzMGJiNTNiMmFkZDYxYWUwOGEzMGM4N2M3MWEzOGYxZjY3NGNhNC4uYjg0
OTliZTdiOGEwYjkxMzJiYTEyMGYzOWZiMmNhYjI5N2I1ZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJ
VCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgi
CiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTE1MiwxMiArMTUzLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwogCi0gICAg
dXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFu
Y2VvZlJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9m
UmVnaXN0ZXJzOjpzY3JhdGNoMUdQUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdp
c3RlcnM6OnNjcmF0Y2gyR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0
YW5jZW9mOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3Rh
bmNlb2Y6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5j
ZW9mOjpwcm90b0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2Vv
Zjo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNl
b2Y6OnNjcmF0Y2gxR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5j
ZW9mOjpzY3JhdGNoMkdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZh
bHVlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCBwcm90b0pTUik7CkBA
IC0yMDUsOSArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKICAgICBj
b25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNs
b3dPcGVyYXRpb24sIDA+KCk7CiAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SW5zdGFuY2VvZjo6dmFsdWVKU1I7CiAgICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpT
UiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpKTsKLSAgICB1c2lu
ZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVF
MzJfNjQsICdwcm90bycgd2lsbCBiZSBwYXNzZWQgb24gc3RhY2sgYW55d2F5CiAgICAgc3RhdGlj
X2Fzc2VydChwcm90b0pTUiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAz
PigpIHx8IGlzMzJCaXQoKSk7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2Jq
ZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIHByb3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1
MiwxMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEpmYWxzZT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgdmFsdWUgPSBqc1JlZ1QxMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SkZhbHNlOjp2YWx1ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9jb25kaXRpb24sIHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHJlZ1Q0OwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGdsb2JhbE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChn
bG9iYWxPYmplY3RHUFIpOwotICAgIGFkZEp1bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUs
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2
YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCkBAIC00NzcsMzEgKzQ2NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAg
ICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0g
ICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFs
dWUgPT0ganNSZWdUMTAucGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gxID0gcmVnVDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNSOyAvLyBJbmNvbWlu
ZworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpT
Uiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNv
bnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAK
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9i
YWxPYmplY3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRk
cmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7Ci0gICAgYXV0byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNl
eSh2bSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZw
UmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BS
KTsKLSAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUg
PSBqaXQuanVtcCgpOwotCi0gICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRv
IGlzRmFsc2V5ID0gaml0LmJyYW5jaElmRmFsc2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZWdUMCk7CisgICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2Mzks
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEp0cnVlPigpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3Ry
dWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyB2YWx1ZSA9IGpzUmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpK
VHJ1ZTo6dmFsdWVKU1I7CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
Y29uZGl0aW9uLCB2YWx1ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2gyID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBy
ZWdUNDsKLSAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBnbG9iYWxPYmplY3RHUFIpKTsKLSAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSB0cnVlOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KHZtKCksIHZhbHVlLCBzY3Jh
dGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJ
c1RydXRoeUdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBi
eSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBK
SVQgYmVjYXVzZQpAQCAtNjc5LDMxICs2NTQsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8v
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgdmFsdWUgPSByZWdUMDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09
IGpzUmVnVDEwLnBheWxvYWRHUFIoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9
IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SlRydWU6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhw
ciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSByZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwg
SlNWYWx1ZVJlZ3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEs
IHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQu
anVtcCgpOwotCi0gICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1
dGh5ID0gaml0LmJyYW5jaElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0
Y2gyR1BSLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdU
MCk7CisgICAgaXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJCYXNlbGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3
MDUsNDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRocm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJu
VmFsdWVHUFIpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxs
ZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7
Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uVGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0
aHJvd25WYWx1ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zm
c2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlRocm93Ojp0aHJvd25WYWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6VGhyb3c6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CiAgICAg
ZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRDVElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0
b3IpLmNvZGUoKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBD
Q2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0g
YXJndW1lbnRHUFIxOwotICAgIAotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6OnRocm93blZhbHVlSlNSOyAvLyBJbmNv
bWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7IC8vIEluY29taW5nCiAKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVS
UyA+IDAKLSAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsK
LSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJn
dW1lbnRHUFIwKTsKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9
IGdsb2JhbE9iamVjdEdQUjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoc2NyYXRj
aEdQUiwgdGhyb3duVmFsdWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlNob3VsZCBub3QgY2xv
YmJlciBpbmNvbWluZyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BF
bnRyeUZyYW1lLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHNjcmF0Y2hHUFIpOworICAgIH0KICNlbmRpZgogCi0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAg
Ly8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVHUFIp
OwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1
ZUpTUik7CiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwor
CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhyb3dfaGFu
ZGxlciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKIApAQCAtMTI1MCw3NyArMTIxMSw3MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9l
bnRlcihjb25zdCBJbnN0cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3Qg
dXNlIHRoZW0sIHdlIGluaXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRv
IHphcCBzdGFsZSBwb2ludGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAg
ICAgLy8gb2JqZWN0IGxpZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNp
emVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAhRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0
IDwgY291bnQpCi0gICAgICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdU
MTApOwotICAgIGZvciAoc2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0gICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVn
VDEwKTsKIAotICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
LCByZWdUMCk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJP
cHRpbWl6YXRpb25DaGVjaygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpID09IDApOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJn
dW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0KLSAgICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9j
azo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAg
IHNpemVfdCBjb3VudCA9IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAgICB1aW50
MzJfdCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fs
c1RvSW5pdCA8IGNvdW50KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7CisKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihjYW5CZU9wdGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCksIGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2
bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQu
cHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1Jl
dHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxp
bmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNv
ZGVPZmZzZXQgMC4KLSAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5lbWl0Q1RJ
VGh1bmtQcm9sb2d1ZSgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIg
PSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3Vt
ZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHVuZGVmaW5lZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGNhbkJlT3B0aW1pemVkR1BSID0gYXJndW1lbnRHUFI0OworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7IC8vIEluY29t
aW5nCiAKLSAgICBzaXplX3Qgc3RhcnRMb2NhbCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwotICAgIGludCBzdGFydE9mZnNldCA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKHN0YXJ0TG9jYWwpLm9mZnNldCgpOwotICAgIGppdC5t
b3ZlKFRydXN0ZWRJbW02NChzdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRv
ckdQUik7Ci0gICAgaml0LnN1YjY0KGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQ
Uik7Ci0KLSAgICBqaXQubW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpKSwgdW5kZWZpbmVkR1BSKTsKLSAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7
Ci0gICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJh
dG9yR1BSLCBlbmRHUFIpOwogICAgIHsKLSAgICAgICAgaml0LnN0b3JlNjQodW5kZWZpbmVkR1BS
LCBCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1l
c09uZSkpOwotICAgICAgICBqaXQuc3ViNjQoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3Rlcikp
LCBpdGVyYXRvckdQUik7Ci0gICAgICAgIGppdC5qdW1wKGluaXRMb29wKTsKKyAgICAgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7IC8vIEluY29t
aW5nCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHVuZGVmaW5lZEpTUiA9IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChsb2NhbHNUb0luaXRHUFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQ
UiwgdW5kZWZpbmVkSlNSKSk7CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxv
Y2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAg
ICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2Nh
bCkub2Zmc2V0KCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAg
aml0LnN1YlB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFy
dE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5t
dWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9j
YWxzVG9Jbml0R1BSKTsKKyAgICAgICAgaml0LnN1YlB0cihpdGVyYXRvckdQUiwgbG9jYWxzVG9J
bml0R1BSLCBlbmRHUFIpOworICAgICAgICBqaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCB1bmRlZmluZWRKU1IpOworCisgICAgICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwo
KTsKKyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWws
IGl0ZXJhdG9yR1BSLCBlbmRHUFIpOworICAgICAgICB7CisgICAgICAgICAgICBqaXQuc3RvcmVW
YWx1ZSh1bmRlZmluZWRKU1IsIEFkZHJlc3MoaXRlcmF0b3JHUFIpKTsKKyAgICAgICAgICAgIGpp
dC5zdWJQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Cisg
ICAgICAgICAgICBqaXQuanVtcChpbml0TG9vcCk7CisgICAgICAgIH0KKyAgICAgICAgaW5pdERv
bmUubGluaygmaml0KTsKICAgICB9Ci0gICAgaW5pdERvbmUubGluaygmaml0KTsKIAogICAgIC8v
IGVtaXRXcml0ZUJhcnJpZXIobV9jb2RlQmxvY2spLgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGNhbkJlT3B0aW1pemVkR1BSLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMikpOwogICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1l
bnRHUFIxKTsKICAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmll
ckJyYW5jaCh2bSwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwogCi0gICAgaml0Lm1vdmUo
Y2FuQmVPcHRpbWl6ZWRHUFIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4K
LSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xv
d1BhdGgpPigmdm0sIGFyZ3VtZW50R1BSMSk7CisgICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0
IGJ5dGVjb2RlT2Zmc2V0IDAuCisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworCisgICAgLy8gc2F2ZSBjYW5CZU9wdGltaXplZEdQ
UiAoYXJndW1lbnRzIHRvIGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZv
cm1zLCBzbyBvayB0byBzdGFjayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2Fs
bCwgc28gY2FuJ3QgdXNlIHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBz
dGFjayBhbGlnbm1lbnQuCisgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgIGppdC5zdG9yZVB0cihjYW5CZU9wdGltaXplZEdQUiwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworCisgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEp
OwogICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7CiAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgY2Fu
QmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChK
U1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciksIGNhbkJlT3B0aW1pemVkR1BS
KTsgLy8gUmVzdG9yZSBjYW5CZU9wdGltaXplZEdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZElt
bVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVy
CisKICAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiAKICNpZiBFTkFC
TEUoREZHX0pJVCkKQEAgLTEzMzUsMTEgKzEyOTIsMzAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQog
ICAgICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGppdC5icmFuY2hBZGQzMihTaWduZWQsIFRydXN0
ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yRW50cnkoKSksIEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIo
KSkpKTsKIAogICAgICAgICBqaXQuY29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFt
ZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1l
KTsKLQotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1p
emUpPigmdm0sIFRydXN0ZWRJbW0zMigwKSk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CisKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgICAgICAvLyBP
biBXaW5kb3dzLCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVk
IHZpYSBhbiBpbXBsaWNpdCBwb2ludGVyIHBhc3NlZCBhcworICAgICAgICAvLyB0aGUgZmlyc3Qg
YXJndW1lbnQsIGFuZCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdo
dC4gTWFrZSBzcGFjZSBmb3IgdGhpcy4KKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2xv
d1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBi
ZWxvdyIpOworICAgICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
MTYpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRH
UFIwKTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZv
Ojphcmd1bWVudEdQUjEgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZUluZGV4
Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OworI2Vsc2UKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjAgfTsK
KyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUklu
Zm86OmFyZ3VtZW50R1BSMSB9OworI2VuZGlmCisgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIoJnZtKSwgdm1Qb2ludGVyQXJnR1BSKTsKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMy
KDApLCBieXRlY29kZUluZGV4Qml0c0FyZ0dQUik7CisKICAgICAgICAgb3BlcmF0aW9uT3B0aW1p
emVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKIAorI2lmIE9TKFdJTkRPV1MpICYm
IENQVShYODZfNjQpCisgICAgICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAv
LyB0YXJnZXRQQworICAgICAgICBqaXQucG9wKEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7IC8v
IGRhdGFCdWZmZXIgKHVudXNlZCwgYnV0IG5lZWRzIHBvcHBpbmcgdG8gcmVzdG9yZSBzdGFjaykK
KyNlbmRpZgorCiAgICAgICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIo
WmVybywgcmV0dXJuVmFsdWVHUFIpKTsKICAgICAgICAgaml0LmZhckp1bXAocmV0dXJuVmFsdWVH
UFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIApAQCAtMTM0NywxMSArMTMyMyw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5k
bGVyR2VuZXJhdG9yKFZNJiB2bSkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAK
LSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYg
Q1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVn
aXN0ZXIpOwotI2VuZGlmCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0
LnJldCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0xMzYyLDcgKzEzMzQs
NiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJf
aGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiAjZW5kaWYKICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFuZGxl
ciIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKQEAgLTE1NzMsNTcgKzE1NDQsNDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3Ry
YXBzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGUKIHsKICAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgIGxvYWRHbG9iYWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkhhbmRsZVRyYXBzLCBhcmd1bWVudEdQUjApOwotI2Vsc2UKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIHVpbnQzMl90
IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNoZWNrVHJhcHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQ
Uik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2NoZWNrX3RyYXBz
X2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0K
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZt
KQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5w
dXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlu
a1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8v
IEluY29taW5nCiAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVu
dEdQUjA7Ci0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spLCBjb2RlQmxvY2tHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwot
ICAgIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25IYW5kbGVUcmFw
cyk+KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
LSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRy
VGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5v
blBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zlcmxh
cChieXRlY29kZU9mZnNldEdQUiwgZ2xvYmFsT2JqZWN0R1BSKSk7CiAKLSNpZiBDUFUoWDg2XzY0
KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
Ci0gICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAg
Ly8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BS
LCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uSGFuZGxlVHJhcHMpPihnbG9iYWxPYmplY3RHUFIpOworICAgIENDYWxs
SGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisg
ICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhj
ZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7
CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9w
ZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYW5kbGVUcmFw
cykpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNl
cnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhl
eGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9j
YXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfY2hlY2tfdHJhcHNfaGFuZGxlciIpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4
IDQ0MWU3NWY3NTZiMGZjODQ1MTM1YTY0MDYyMTBmYzZmZThjNDA3NjEuLjFmZmQyYzQ2NWIxYTYx
NDkzZmM4YjMxMGQ5YTYzZGEzNjA2NGJmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KEpJVCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJz
LmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKQEAgLTUyLDExICs1Mywx
MSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
IAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5VmFsOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwpAQCAtMTAxLDUxICsxMDIsMjIgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0
QnlWYWxTbG93Q2FzZShjb25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNl
RW4KICAgICBpZiAoIWhhc0FueVNsb3dDYXNlcyhpdGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVu
dEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9H
UFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzNKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBhcmc0SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQot
ICAgIHN0YXRpY19hc3NlcnQoIUJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iub3Zl
cmxhcHMoYXJnNEpTUikpOwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1IsIGFyZzRKU1IpOwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVH
ZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUiwgYXJnM0pTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlcklu
dG9NZXRhZGF0YShieXRlY29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQ
cm9maWxlKCksIHByb2ZpbGVHUFIpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4o
Ci0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIs
IHByb2ZpbGVHUFIsIGFyZzNKU1IsIGFyZzRKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOwor
CisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjQ7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIzOyAvLyBhcmcxIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0gICAgc3RhdGlj
X2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKSA9
PSByZWdUMCk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpw
cm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCkgPT0gcmVnVDEpOwotCiAgICAgbG9hZENvbnN0YW50KGdl
bi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0
ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0
YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7CiAKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7
CiB9CkBAIC0xNTUsOCArMTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5l
cmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigp
LCBpdGVyKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJl
Q2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGds
b2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpA
QCAtMTY0LDM1ICsxMzUsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxs
RnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmls
ZUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
Ojpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09
IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5
R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4
Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgp
OwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5
X3ZhbF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ss
IENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjAxLDEwICsx
NzIsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1f
cHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
OwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihw
cm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtMjMwLDU1ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VS
VChoYXNBbnlTbG93Q2FzZXMoaXRlcikpOwotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAK
LSAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbElu
ZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJn
dW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5k
ZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
YmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3By
b3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudElu
c3RydWN0aW9uKTsKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVj
b2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29k
ZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5
VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29k
ZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAg
Y29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3Bf
Z2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNS
ID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRo
QmVnaW4sIENhbGwoKSk7CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRl
X25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhl
IHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUg
TExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25z
IGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KQEAgLTI4NiwzNCArMjMxLDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFy
ZUNhbGxHCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMg
aml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRp
b24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVj
b2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6
U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3Vt
ZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09
IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBq
aXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQg
Zm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2Fs
bChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBq
aXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFD
VElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVy
YXRpb25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMSw5ICsyNjYsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNl
OwogICAgIFZpcnR1YWxSZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CiAKLSAgICB1
c2luZyBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBC
YXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJyYW5kLCBicmFuZEpTUik7CkBAIC0zNTQsNDYgKzI5OSwyMSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVgogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24p
OwogCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFu
ZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wU2V0UHJpdmF0ZUJyYW5kPigpOwotCi0gICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFy
Z3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlv
bj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9H
UFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsK
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsK
ICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUlu
ZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0
ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9m
ZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpT
bG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0g
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
ICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRD
b25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIp
OworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5
cGUob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVu
Y3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpB
cmd1bWVudFR5cGVzPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5k
aWYKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDA0LDkgKzMyNCw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOwogCi0gICAgdXNpbmcg
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJp
dmF0ZUJyYW5kUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQcml2YXRlQnJhbmQ6OmJyYW5kSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQcml2YXRlQnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihicmFuZCwgYnJhbmRKU1IpOwpAQCAtNDI4LDQ5ICszNDgsMjMgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wQ2hlY2tQcml2YXRlQnJhbmQ+KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9w
cml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25DaGVja1By
aXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0K
LSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50
KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNh
bGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGds
b2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NH
ZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nl
c3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJh
bmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BS
KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8v
IGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2Vs
aW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJy
YW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJn
dW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29u
c3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Nh
bWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRp
bWl6ZSk+OjpBcmd1bWVudFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1p
dE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5h
a2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0
ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xk
UGF0aEJlZ2luLCBDYWxsKCkpOwogfQpAQCAtNDgzLDE5ICszNzcsMjAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJh
c2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJl
Z2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmls
ZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJ
bnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUo
KSwgcHJvZmlsZUdQUik7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpT
UiwgYmFzZSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBi
YXNlSlNSLnBheWxvYWRHUFIoKSwgcHJvZmlsZUdQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVy
SW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxl
KCksIHByb2ZpbGVHUFIpOworCisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5
dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyogc2NyYXRjaEdQUjogKi8gc3R1YkluZm9H
UFIpOwogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBudWxscHRyLCBu
dWxscHRyLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC01MjksNzYgKzQyNCwy
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFs
RGlyZWN0PihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewotICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5OwotICAgIFZpcnR1YWxSZWdpc3RlciB2
YWx1ZTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKLQotICAg
IGF1dG8gbG9hZCA9IFsmXShhdXRvIGJ5dGVjb2RlKSB7Ci0gICAgICAgIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7Ci0gICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICAg
ICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2Rl
Lm1fZWNtYU1vZGU7Ci0gICAgfTsKLQotICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgbG9hZChj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCkpOwotICAgIGVsc2UKLSAg
ICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCkpOwotCi0gICAg
SklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsr
XTsKLQotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJl
Z2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2lu
ZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6
ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxT
bG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDQ+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgNT4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIG1hdGVy
aWFsaXplUG9pbnRlckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlW
YWxEaXJlY3Q+KCksIE9wUHV0QnlWYWxEaXJlY3Q6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbHNlCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCksIE9wUHV0
QnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHZhbHVlLCB2YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9u
PigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBw
cm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgLy8gVGhleSBhcmUgY29uZmlndXJlZCBpbiB0aGUgZmFz
dCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsK
LSAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgLy8gY29uc3Rl
eHByIEdQUlJlZyBwcm9maWxlR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIg
PSByZWdUNTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2Rl
T2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0
YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElT
dHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5y
ZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkK
IHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkg
d29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFr
ZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFi
bGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNjA2LDM5ICs0NTIsMzYgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAg
IENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNp
bmcgU2xvd09wZXJhdG9pbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1p
emUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2
YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlW
YWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IHJlZ1Q1OwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZChiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHByb2ZpbGVHUFIpOwotICAgICAgICBBU1NFUlQoIXVz
ZWQuY29udGFpbnMocmVnVDQpKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q1
KSk7Ci0gICAgfQorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFz
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3BlcnR5
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9maWxlR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6Omdsb2Jh
bE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1
bmtQcm9sb2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9y
ZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAg
IGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBq
aXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4oc3R1YkluZm9H
UFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVl
SlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25B
cmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
blB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwotICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAK
LSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAg
ICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVu
aworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZt
LmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjQ3LDEwICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVz
aW5nIEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRC
eVZhbFJlZ2lzdGVyczo6dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5
VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2
YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFz
ZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1Ip
OwpAQCAtNjc5LDU2ICs1MjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFt
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJh
cnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0
cnVjdGlvbik7Ci0KLSAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNb
bV9wdXRCeVZhbEluZGV4KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3Bl
cmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVk
QXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50
SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2Fk
R2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3Vu
bGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwg
VHJ1c3RlZEltbVB0cihudWxscHRyKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0
QnlWYWxJbmRleCsrXTsKIAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHJlZ1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSByZWdUNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
JiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2Fu
IG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8g
aXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBh
dmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTAsMzkg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygp
LgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7Cisg
ICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5l
UHJpdmF0ZUZpZWxkT3B0aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnBy
b3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0g
QmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OlB1dEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
dXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlW
YWw6OnByb2ZpbGVHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFs
OjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisg
ICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0
aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLQorICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spLCBnbG9iYWxPYmplY3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2Jq
ZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOworICAgIC8vIExvYWRpbmcgbnVsbHB0ciB0byB0aGlzIHJlZ2lzdGVyIGlzIG5lY2Vzc2Fy
eSBmb3Igc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGwKKyAgICAvLyB0byBub3QgY2xvYmJl
ciBnbG9iYWxPYmplY3RHUFIgb24gQVJNX1RIVU1CMiwgYW5kIGlzIG90aGVyd2lzZSBoYXJtbGVz
cy4KKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBwcm9maWxlR1BSKTsKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdGlvbj4oc3R1Yklu
Zm9HUFIsCisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZh
bHVlSlNSLCBzdHViSW5mb0dQUiwgcHJvZmlsZUdQUik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhu
b25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBP
cGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0cikpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0
LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBj
YWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBq
aXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcHV0X3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5s
aW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKQEAgLTg0MSwxMCArNjYwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBC
YXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlJZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2VKU1IsIGJhc2UpOwpAQCAtODc1LDYyICs2OTQsMzYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZGVsX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVRE
ZWxCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAg
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhp
dGVyKTsKIAotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3Bl
cmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVP
ZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQ
YXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJ
ZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAg
ICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNl
SlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0m
IHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNl
dCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFy
Z3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0K
ICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdC
aXRzKCkpLCBwcm9wZXJ0eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9l
Y21hTW9kZS52YWx1ZSgpKSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVy
czo6cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9
PSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9v
bGVhbihyZXN1bHRKU1IucGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRf
cHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtOTM4LDMzICs3MzEsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAv
LyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBp
ZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGpp
dC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBl
KG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeUlkOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6ZWNtYU1vZGVHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNt
YU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQ
dHIoQWRkcmVzcyhhcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xv
YmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2Rl
R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVy
YXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisgICAgaml0LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNS
KTsKIAotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQot
ICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNl
Ci0gICAgICAgIGppdC5yZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CkBAIC05NzMsMTEgKzc2OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6
OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5n
IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7
CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTEwMTAsNjMgKzgwNiwz
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9kZWxCeVZhbHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6ZWNt
YU1vZGVHUFI7CisKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAg
IHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGlt
aXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9
IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlu
a2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCBwcm9wZXJ0eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigK
LSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgcHJvcGVydHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZh
bHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1v
ZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRT
dHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHByb3BlcnR5R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFN
b2RlLnZhbHVlKCkpLCBlY21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2Vk
Q29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRD
VElTdHViKHNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xl
YW4ocmVzdWx0SlNSLnBheWxvYWRHUFIoKSwgcmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmV0dXJuVmFsdWVKU1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhC
ZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJh
dGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2Vs
aW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJp
Z2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgpAQCAtMTA3NCwzMyArODQzLDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAg
Ly8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAg
aWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlw
ZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpEZWxCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1Bh
dGg6OmVjbWFNb2RlR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAg
ICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFN
b2RlR1BSID0gYXJndW1lbnRHUFI0OwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRy
KEFkZHJlc3MoYXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkp
LCBnbG9iYWxPYmplY3RHUFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
Z2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9i
YWxPYmplY3RHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9i
YWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVH
UFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlv
biwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJh
dGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICBqaXQuYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1Ip
OwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0g
ICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UK
LSAgICAgICAgaml0LnJldCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Cisg
ICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0x
MTA5LDkgKzg4MSw5IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZS
ZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VK
U1IsIGJhc2VWUmVnKTsKQEAgLTExMzgsNDkgKzkxMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3By
b3BlcnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21f
Z2V0QnlJZEluZGV4KytdOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0K
LSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9
IGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9w
ZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFs
T2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2Rl
QmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRy
eUdldEJ5SWQ+KCk7CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0
aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVn
IGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAg
ICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwot
CiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2Nr
LCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3Nl
cnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1Ip
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdl
dEJ5SWRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1
ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVw
b3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTExOTEsOSAr
OTQxLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VW
UmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwg
YmFzZVZSZWcpOwpAQCAtMTIxOSw0OSArOTY5LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKLQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNbbV9nZXRCeUlkSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25z
dGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxp
bmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0
aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBt
X2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZERpcmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Cisg
ICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsr
XTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BS
MzsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0
KCkpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudElu
ZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29k
ZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUp
LCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNh
bGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJu
VmFsdWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsK
ICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAK
QEAgLTEyNzIsMTUgKzEwMDAsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2VWUmVnID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
JihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
IAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2lu
ZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJ
ZFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJ
ZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihiYXNlVlJlZywgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2VKU1IsIGJhc2VWUmVnKTsKLSAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKworICAgIGlmICgqaWRl
bnQgPT0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygp
KSB7CiAgICAgICAgIGxvYWQ4RnJvbU1ldGFkYXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFk
YXRhOjpvZmZzZXRPZk1vZGVNZXRhZGF0YSgpICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0
T2ZNb2RlKCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwoCkBAIC0xMzEyLDUxICsxMDQwLDY2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3Bl
cnR5KSk7Ci0KLSAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0
QnlJZEluZGV4KytdOwotICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24g
PSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBs
b2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVy
YXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJs
b2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRC
eUlkPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJs
b2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0
dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93
UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
KyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRl
Y29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVH
ZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXRO
YWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKKworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVuayBnZW5l
cmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFz
ZWxpbmUgSklUIGJlY2F1c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUg
cmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJs
b2NrKCkuCisgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8g
b3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENhbGxGcmFt
ZTo6Y29kZUJsb2NrKCkuCisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworCisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29k
ZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xv
d1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9n
dWUoKTsKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQ
Uik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6
b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVw
QXJndW1lbnRzPFNsb3dPcGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJh
c2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFu
Y2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsK
KworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4
Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbiIpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7
CkBAIC0xMzY1LDEwICsxMTA4LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRo
X3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdGhpc1ZSZWcgPSBieXRlY29kZS5tX3RoaXNWYWx1ZTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29k
ZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVy
czo6dGhpc0pTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6
cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhU
aGlzOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0
aFRoaXM6OnRoaXNKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRX
aXRoVGhpczo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRC
eUlkV2l0aFRoaXM6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dGhpc1ZSZWcsIHRoaXNKU1IpOwpAQCAtMTM5NSw5NiArMTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1Ip
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IoVk0mIHZtKQotewotICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5j
dGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UK
LSAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0
IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgLy8gREZH
L0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0
cywgd2hpY2ggbWF5IG5vdCBtYXRjaAotICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0g
ICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0
YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4o
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0KLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhh
cmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7Ci0KLSAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpFeHRyYUNUSVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFy
ZUNhbGwiKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4g
PSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0
QnlJZFdpdGhUaGlzT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVS
ZWdzIHRoaXNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwot
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLAotICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBW
TSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zm
c2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOworICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJv
cGVydHkpKTsKKyAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJ
ZHNXaXRoVGhpc1ttX2dldEJ5SWRXaXRoVGhpc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAg
IGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxy
ZWFkeSBpbiB1c2UuCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRC
eUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgdGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlz
SlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxs
R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1Ig
PT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1
YihzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0
aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpT
UiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRf
d2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9t
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCkBAIC0xNDkyLDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhCiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFz
ZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNs
b3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7
CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIz
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhp
c0pTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpT
bG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7
CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVP
ZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQ
UjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHRoaXNHUFIgPSByZWdUMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFI0OwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwg
IWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwg
dGhpc0pTUiwgcHJvcGVydHlHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJy
YW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRy
ZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0g
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAg
IGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAg
ICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsK
KyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4
dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFy
ZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRp
b25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2Nh
bGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTUzNCwxMCArMTIxMywxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICAvLyB0byBqdXN0IGFmdGVyIHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVu
IGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJlZ2luJywgYW5kIHdlIGdlbmVyYXRlIGNv
ZGUKICAgICAvLyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVyZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0
IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhpcy4KIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJ
ZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6
OnZhbHVlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsK
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWVWUmVnLCB2YWx1ZUpTUik7CkBAIC0xNTYxLDcgKzEy
NDAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICByZXNldFNQKCk7IC8vIFdlIG1pZ2h0IE9TUiBleGl0IGhl
cmUsIHNvIHdlIG5lZWQgdG8gY29uc2VydmF0aXZlbHkgcmVzZXQgU1AKICAgICBhZGRTbG93Q2Fz
ZSgpOwogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7Ci0gICAgCisKICAgICAvLyBJQyBjYW4g
d3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNl
bGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2Vs
aW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQpAQCAtMTU3MCw1NiArMTI0OSwzMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7Ci0gICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKLSAg
ICAKLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZElu
ZGV4KytdOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8
U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0g
cHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIg
SlNWYWx1ZVJlZ3MgdmFsdWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5
dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9u
PigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQ
UiwgdmFsdWVKU1IsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRl
bnQpLnJhd0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNT
RVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOwor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6cHJv
cGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOworCisgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQp
LCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gYXJndW1lbnRHUFIzOyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0ZXhwciBH
UFJSZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFy
Z3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09
IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5m
b0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1f
dW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFy
ZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKwor
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2Rl
PE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBi
eSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBK
SVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBn
bG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4K
QEAgLTE2MjcsMzUgKzEyODAsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAo
IUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50
YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0
QnlJZDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0
eUdQUjsKKworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBz
bG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3Io
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyB2YWx1ZUdQUiA9IHJlZ1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1Qw
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAg
c3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlv
bj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3Bl
cnR5R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVy
YXRpb24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBv
cGVyYXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQ
UjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVH
UFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIp
OwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpA
QCAtMTY2NCw5ICsxMzE3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZS
ZWcgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1f
dW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlJ
ZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlk
OjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1
YkluZm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNS
KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpA
QCAtMTY5MSw1MSArMTM0NCwyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5
SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
ICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1
bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwg
YmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29k
ZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0g
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1f
Ynl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29k
ZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluQnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CisgICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0
aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRH
UFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJN
NjQoKSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRD
b2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIC8vIHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdl
IG5lZWQuCisKKyAgICAvLyBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAg
IC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1
c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0o
KS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3Rh
dGljX2Fzc2VydChCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZh
bHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xNzQ2LDExICsxMzc3LDExIEBAIHZv
aWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAg
IFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1
c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlW
YWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c2Ny
YXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c3R1YkluZm9HUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnNjcmF0Y2hHUFI7CiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5SlNSKTsKQEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwotCi0gICAgSklUSW5C
eVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLQotICAg
IExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5
VmFsT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJl
ZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4o
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
ID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3Bl
cmF0aW9uLCA0PigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwot
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwg
T3BJbkJ5VmFsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlK
U1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VK
U1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
KyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7
CisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRl
eCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1Bh
dGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xk
UGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAg
Y29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQo
YmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2Vy
dChwcm9wZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5t
X3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJp
YWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpv
ZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICAvLyBzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4K
KworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNv
LCB0aGVyZSdzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8g
Z2l2ZSBpdCBhIGRpZmZlcmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENU
SVN0dWIoc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5n
ZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUo
VmlydHVhbFJlZ2lzdGVyIGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eU9yQnJhbmQsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICB1c2luZyBCYXNlbGlu
ZUluQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6
OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKIAogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eU9yQnJhbmQsIHByb3BlcnR5SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIs
MjcgQEAgdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1
YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwgcmVzdWx0SlNSKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0
dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5
cGUpCit2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oYmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBB
U1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
LSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWVPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVm
ZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRK
U1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAg
bG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4u
bV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+
dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRl
Y29kZUluZGV4KTsKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21f
aW5CeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJh
c2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eU9yQnJhbmRHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6
OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0g
YXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlP
ckJyYW5kR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5s
aW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKKwogICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1p
emUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2
YXRlQnJhbmRPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19v
cF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElT
dHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRp
Y19hc3NlcnQoQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFs
dWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6
OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQogCkBAIC0xOTEyLDEyICsxNDkyLDEwIEBAIHZv
aWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNv
ZGUubV9iYXNlLCBieXRlY29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFt
ZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZh
dGVTbG93KGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6
SGFzUHJpdmF0ZU5hbWUpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQ
cml2YXRlTmFtZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTI2LDEyICsxNTA0LDEw
IEBAIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3Qs
IGJ5dGVjb2RlLm1fYmFzZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0
ZUJyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJh
bmQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0
SGFzUHJpdmF0ZVNsb3coYnl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBl
OjpIYXNQcml2YXRlQnJhbmQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3Bl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJs
b2NrLT5pbnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9u
KTsKQEAgLTE5NDksMTQgKzE1MjQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIElmIHdlIHBy
b2ZpbGUgY2VydGFpbiByZXNvbHZlIHR5cGVzLCB3ZSdyZSBndWFyYW50ZWVkIGFsbCBsaW5rZWQg
Y29kZSB3aWxsIGhhdmUgdGhlIHNhbWUKICAgICAvLyByZXNvbHZlIHR5cGUuCiAKLSAgICBpZiAo
cHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIAorICAgIGlmIChwcm9maWxlZFJlc29s
dmVUeXBlID09IE1vZHVsZVZhcikKICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29k
ZSwgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkxleGljYWxFbnZpcm9ubWVudCgp
LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZWxzZSB7CiAgICAgICAgIHVpbnQzMl90IG1ldGFkYXRh
T2Zmc2V0ID0gbV91bmxpbmtlZENvZGVCbG9jay0+bWV0YWRhdGEoKS5vZmZzZXRJbk1ldGFkYXRh
VGFibGUoYnl0ZWNvZGUpOwogCi0gICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIg
PSByZWdUMjsKLSAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QwOwotICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7CisgICAgICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOwor
ICAgICAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQ
UjsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0
ZWNvZGVPZmZzZXRHUFI7CiAKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQo
c2NvcGUsIHNjb3BlR1BSKTsKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9m
ZnNldCksIHNfbWV0YWRhdGFHUFIsIG1ldGFkYXRhR1BSKTsKQEAgLTE5NjQsMjMgKzE1MzksMjMg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gY29kZTsKICAgICAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3Vy
ZVZhcikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElT
dHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgICAgIGVs
c2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2
ZVNjb3BlVGh1bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAg
ICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2Zp
bGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENU
SVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICAg
ICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xv
YmFsVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHkpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVz
b2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJvcGVydHk+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7
CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
cikKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRD
VElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CiAg
ICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRl
T3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7Cisg
ICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVU
aHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYg
KHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVT
Y29wZVRodW5rPEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAg
ICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYg
KHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MpCi0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2
ZVNjb3BlVGh1bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAg
ICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRo
dW5rPEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogCiAgICAgICAgIGVtaXRO
YWtlZE5lYXJDYWxsKGNvZGUucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CkBAIC0y
MDAwLDEyICsxNTc1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUOjpnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mIHZtKQogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAKICAgICB1c2luZyBNZXRhZGF0YSA9IE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDI7IC8vIGluY29taW5nCi0g
ICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QwOyAvLyBpbmNvbWluZwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gaW5jb21pbmcgLSBw
YXNzIHRocnUgdG8gc2xvdyBwYXRoLgorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpS
ZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BS
OyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7IC8vIGxvY2FsIHRlbXBvcmFyeQogICAgIFVOVVNF
RF9QQVJBTShieXRlY29kZU9mZnNldEdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
cmV0dXJuVmFsdWVHUFIsIG1ldGFkYXRhR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQ
UikpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBzY29wZUdQUiwg
Ynl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNjb3Bl
R1BSID09IHJldHVyblZhbHVlR1BSKTsgLy8gZW1pdFJlc29sdmVDbG9zdXJlIGFzc3VtZXMgdGhp
cwogCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKQEAgLTIxMzYsNTAgKzE3MTEsMzMgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2
ZV9zY29wZUdlbmVyYXRvcihWTSYgdm0KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICAvLyBUaGUgZmFzdCBwYXRoIGFscmVhZHkgcHVz
aGVkIHRoZSByZXR1cm4gYWRkcmVzcy4KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4
NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShSSVNDVjY0KQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlu
a1JlZ2lzdGVyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5v
dCBpbXBsZW1lbnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJl
ZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0gICAgaml0LnN0b3JlMzIoaW5j
b21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKSk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29s
dmVTY29wZTo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9u
R1BSID0gYXJndW1lbnRHUFIxOwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGluY29taW5n
Qnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0
aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIs
IHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CiAKKyAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogcmV0dXJuQWRkcmVzc0FscmVhZHlUYWdnZWQ6ICov
IHRydWUpOyAvLyBSZXR1cm4gYWRkcmVzcyB0YWdnZWQgaW4gJ2dlbmVyYXRlT3BSZXNvbHZlU2Nv
cGVUaHVuaycKKworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihi
eXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQu
bG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIp
OwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRy
ZXNzKHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVy
KCkpLCBpbnN0cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zm
c2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7Ci0KKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvblJlc29sdmVTY29wZUZvckJhc2VsaW5lKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVj
dGlvbkdQUik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9w
ZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BV
KFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02
NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAg
aml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7
Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYK
LSAgICBqaXQucmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAv
LyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25D
aGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZm
ZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
UmVzb2x2ZVNjb3BlRm9yQmFzZWxpbmUpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElT
dHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwot
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhh
bmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhl
eGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfcmVzb2x2ZV9zY29wZSIpOwogfQogCkBAIC0yMTkwLDM4ICsxNzQ4LDM3IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAg
ICBSZXNvbHZlVHlwZSBwcm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9w
cm9maWxlZENvZGVCbG9jaykubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBWTSYg
dm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0
KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5p
bnN0cnVjdGlvbkF0KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHNjb3BlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9m
ZnNldEdQUiA9IHJlZ1QzOwotCiAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3VubGlu
a2VkQ29kZUJsb2NrLT5tZXRhZGF0YSgpLm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29kZSk7
CiAKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0
YUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29w
ZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRl
Y29kZU9mZnNldEdQUjsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3Bl
LCBzY29wZUdQUik7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNf
bWV0YWRhdGFHUFIsIG1ldGFkYXRhR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29k
ZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gY29kZTsKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBD
bG9zdXJlVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJv
bVNjb3BlVGh1bms8Q2xvc3VyZVZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHVi
KGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgZWxzZSBpZiAo
cHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykK
LSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5r
PENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBH
bG9iYWxWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1Yihn
ZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgZWxzZSBpZiAocHJv
ZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAg
ICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRD
VElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQ
cm9wZXJ0eSkKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21T
Y29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgZWxz
ZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICBj
b2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4
aWNhbFZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRG
cm9tU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRS
ZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2
bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gdm0u
Z2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAg
ICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEds
b2JhbFZhcj4pOwogCiAgICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpT
Uik7CkBAIC0yMjM1LDkgKzE3OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgLy8g
REZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2Jq
ZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CiAgICAgdXNpbmcgTWV0YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NvcGVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gcmVnVDM7IC8vIFVzZWQgb25seSBvbiBzbG93IHBhdGgKKworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOyAvLyBJ
bmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5
dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGgu
CiAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7CiAgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1
cm5WYWx1ZUpTUiwgbWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2Ny
YXRjaEdQUikpOwpAQCAtMjI1Niw3ICsxODE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAg
ICAgICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpT
R2xvYmFsT2JqZWN0LCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAg
ICAgICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNo
R1BSLCBXYXRjaHBvaW50U2V0OjpvZmZzZXRPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZh
bGlkYXRlZCkpKTsKICAgICB9OwotICAgIAorCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVz
b2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewog
ICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpAQCAtMjM3MSw2OCArMTkyOSw0MiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9z
Y29wZUdlbmVyYXRvcihWTSYgdgogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVn
aXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KFJJU0NWNjQpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVn
aXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJl
Z2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGlt
cGxlbWVudGVkIG9uIHBsYXRmb3JtIgotI2VuZGlmCi0KICAgICB1c2luZyBNZXRhZGF0YSA9IE9w
R2V0RnJvbVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BS
ID0gcmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BS
ID0gcmVnVDM7Ci0gICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsgLy8gSW5jb21pbmcKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFy
Z3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBpbmNvbWlu
Z0J5dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0
aW9uR1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3Rh
dGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHJldHVyblZhbHVlR1BSKSk7CiAKLSAg
ICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0
Y2hHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0
cihBZGRyZXNzKHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQ
b2ludGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVj
b2RlT2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xv
Z3VlKC8qIHJldHVybkFkZHJlc3NBbHJlYWR5VGFnZ2VkOiAqLyB0cnVlKTsgLy8gUmV0dXJuIGFk
ZHJlc3MgdGFnZ2VkIGluICdnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsnCiAKLSAgICAvLyBQ
cmVzZXJ2ZSBtZXRhZGF0YSBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlcjsKLSAgICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAg
ICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gc19tZXRhZGF0YUdQUjsKLSAgICBhdXRv
IHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAgICAgaml0LmxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzX21ldGFkYXRhR1BSKTsKLSAgICAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhzX21ldGFkYXRhR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0
YWRhdGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgfTsKLSNlbmRpZgotICAgIEFTU0VS
VChSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKG1ldGFkYXRhQ1NS
KSk7Ci0gICAgaml0Lm1vdmUobWV0YWRhdGFHUFIsIG1ldGFkYXRhQ1NSKTsKLQotICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9iYWxPYmpl
Y3RHUFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQ
UiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKGluc3RydWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFs
T2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoaW5z
dHJ1Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkp
LCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpOworCisgICAgLy8gc2F2ZSBtZXRhZGF0YUdQUiAoYXJndW1lbnRzIHRvIGNh
bGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFj
ayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1
c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisg
ICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIGppdC5zdG9yZVB0cihtZXRhZGF0YUdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rl
cikpOworCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwog
ICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNo
ZWNrKHZtKTsKIAotICAgIGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1l
dGFkYXRhQ1NSLCBNZXRhZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9m
ZnNldE9mRmlyc3RCdWNrZXQoKSkpOwotICAgIHJlc3RvcmVIaWphY2tlZENTUigpOworICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBtZXRhZGF0YUdQUik7IC8v
IFJlc3RvcmUgbWV0YWRhdGFHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBz
dGFja1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorICAgIGppdC5z
dG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBNZXRhZGF0YTo6
b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkp
OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNl
bGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGpp
dC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BV
KE1JUFMpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJl
c3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZv
cm0iCi0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0
KCk7CiAKICAgICBleGNlcHRpb25DaGVjay5saW5rKCZqaXQpOwotICAgIHJlc3RvcmVIaWphY2tl
ZENTUigpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBKdW1wIGp1bXBUb0hhbmRs
ZXIgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0yNTkw
LDI3ICsyMTIyLDIwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2ZpbGVk
UmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQgQ29k
ZUJsb2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJlIGd1
YXJhbnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAg
ICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhyb3df
c3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50SW5z
dHJ1Y3Rpb24pOwotI2Vsc2UKLSAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAg
dWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAg
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOwogICAgICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdCht
X2J5dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisgICAg
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNl
dEdQUjsKIAotICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3Bf
cHV0X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlm
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZz
ZXRHUFIpOworICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19v
cF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAg
fQogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0m
IHZtKQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4g
b25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTI2MTks
NDMgKzIxNDQsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6
OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQot
ICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsK
ICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNldEdQUjsg
Ly8gSW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50
R1BSMzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKKyAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSLCBieXRlY29kZU9mZnNl
dEdQUiwgY29kZUJsb2NrR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsK
KworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhj
b2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkp
LCBpbnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5z
dHJ1Y3Rpb25HUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Q
dXRUb1Njb3BlKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgQ2FsbCBv
cGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0
LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9u
Q2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBqaXQu
ZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChY
ODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJh
bWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENU
SVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwo
aGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xv
d19vcF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
ZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
QEAgLTI2NjMsNyArMjE3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRz
ID0gYnl0ZWNvZGUubV9hcmd1bWVudHM7CiAgICAgaW50IGluZGV4ID0gYnl0ZWNvZGUubV9pbmRl
eDsKLSAgICAKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGFyZ3VtZW50cywg
cmVnVDApOwogICAgIGxvYWRWYWx1ZShBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6OnN0
b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCBq
c1JlZ1QxMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwganNSZWdUMTAp
OwpAQCAtMjc0Myw3ICsyMjU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2Vu
dW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25l
Q2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpAQCAt
MjgwNiw3ICsyMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNlcy5s
aW5rKHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI4MjQs
MTMgKzIzNDAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlzdCBkb25l
Q2FzZXM7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5lRW51bWVy
YXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxpbmVFbnVt
ZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDEgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRj
aDE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lRW51bWVyYXRvckdl
dEJ5VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gz
ID0gQmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gzOworICAgIGNv
bnN0ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0
b3JHZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpiYXNl
SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6cHJvcGVydHlKU1IucGF5bG9h
ZEdQUigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICBjb25zdGV4cHIg
R1BSUmVnIHNjcmF0Y2gxID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZh
bDo6c2NyYXRjaDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gyOworICAgIGNvbnN0ZXhwciBH
UFJSZWcgc2NyYXRjaDMgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFs
OjpzY3JhdGNoMzsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihtb2RlLCBzY3JhdGNoMyk7CkBAIC0yOTA2LDcg
KzI0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotdm9pZCBKSVQ6OmVt
aXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5jdGlvblR5
cGUgZ2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUlt
cGwoY29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFs
Q2FzZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTM2LDcgKzI0NTIs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7
CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgZ2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxp
bmsodGhpcyk7CkBAIC0yOTQ0LDMxICsyNDYwLDMxIEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0
b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
CiAKIHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9w
ZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51
bWVyYXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CisgICAg
ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEVudW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3Jf
aGFzX3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3df
cGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0UoSlNWQUxV
RTMyXzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
Z2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2Vu
dW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJh
dG9yX25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19w
YXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9nZXRfYnlf
dmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAg
LTI5NzcsMTUgKzI0OTMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0
X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUUKICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNf
b3duX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lk
IEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rp
b24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hh
c19vd25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5MDFkZjU2YWZiMTNiNDhj
MWVhODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3MDM2NmIzNTBlMjM5N2Zi
ZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0xNzEsOCAr
MTcxLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6
OmN0aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwogfQogCi0jaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVu
Y3Rpb24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2FzdDxU
aHVua0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEsOCArMTc5LDYgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRo
RnVuY3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5U2VhcmNoZXIgewogICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYga2V5KSB7IHJldHVy
biBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQogICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNvbnN0IEhvc3RGdW5jdGlv
bktleSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjplcXVhbChhLCBiKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggODQ3Y2UyNTAyZTQwMThh
MmM2ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZlMGRiNTdmY2Q4YTBjYTZm
MTFkYzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC02Myw5
ICs2Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJU
YWc+IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRodW5rR2VuZXJhdG9yKTsK
LSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiwgU2xvd1BhdGhGdW5j
dGlvbik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIo
Vk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0
aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWdu
YXR1cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlmOTdjYjA3NDdhMGE0ZTEz
ZDcyOGIuLjMyZjA1YjgzZjUyOWU4OTVkYmQ4ZTYyZDlmN2NjMjUwNDMyMDhjMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDkgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK25hbWVz
cGFjZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEpJVDo6YXJn
dW1lbnRHUFIzOworfQogCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CkBAIC00NCw5
ICs0Niw3IEBAIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKICAgICB1aW50MzJfdCBieXRl
Y29kZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5kZXgp
OwogCi0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAgbV9qaXQtPm1vdmUo
SklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7Cisg
ICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJzLT5j
dGlTbG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOwogfQogCkBAIC01NCw0NiArNTQsNDkgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmsoVk0m
IHZtLCBTbG8KIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwotCi0jaWYgQ1BVKFg4Nl82
NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0g
ICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJz
OjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2Vu
ZGlmCi0KLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywgQ0NhbGxIZWxwZXJzOjp0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9s
b2d1ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5
dGVjb2RlT2Zmc2V0R1BSLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2
bSk7CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1lbnRH
UFIxID09IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBqaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBPUyhXSU5ET1dT
KSAmJiBDUFUoWDg2XzY0KQorICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMgbGFyZ2Vy
IHRoYW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIgcGFzc2Vk
IGFzCisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3VtZW50cyBh
cmUgc2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkgZ2Vu
ZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BS
ID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBjYWxsRnJhbWVBcmdHUFIsIHBjQXJnR1BSLCBieXRlY29kZU9m
ZnNldEdQUikpOworI2Vsc2UKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFyZ0dQUiA9
IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJnR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbGxG
cmFtZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZW5kaWYKKyAgICBq
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lQXJnR1BSKTsKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSwgcGNBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhwY0FyZ0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSks
IHBjQXJnR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBwY0FyZ0dQUik7
CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25Q
YXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5w
b3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWly
KENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1Jl
Z2lzdGVyKTsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3AoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBwYworICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsgLy8gY2FsbEZyYW1lCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAKLSAgICBh
dXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5k
bGVFeGNlcHRpb25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwor
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIENDYWxsSGVs
cGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpF
eHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxpbmso
ZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5v
UHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdn
ZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0
aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5kZXgg
ODk5YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4MjY1
MmE5MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ns
b3dQYXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEpJVFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlv
bikKKyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1Bh
dGhGdW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0aEZ1
bmN0aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7CiAgICAg
ICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAotI2lm
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0mLCBT
bG93UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotCi0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0ZVRv
cENhbGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1f
aml0LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAg
ICAgbV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjEp
OwotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJn
dW1lbnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVz
dGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAgSklU
OjpDYWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwotCi0j
aWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJl
Z1QwKTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxGcmFt
ZSByZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0gR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5leGNlcHRp
b25DaGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBTbG93
UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiog
bV9wYzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggYzY1NzFhNmNiNTdlODI0ZGNjOWUxY2EyMzVl
NGRiZGVhMzA5MzNiMC4uZmEzM2U3OWJmNjRjZmUwYWNlMzc2ODc1YWUwYmZhZDYwN2E1NDRlMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAt
NDksOSArNDksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRs
ZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlv
biA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTU5LDggKzU3
LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
aGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkKIHsK
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzcsMjAgKzczLDEzIEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5r
UHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAKLSNl
bmRpZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3Rh
Y2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZSZWdpc3Rl
cnM6OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklT
Q1Y2NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQu
cG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6
OnJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50
ZWQgb24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisjaWYgQ1BV
KFg4Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVzIHRoZSBy
ZXR1cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNw
KTsKICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9IGppdC5q
dW1wKCk7CkBAIC0xMDEsMzIgKzkwLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9wVGh1
bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7
CiAKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIC8vIFRoaXMgdGh1bmsgaXMgdGFp
bCBjYWxsZWQgZnJvbSBvdGhlciB0aHVua3MsIGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgYWx3
YXlzIGFscmVhZHkgdGFnZ2VkCiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0
aW9uRnV6eigpKSkgewotICAgICAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1
bnRpbWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVz
cyBoZXJlLgotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVy
czo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNl
bmRpZgotICAgIH0KKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUg
ZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJl
LgorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAg
ICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogcmV0dXJuQWRkcmVzc0FscmVhZHlUYWdnZWQ6
ICovIHRydWUpOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRsZUV4Y2VwdGlvbiA9IGpp
dC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAg
ICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAg
aml0LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxw
ZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9n
dWUoKTsKICAgICBqaXQucmV0KCk7CiAKICAgICBhdXRvIGhhbmRsZXJHZW5lcmF0b3IgPSBPcHRp
b25zOjp1c2VFeGNlcHRpb25GdXp6KCkgPyBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxl
RXhjZXB0aW9uR2VuZXJhdG9yIDogaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yOwpAQCAtMTQzLDgg
KzEyMCw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGFnVHlwZT4KIGlu
bGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVn
IHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggYTlmZWVlYTkyNGFlMDA3OGQ4NDUxZTE3MmM0YzQ5NDVk
ZjFkNWVlMS4uMTA1NDkxMDRlZjYyMGU3ODI5ZjBiNGFiY2FiYWVkYzQ5NzM1YTJkMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0zOCwxMyArMzgs
OCBAQCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlv
bldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0jZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVy
YXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVu
a1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNs
b3dQYXRoR2VuZXJhdG9yKFZNJik7CkBAIC04Miw5ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihWTSYpOwogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9y
KFZNJik7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKLSNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRW5hYmxlLmgKaW5kZXggNjY0YjBlMjlmNmJhM2NlNDgyNmU1MTA5ZDczZjg2Y2M5YmM2YWRm
ZC4uNWVjNzQwOWJjOWFlODZjMzQyOGU2MmVjMjBhNDUwYWYyZTc4YjRhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZS5oCkBAIC04MzksMTQgKzgzOSw2IEBACiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BF
UkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpIHx8IChDUFUoWDg2
XzY0KSAmJiAhT1MoV0lORE9XUykpCi0vKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgdGh1
bmtzIGNhbiB1c2UgdXAgdG8gNiBhcmd1bWVudCByZWdpc3RlcnMsIGFuZAotICAgbWFrZSB1c2Ug
b2YgQVJNNjQgbGlrZSBmZWF0dXJlcy4gRm9yIG5vdywgd2UnbGwgb25seSBzdXBwb3J0IHRoZW0g
b24gcGxhdGZvcm1zCi0gICB0aGF0IGhhdmUgNiBvciBtb3JlIGFyZ3VtZW50IHJlZ2lzdGVycyB0
byB1c2UuCi0qLwotI2RlZmluZSBFTkFCTEVfRVhUUkFfQ1RJX1RIVU5LUyAxCi0jZW5kaWYKLQog
I2lmICFkZWZpbmVkKEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSkgJiYgIU9TKFdJTkRPV1MpCiAj
ZGVmaW5lIEVOQUJMRV9CSU5ESU5HX0lOVEVHUklUWSAxCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453486</attachid>
            <date>2022-03-01 03:53:10 -0800</date>
            <delta_ts>2022-03-01 07:44:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233822-20220301115308.patch</filename>
            <type>text/plain</type>
            <size>281684</size>
            <attacher name="Geza Lore">glore</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
N2VlNTAyNDEwMzNkOTRhNjAwMjcyYWNhNDI0MmRjNmRjMzRmNjE1Li4wZDA2Y2FiNzY3YWE5NTQw
NTZmNWFmNzQ2NTFjN2NmZTFkNDE0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMjItMDMtMDEgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzgyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFBvcnQgYW5kIGVuYWJs
ZSBhbGwgY29kZSBwYXRocyB1bmRlciAjaWZkZWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisg
ICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCByZW1vdmUgdGhlIG5vdyB1bnVzZWQgY29kZSBw
YXRocy4KKworICAgICAgICBUbyBwb3J0IHRoZSBleHRyYSB0aHVua3MgdG8gYWxsIHBsYXRmb3Jt
cywgaXQgd2FzIG5lY2Vzc2FyeSB0byBlbmFibGUKKyAgICAgICAgdGhlbSB0byBkbyBmdW5jdGlv
biBjYWxscyB0byBDKysgc2xvdyBwYXRoIG9wZXJhdGlvbnMsIHdoaWNoIG9uIHNvbWUKKyAgICAg
ICAgcGxhdGZvcm1zIHJlcXVpcmUgcGFzc2luZyBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBUbyBl
bmFibGUgdGhpcywKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtQcm9sb2d1ZSBh
bmQKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSBhcmUgaW50cm9k
dWNlZCB0aGF0IGFsbG9jYXRlIHNvbWUKKyAgICAgICAgYWRkaXRpb25hbCBzdGFjayBzcGFjZSBv
biBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCisKKyAgICAgICAgQWRkaXRpb25h
bGx5LCB0aGUgdGh1bmtzIHRoYXQgcmVxdWlyZSBzdWJzZXF1ZW50IGV4Y2VwdGlvbiBjaGVja2lu
ZworICAgICAgICBub3cgdGFpbCBjYWxsIGRpcmVjdGx5IHRvIHRoZSBleGNlcHRpb24gY2hlY2sg
dGh1bmssIHJhdGhlciB0aGFuCisgICAgICAgIHJldHVybmluZyB0byB0aGUgYmFzZWxpbmUgY29k
ZSBhbmQgZG8gYSBzZXBhcmF0ZSBjYWxsIHRvIHRoZSBleGNlcHRpb24KKyAgICAgICAgY2hlY2sg
dGh1bmsuIFRoaXMgc2F2ZXMgYW4gZXh0cmEgY2FsbCBzaXRlIGluIHRoZSBnZW5lcmF0ZWQgYmFz
ZWxpbmUKKyAgICAgICAgb3BzIGFuZCByZWR1Y2VzIGNvZGUgc2l6ZSBvbiBhbGwgcGxhdGZvcm1z
ICh+MS41JSByZWR1Y3Rpb24gb24geDg2XzY0KS4KKworICAgICAgICBBbHNvIGZhY3RvcmVkIG91
dCB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yCisgICAg
ICAgIGJhc2VsaW5lIG9wcyBpbnRvIEJhc2VsaW5lSklUUmVnaXN0ZXJzLmgsIGFzIHRoZXJlIGFy
ZSBub3cgcXVpdGUgYSBsb3QKKyAgICAgICAgb2YgdGhlbSBhbmQgc29tZSBhcmUgc29tZXdoYXQg
ZWxhYm9yYXRlLiBUaGlzIG5lY2Vzc2l0YXRlcyBtb3ZpbmcgdGhlCisgICAgICAgIG5vT3Zlcmxh
cCBhbmQgcHJlZmVycmVkQXJndW1lbnRHUFIvcHJlZmVycmVkQXJndW1lbnRKU1IgY29uc3RleHBy
CisgICAgICAgIGZ1bmN0aW9ucyBvdXQgZnJvbSB0aGVpciBwcmV2aW91cyBwbGFjZSwgc28gdGhl
c2Ugbm93IGxpdmUgaW4KKyAgICAgICAgR1BSSW5mby5oCisKKyAgICAgICAgRW5hYmxpbmcgdGhl
IGV4dHJhIENUSSB0aHVua3Mgb24gQVJNdjcvVGh1bWItMiBzYXZlcyBhYm91dCAyNSUKKyAgICAg
ICAgYmFzZWxpbmUgY29kZSBzaXplLCBhY2NvcmRpbmcgdG8gLS1kdW1wTGlua0J1ZmZlclN0YXRz
LgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpzdWJQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnNjcmF0Y2hS
ZWdpc3Rlcik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OmVtaXRFeHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAqIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1Yklu
Zm86OmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
bGluayk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVtaXRDVElUaHVua1Byb2xvZ3VlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjplbWl0Q1RJVGh1bmtFcGlsb2d1ZSk6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dDYXNlQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAoSlNDOjpKSVQ6Omxp
bmspOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbW9kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICog
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUR2V0QnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpT
Qzo6SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2VsaW5lRGF0YUlDRmFz
dFBhdGgpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUJhc2Vs
aW5lRGF0YUlDRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6dmFsdWVJc1RydXRoeUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90
aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgIChKU0M6OkpJVDo6b3Bf
ZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Y2hlY2tfdHJhcHMpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJH
ZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpnZW5l
cmF0ZUdldEJ5VmFsU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5
X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJh
bmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3NldF9wcml2YXRlX2JyYW5kKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFs
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3df
b3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlbF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9kZWxfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkX2RpcmVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVu
Q2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0
aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEhhc1ByaXZh
dGVTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9icmFuZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfZW51bWVy
YXRvcl9oYXNfcHJvcGVydHlJbXBsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VudW1l
cmF0b3JfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9y
X2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19v
d25fcHJvcGVydHkpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAqIGpp
dC9KSVRUaHVua3MuaDoKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUU2xvd1BhdGhDYWxsOjpjYWxsKToKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhD
YWxsOjpnZW5lcmF0ZVRodW5rKToKKyAgICAgICAgKiBqaXQvU2xvd1BhdGhDYWxsLmg6CisgICAg
ICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6SklUU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBq
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKwogMjAyMi0wMi0yOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0ZsZXhib3hdIEFk
ZCBvcHRpb25zIHRvIHNob3cgZWFjaCBhcmVhJ3MgQ1NTIGBvcmRlcmAgYW5kL29yIERPTSBpbmRl
eCBpbiB0aGUgcGFyZW50IGZsZXggY29udGFpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjZjFmNjExZGQ5ZWMxZjY2NWVk
ZjQyOTk3ZTRkM2ZjOGRkNzMxZjUuLjRjMzdlN2U5NzUzNzJmZDUyMjA4NGRkNzVkNGUwZmQzMDQw
Y2JmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMDEgIEdlemEgTG9yZSAgPGdsb3Jl
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gUG9ydCBFWFRSQV9DVElfVEhVTktTIHRvIGFs
bCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzgyMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisgICAgICAgIFJlbW92ZSBFWFRSQV9DVElfVEhVTktT
IGRlZmluZSAobm93IGFsd2F5cyBvbiBvbiBhbGwgcGxhdGZvcm1zKQorCiAyMDIyLTAyLTI4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRvcHQg
LXN0cmVhbURhdGFQYXJzZXI6ZGlkUHJvdmlkZUNvbnRlbnRLZXlTcGVjaWZpZXI6Zm9yVHJhY2tJ
RDogZGVsZWdhdGUgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBjNjJiYTgxMjYwN2FhNGU3NzVjNGY0MTVhMDgxOTg0ZWJmMmFiMGFlLi43NGUyM2RmNTRkZTZm
Yzg4NDA0MjMzMjVlNDgxMDFkNjNlODdjNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC04NDMsNiArODQzLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmgKICAgICBqaXQvQXNzZW1i
bHlIZWxwZXJzU3Bvb2xlcnMuaAogICAgIGppdC9CYXNlbGluZUpJVENvZGUuaAorICAgIGppdC9C
YXNlbGluZUpJVFJlZ2lzdGVycy5oCiAgICAgaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmgKICAg
ICBqaXQvQ0NhbGxIZWxwZXJzLmgKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxOTQzODc5ZTgyNTA5M2ZhMGRiYWE1Njc5Zjc0
YWM5NWU2Y2ZkMzAuLjczNTBhYjgyNWE3ZDRjMDBlNGI5ZWVkNTQzMzg5MjhiMDNkNGQ4MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAzLDYgKzEyMDMsNyBAQAogCQk3MjEz
MUJGQTI2NTg3RUYyMDA3MTE0Q0YgLyogSklUUGxhblN0YWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjEzMUJGNjI2NTg3RUYyMDA3MTE0Q0YgLyog
SklUUGxhblN0YWdlLmggKi87IH07CiAJCTcyMTMxQkZDMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRX
b3JrbGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMTMxQkZCMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMuaCAq
LzsgfTsKIAkJNzIzOTk4RjcyNjVEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIzOTk4RjUyNjVE
QkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUGxhbi5oICovOyB9OworCQk3MjQwMDBGNzI4MkRC
Q0RCMTA1Nzg2N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDAwOUY1Mjc4REJDREIwMDU3ODY3RiAvKiBC
YXNlbGluZUpJVFJlZ2lzdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyNkI5MUIwMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRXb3JrbGlzdFRo
cmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2
QjkxQTgyNjU4MTY1MjAwOEU2RjgyIC8qIEpJVFdvcmtsaXN0VGhyZWFkLmggKi87IH07CiAJCTcy
NkI5MUIzMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNkI5MUFCMjY1ODE2NTMwMDhF
NkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZCOTFCNzI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2Qjkx
QUYyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCAqLzsgfTsKQEAgLTQyNDQsNiArNDI0NSw3
IEBACiAJCTcyMTMxQkZCMjY1ODdFRkEwMDcxMTRDRiAvKiBKSVRXb3JrbGlzdElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUV29ya2xpc3RJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMzk5OEY1MjY1REJDREIwMDU3ODY3RiAvKiBC
YXNlbGluZUpJVFBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZWxp
bmVKSVRQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMzk5OEY2MjY1REJD
REIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFzZWxpbmVKSVRQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzI0MDA5RjUyNzhEQkNEQjAwNTc4NjdGIC8qIEJhc2VsaW5lSklUUmVnaXN0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUE4MjY1ODE2NTIwMDhFNkY4
MiAvKiBKSVRXb3JrbGlzdFRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRXb3JrbGlzdFRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZC
OTFBQTI2NTgxNjUzMDA4RTZGODIgLyogSklUUGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKSVRQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI2QjkxQUIyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb21waWxhdGlvbk1vZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0OTMsNiArNjQ5NSw3IEBACiAJCQkJNTJERDAwMDYy
NkUwMzlCMzAwNTRFNDA4IC8qIEJhc2VsaW5lSklUQ29kZS5oICovLAogCQkJCTcyMzk5OEY2MjY1
REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uY3BwICovLAogCQkJCTcyMzk5OEY1MjY1
REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4uaCAqLywKKwkJCQk3MjQwMDlGNTI3OERC
Q0RCMDA1Nzg2N0YgLyogQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCAqLywKIAkJCQkwRjY0QjI2RjFB
Nzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKIAkJCQkwRjY0QjI3MDFBNzg0
QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggKi8sCiAJCQkJNjVCODM5MkQxQkFDQTlEMzAw
NDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmNwcCAqLywKQEAgLTk4NDEsNiArOTg0NCw3IEBACiAJ
CQkJMEYyQzYzQjIxRTYwQUU0NzAwQzEzODM5IC8qIEIzV2lkdGguaCBpbiBIZWFkZXJzICovLAog
CQkJCTUyREQwMDA4MjZFMDM5QjkwMDU0RTQwOCAvKiBCYXNlbGluZUpJVENvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTcyMzk5OEY3MjY1REJDREIwMDU3ODY3RiAvKiBCYXNlbGluZUpJVFBsYW4u
aCBpbiBIZWFkZXJzICovLAorCQkJCTcyNDAwMEY3MjgyREJDREIxMDU3ODY3RiAvKiBCYXNlbGlu
ZUpJVFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2NzhGOEYxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3QjgzQUMw
RTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzVFODlGRDI1QzUwRjg3MDA3MUVFMUUgLyogQmlnSW50NjRBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggYmY2ZmJlMzA1YjNmZDRkNTZhYWE4NTI4OWNlMzEzMTVhODczNWJl
NS4uZjFmZjYzOTRjOWY0ZWVkNTFjMTAwYzVlNGMyN2VmNjhmMGRiNWI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNjc0LDEy
ICs2NzQsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjMyKGxlZnQsIHJpZ2h0
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWIzMihpbW0sIGRlc3QpOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWIzMihsZWZ0LCByaWdodCwgZGVz
dCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsK
QEAgLTEwMDcsMTIgKzEwMTcsMjIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3ViNjQoc3Jj
LCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHN1YlB0cihSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHN1YjY0
KGxlZnQsIHJpZ2h0LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YlB0cihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdWI2NChpbW0sIGRlc3Qp
OwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3ViUHRyKFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzdWI2NChsZWZ0
LCByaWdodCwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbVB0ciBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChp
bW0pLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMjhmNzlhYTdmMWU1ZjU1NGFmNmUyOGQ3ODFhNzRh
MGY3NmIyNjlhNC4uY2JiYTFhYTlkZmNhOTk1MjE4MjEzYTYxNjBlNzNhNmIzMmIyZDc4MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtR1BScyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KHsgRk9SX0VBQ0hf
R1BfUkVHSVNURVIoRFVNTVlfUkVHSVNURVJfVkFMVUUpIH0pLnNpemUoKTsKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pih7
IEZPUl9FQUNIX0ZQX1JFR0lTVEVSKERVTU1ZX1JFR0lTVEVSX1ZBTFVFKSB9KS5zaXplKCk7CiAj
dW5kZWYgRFVNTVlfUkVHSVNURVJfVkFMVUUKLSAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3Rl
cigpIHsgcmV0dXJuIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyKCkgeyByZXR1cm4gYWRkcmVzc1RlbXBSZWdpc3Rl
cjsgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJBUk12NygpCiAgICAgICAgIDogbV9tYWtlSnVtcFBh
dGNoYWJsZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCAwNDVkZWZlZGIxNTRmZDA4OWEyYjY4ZGNk
NjMxODExOTcxMDAxZTIyLi5iMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCkBAIC04MDQsNyArODA0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7CiAg
ICAgfQotICAgIAorCisgICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIGEsIFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoYSwgZGVzdCk7CisgICAg
ICAgIHN1YjY0KGltbSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdWI2NChUcnVzdGVkSW1t
NjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaApp
bmRleCAwMGE1NTQ5N2ZkNjNhZGVhOWNmNWYxYmYwYmM2YjFiYzE1YTg0MGQyLi43N2U0YTZlOWVm
M2Y4YWM3MmE1ZGQwYzc4MjhhMGJkY2VjMzVkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWVTaHVmZmxlRGF0YS5oIgogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29k
ZUxvY2F0aW9uLmgiCkBAIC00NywxNCArNDgsNiBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7
CiBzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGE7CiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlua0lu
Zm87CiAKLSNpZiBFTkFCTEUoSklUKQotbmFtZXNwYWNlIEJhc2VsaW5lQ2FsbFJlZ2lzdGVycyB7
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgY2FsbGVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsK
LWNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhw
ciBHUFJSZWcgY2FsbExpbmtJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLX0KLSNlbmRpZgot
CiBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxM
aW5rSW5mbz4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CkBAIC00NjIsOSArNDU1LDkgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkgeyByZXR1cm4gQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVHUFI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBjYWxsTGlua0luZm9HUFIoKSB7IHJldHVybiBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxM
aW5rSW5mb0dQUjsgfQotICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJlZyBjYWxsTGlu
a0luZm9HUFIpIHsgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSID09IEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIGNhbGxlZUdQUigpIHsgcmV0dXJuIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxs
ZWVHUFI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIoKSB7
IHJldHVybiBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSOyB9Cisg
ICAgdm9pZCBzZXRDYWxsTGlua0luZm9HUFIoR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgeyBSRUxF
QVNFX0FTU0VSVChjYWxsTGlua0luZm9HUFIgPT0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6
OmNhbGxMaW5rSW5mb0dQUik7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggOTQzNzY4ZWVk
OWE0MDc4MjAyY2JiMTRhM2I5Yzc0NWE2MTJiZTlmOC4uYjQ3MTE2ZGZlZGU2ODRkMDdmNDc4NTUw
ZWYxYjdhZjY5NDE0NGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0yMzMsMjMgKzIzMywxMiBAQCB2b2lkIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZTo6ZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpCiAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVy
LCBvcmlnaW5hbEhhbmRsZXIubmF0aXZlQ29kZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9IGVs
c2UgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAganVtcFRvRXhjZXB0aW9uSGFuZGxlciA9IGppdC0+anVtcCgpOwogICAgICAgICBWTSog
dm0gPSAmbV92bTsKICAgICAgICAgaml0LT5hZGRMaW5rVGFzaygKICAgICAgICAgICAgIFs9XSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGlu
ayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0Q1RJU3R1
YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwog
ICAgICAgICAgICAgfSk7Ci0jZWxzZQotICAgICAgICBqaXQtPnNldHVwQXJndW1lbnRzPGRlY2x0
eXBlKG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoJm1fdm0pKTsKLSAgICAgICAgaml0LT5wcmVwYXJlQ2FsbE9wZXJhdGlvbihtX3Zt
KTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJDYWxs
ID0gaml0LT5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgIGppdC0+YWRkTGlua1Rhc2so
Ci0gICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsobG9va3VwRXhjZXB0aW9uSGFuZGxlckNhbGwsIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIGppdC0+anVtcFRvRXhjZXB0aW9uSGFuZGxlcihtX3Zt
KTsKLSNlbmRpZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNWQyODdkYjU2OGRmYjk3NTMzNDBj
MjA5NGFiNjA5YzIwMTczYTZkZC4uNzI5OTRhODI3YWZiYzZiYjY5MzFjZjRkNjFmNmNjZTkzYWI3
ZjFmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVn
aXN0ZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKLSNpbmNs
dWRlICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNj
ZXNzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaC5oIgogCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBT
dHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZv
KENvZGVCbG9jayosIFVubGkKICAgICB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpOwogICAgIGlmIChhY2Nlc3NUeXBlID09IEFjY2Vzc1R5cGU6
OkdldEJ5SWQgJiYgdW5saW5rZWRTdHViSW5mby5ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkg
ewogICAgICAgICAvLyBGb3IgaXRlcmF0b3JfbmV4dCwgd2UgY2FuJ3QgY2xvYmJlciB0aGUgImRv
bnRDbG9iYmVySlNSIiByZWdpc3RlciBlaXRoZXIuCi0gICAgICAgIHVzZWRSZWdpc3RlcnMuc2V0
KEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6ZG9udENsb2JiZXJKU1IpOworICAgICAgICB1c2Vk
UmVnaXN0ZXJzLnNldChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OmRv
bnRDbG9iYmVySlNSKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKQEAgLTUy
MSw3OCArNTIxLDc4IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRpYWxpemVGcm9tVW5s
aW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyhDb2RlQmxvY2sqLCBVbmxpCiAgICAgc3dpdGNoIChhY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeVZhbDoKICAgICAgICAgaGFz
Q29uc3RhbnRJZGVudGlmaWVyID0gZmFsc2U7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZURl
bEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICAgICAgcmVncy5wcm9w
ZXJ0eUdQUiA9IEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKLSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpyZXN1
bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVEZWxC
eVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6RGVsQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdz
LnByb3BlcnR5R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9z
dHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBC
YXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2LnBy
b3BlcnR5VGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IudGFn
R1BSKCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6
cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkRlbEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFn
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIo
KTsKKyAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlWYWw6
OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxldGVCeUlEOgogICAgICAgICBoYXNDb25zdGFudElkZW50
aWZpZXIgPSB0cnVlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJz
OjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKICAgICAgICAgcmVncy5wcm9w
ZXJ0eUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVEZWxC
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZv
R1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgdmFs
dWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnJlc3VsdEpT
Ui5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RGVsQnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZURlbEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
RGVsQnlJZDo6YmFzZUpTUi50YWdHUFIoKTsKICAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IElu
dmFsaWRHUFJSZWc7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OkZhc3RQYXRoOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKICAgICBj
YXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50
aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgICAg
ICB2YWx1ZUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJz
OjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpH
ZXRCeVZhbDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvcGVydHlHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OnJl
c3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAg
ICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6YmFzZUpT
Ui50YWdHUFIoKTsKKyAgICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1IudGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BS
ID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgog
ICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgcHJvdG90eXBl
SXNLbm93bk9iamVjdCA9IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVJbnN0YW5j
ZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0g
QmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAg
ICAgICByZWdzLnByb3RvdHlwZUdQUiA9IEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6cHJv
dG9KU1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAg
IHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnJlc3VsdEpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MucHJvdG90eXBlR1BSID0gQmFzZWxpbmVKSVRSZWdp
c3RlcnM6Okluc3RhbmNlb2Y6OnByb3RvSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHVi
SW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzdHViSW5mb0dQUjsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbnN0
YW5jZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjp2YWx1ZUpTUi50YWdHUFIoKTsKICAg
ICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICB2LnByb3BlcnR5VGFn
R1BSID0gQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpwcm90b0pTUi50YWdHUFIoKTsKKyAg
ICAgICAgdi5wcm9wZXJ0eVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9m
Ojpwcm90b0pTUi50YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFj
Y2Vzc1R5cGU6OkluQnlWYWw6CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZTog
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJhbmQ6IAogICAgICAgICBoYXNDb25z
dGFudElkZW50aWZpZXIgPSBmYWxzZTsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlH
UFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsK
LSAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUluQnlWYWxSZWdp
c3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkluQnlWYWw6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5
R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgdmFsdWVHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6
cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNS
LnRhZ0dQUigpOwotICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVJbkJ5VmFsUmVn
aXN0ZXJzOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNl
bGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOwor
ICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6
OnByb3BlcnR5SlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbkJ5VmFsOjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6CiAgICAgICAgIGhhc0NvbnN0YW50
SWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIHJlZ3MudGhpc0dQUiA9IEludmFsaWRHUFJSZWc7
Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXls
b2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnJl
c3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUlu
QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1IucGF5bG9hZEdQUigp
OworICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6
c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50aGlzVGFnR1BS
ID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSW5CeUlkUmVn
aXN0ZXJzOjpiYXNlSlNSLnRhZ0dQUigpOwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5l
SW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IudGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAg
ICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUi50
YWdHUFIoKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlRy
eUdldEJ5SWQ6CkBAIC02MDAsNjUgKzYwMCw2NSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8oQ29kZUJsb2NrKiwgVW5saQog
ICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZDoKICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlm
aWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlzR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAg
ICAgYmFzZUdQUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRK
U1IucGF5bG9hZEdQUigpOwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVHZXRCeUlk
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdmFsdWVHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsK
KyAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpG
YXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgdi50
aGlzVGFnR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIg
PSBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUi50YWdHUFIoKTsKKyAgICAgICAg
YmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSLnRhZ0dQ
UigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpyZXN1bHRKU1IudGFnR1BSKCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmll
ciA9IHRydWU7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxpbmVH
ZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAg
IHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNS
LnBheWxvYWRHUFIoKTsKLSAgICAgICAgbV9zdHViSW5mb0dQUiA9IEJhc2VsaW5lR2V0QnlJZFdp
dGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAg
ICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJl
c3VsdEpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MudGhpc0dQUiA9IEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1IucGF5bG9hZEdQUigpOworICAgICAg
ICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6
RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGJh
c2VUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUi50YWdH
UFIoKTsKLSAgICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lz
dGVyczo6cmVzdWx0SlNSLnRhZ0dQUigpOwotICAgICAgICB2LnRoaXNUYWdHUFIgPSBCYXNlbGlu
ZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUi50YWdHUFIoKTsKKyAgICAgICAgYmFz
ZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1Iu
dGFnR1BSKCk7CisgICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okdl
dEJ5SWRXaXRoVGhpczo6cmVzdWx0SlNSLnRhZ0dQUigpOworICAgICAgICB2LnRoaXNUYWdHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjp0aGlzSlNSLnRhZ0dQUigp
OwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZDoK
ICAgICAgICAgaGFzQ29uc3RhbnRJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgcmVncy50aGlz
R1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICAgICAgYmFzZUdQUiA9IEJhc2VsaW5lUHV0QnlJZFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVlR1BSID0gQmFzZWxp
bmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIG1fc3R1
YkluZm9HUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgICAg
ICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5bG9h
ZEdQUigpOworICAgICAgICB2YWx1ZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlk
Ojp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCiAgICAgICAgIHYudGhpc1RhZ0dQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAg
ICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BS
KCk7Ci0gICAgICAgIHZhbHVlVGFnR1BSID0gQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1
ZUpTUi50YWdHUFIoKTsKKyAgICAgICAgYmFzZVRhZ0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpQdXRCeUlkOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsKICNlbmRpZgogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsOgogICAgIGNhc2UgQWNj
ZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9
IGZhbHNlOwotICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFz
ZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MucHJvcGVydHlHUFIgPSBCYXNlbGluZVB1
dEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHZhbHVl
R1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwot
ICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1Yklu
Zm9HUFI7CisgICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6
OmJhc2VKU1IucGF5bG9hZEdQUigpOworICAgICAgICByZWdzLnByb3BlcnR5R1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIHZhbHVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi5w
YXlsb2FkR1BSKCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKICAgICAgICAgaWYgKGFjY2Vzc1R5
cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCi0gICAgICAgICAgICBtX2FycmF5UHJvZmlsZUdQ
UiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb2ZpbGVHUFI7CisgICAgICAgICAgICBt
X2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmls
ZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxp
bmVQdXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi50YWdHUFIoKTsKLSAgICAgICAgdi5wcm9wZXJ0
eVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnRhZ0dQUigp
OwotICAgICAgICB2YWx1ZVRhZ0dQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnZhbHVl
SlNSLnRhZ0dQUigpOworICAgICAgICBiYXNlVGFnR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LnByb3BlcnR5VGFnR1BSID0g
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUi50YWdHUFIoKTsKKyAg
ICAgICAgdmFsdWVUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVl
SlNSLnRhZ0dQUigpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6U2V0UHJpdmF0ZUJyYW5kOgogICAgIGNhc2UgQWNjZXNzVHlwZTo6Q2hlY2tQcml2YXRlQnJh
bmQ6CiAgICAgICAgIGhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOwogICAgICAgICB2YWx1
ZUdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgICAgIGJhc2VHUFIgPSBCYXNlbGluZVByaXZhdGVC
cmFuZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgICAgIHJlZ3MuYnJhbmRH
UFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1IucGF5bG9hZEdQUigp
OwotICAgICAgICBtX3N0dWJJbmZvR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOworICAgICAgICBiYXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlBy
aXZhdGVCcmFuZDo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7CisgICAgICAgIHJlZ3MuYnJhbmRHUFIg
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpicmFuZEpTUi5wYXlsb2FkR1BS
KCk7CisgICAgICAgIG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0
ZUJyYW5kOjpGYXN0UGF0aDo6c3R1YkluZm9HUFI7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgdmFsdWVUYWdHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgICAgICBiYXNlVGFnR1BSID0g
QmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJhc2VKU1IudGFnR1BSKCk7Ci0gICAgICAg
IHYuYnJhbmRUYWdHUFIgPSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVyczo6YnJhbmRKU1Iu
dGFnR1BSKCk7CisgICAgICAgIGJhc2VUYWdHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJp
dmF0ZUJyYW5kOjpiYXNlSlNSLnRhZ0dQUigpOworICAgICAgICB2LmJyYW5kVGFnR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlByaXZhdGVCcmFuZDo6YnJhbmRKU1IudGFnR1BSKCk7CiAjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAppbmRleCAxZjY1ZWMwNGUyNDZhYmJmOTkzMDhjZWIzNDYyNTA3ZmMx
ZmZmYTk1Li40NWYzNDNmMGRkMDU5MDdmMDk5MTdkYjAzYTFmNDE0ZGQ2ODAxNGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTM2LDQwICsx
MzYsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgQVNTRVJUX1VOVVNF
RChjb21waWxlZFNwZWN1bGF0aXZlLCBjb21waWxlZFNwZWN1bGF0aXZlKTsKIH0KIAotdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFt
ZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBv
bmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KCkpOwotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1fZ3JhcGguc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotCi0gICAgICAgIGp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIodm0oKSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5l
bXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7Ci0KLSAgICAg
ICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BF
bnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVy
IGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKCkpOwotCi0gICAgICAgIGFwcGVuZENhbGwob3BlcmF0aW9uTG9va3VwRXhj
ZXB0aW9uSGFuZGxlcik7Ci0KLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsK
LSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19Ci0KIHZvaWQgSklU
Q29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKICAgICAvLyBMaW5rIHRo
ZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCkBAIC0y
NzMsMTIgKzIzOSwxMCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPigp
KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhj
ZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCiAgICAgICAgIGxpbmtCdWZmZXIubGluayhtX2V4Y2VwdGlv
bkNoZWNrcywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjay5lbXB0eSgpKQogICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVMb2Nh
dGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBvc3JFeGl0VGh1bmsgPSB2bSgpLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRp
b25UaHVua0dlbmVyYXRvcik7CiAgICAgYXV0byB0YXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxK
SVRUaHVua1B0clRhZz4ob3NyRXhpdFRodW5rLmNvZGUoKSk7CkBAIC0zODIsNyArMzQ2LDYgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1Bh
dGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKTsKICAgICBtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBQ
Q1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2RlT3JpZ2luKCkpOwogICAgIAotICAg
IGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxpbmtPU1JFeGl0cygpOwogICAgIAog
ICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMgaWYgbmVjZXNzYXJ5LgpAQCAtNDg0
LDcgKzQ0Nyw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgbV9z
cGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyKTsKICAgICBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKGxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2Rl
T3JpZ2luKCkpOwogICAgIAotICAgIGNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwogICAgIGxp
bmtPU1JFeGl0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMg
aWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IGRlZGE1ZGViYWE5YjE3ODQ5YTIyZjIwNzdhOTQxNTYwNjdjZjFjZjcuLjk4NDI3Njgz
OGQzZTg5MGM1MTEzNmUwYTNkMThlZTBiOTcyNDZjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTMyMyw3ICszMjMsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgbGluayhMaW5rQnVmZmVyJik7CiAgICAgCiAgICAgdm9pZCBleGl0U3BlY3VsYXRpdmVX
aXRoT1NSKGNvbnN0IE9TUkV4aXQmLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgdm9pZCBj
b21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKICAgICB2b2lkIGxpbmtPU1JFeGl0cygpOwogICAg
IHZvaWQgZGlzYXNzZW1ibGUoTGlua0J1ZmZlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcAppbmRleCAzYjRjYTFkMTU3NWQ1MGJiZmUxYzRiN2FiODJmMTllYWM5
MDYyYjdmLi5hOTNhNmJhNDE2MTVlMDRhODM3YzliOWMxMzQ3OWU4NGY1MTE3OWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTEyOCwyNCArMTI4LDEyIEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAKICAgICAvLyBFbWl0IHRoZSBleGNlcHRpb24gaGFuZGxlci4KICAgICAqc3RhdGUu
ZXhjZXB0aW9uSGFuZGxlciA9IGppdC5sYWJlbCgpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogICAgIENDYWxsSGVscGVyczo6SnVtcCBoYW5kbGVyID0gaml0Lmp1bXAoKTsKICAgICBW
TSogdm1QdHIgPSAmdm07CiAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICBbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhoYW5kbGVy
LCBDb2RlTG9jYXRpb25MYWJlbCh2bVB0ci0+Z2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwogICAgICAgICB9KTsKLSNlbHNlCi0g
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRv
cEVudHJ5RnJhbWUpOwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZ2bSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwotICAgIGppdC5h
ZGRMaW5rVGFzaygKLSAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7Ci0gICAgICAgIH0pOwotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAgICAgc3RhdGUuZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6RlRMLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCBhNmFmZmUzNTlhOTE5OWE1ODA1ZTM5YThh
NDA5YTJhNWI1MzVkMGQ5Li4yOGJkZWUzYmE3NTUzMDY2ZTUzMDM3MTM1NzQ4NjE2YmQzYjhjZjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTc4LDE3ICs3OCw3IEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFn
KTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgYXV0byBqdW1w
VG9FeGNlcHRpb25IYW5kbGVyID0gaml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6TGVzc1RoYW4s
IEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSk7
Ci0jZWxzZQotICAgICAgICAgICAgYXV0byBub0V4Y2VwdGlvbiA9IGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKLSAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVl
U2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLSAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsTG9va3VwRXhjZXB0aW9u
SGFuZGxlckZyb21DYWxsZXJGcmFtZSA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAg
ICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7Ci0gICAgICAgICAgICBub0V4
Y2VwdGlvbi5saW5rKCZqaXQpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQog
CiAgICAgICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQu
bG9hZDY0KHZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMTEs
MTEgKzEwMSw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJp
dHlDaGVjaywgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjb2RlQmxvY2stPmlzQ29uc3Ry
dWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJp
dHlDaGVjaykpOwotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgICAgICAgICAgbGlu
a0J1ZmZlci0+bGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbCh2
bS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7Ci0jZWxzZQotICAgICAgICAgICAgbGlua0J1
ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVy
RnJvbUNhbGxlckZyYW1lKSk7Ci0jZW5kaWYKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyPEpJVFRodW5rUHRyVGFnPih2bS5nZXRDVElTdHVi
KGFyaXR5Rml4dXBHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+
bGluayhtYWluUGF0aEp1bXBzLCBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbik7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGY2ODNi
MGMxZjhhZjhjMDZkMWNkYzdjNzlhMjhkMTU1MWQwM2MxY2MuLmMxMTdlMGI1Y2Y5Y2UyYWM3NTk4
ZTUyZGFkMzM5Y2VhNmIwYWZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaApAQCAtMTkyMCw0OSArMTkyMCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBzdG9yZVdhc21Db250ZXh0SW5zdGFuY2VOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7
CiAjZW5kaWYKIAotICAgIC8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJlZ3Mg
YW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKLSAgICAv
LyBhc3NlcnRpb25zIHRvIGVuc3VyZSB0aGF0IHJlZ2lzdGVyIGFsaWFzZXMgbGl2ZSBhdCB0aGUg
c2FtZSBwb2ludCBkbyBub3QgbWFwIHRvIHRoZSBzYW1lCi0gICAgLy8gYXJjaGl0ZWN0dXJhbCBy
ZWdpc3Rlci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbm9PdmVybGFwKEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbm9PdmVybGFwSW1w
bCgwLCBhcmdzLi4uKTsgfQotCi1wcml2YXRlOgotICAgIC8vIEJhc2UgY2FzZQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJs
YXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBHUFJSZWcgY2FzZQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBub092ZXJsYXBJbXBsKHVpbnQ2NF90IHVzZWQsIFJlZ2lzdGVySUQgZ3ByLCBBcmdzLi4uIGFy
Z3MpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBtYXNrID0gbm9PdmVybGFwSW1wbFJlZ01hc2so
Z3ByKTsKLSAgICAgICAgaWYgKHVzZWQgJiBtYXNrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXR1cm4gbm9PdmVybGFwSW1wbCh1c2VkIHwgbWFzaywgYXJncy4uLik7Ci0g
ICAgfQotCi0gICAgLy8gSlNWYWx1ZVJlZ3MgY2FzZQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90
IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgdW5z
aWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BSKCkpOwotI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1wbFJlZ01hc2so
anNyLnRhZ0dQUigpKTsKLSNlbmRpZgotICAgICAgICBpZiAodXNlZCAmIG1hc2spCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub092ZXJsYXBJbXBsKHVzZWQgfCBt
YXNrLCBhcmdzLi4uKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5v
T3ZlcmxhcEltcGxSZWdNYXNrKFJlZ2lzdGVySUQgZ3ByKQotICAgIHsKLSAgICAgICAgaWYgKGdw
ciA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgcmV0dXJuIDBVTEw7Ci0gICAgICAgIHVu
c2lnbmVkIGJpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihncHIpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVChiaXQgPCBzaXplb2YodWludDY0X3QpICogQ0hBUl9CSVQpOwotICAgICAgICByZXR1
cm4gMVVMTCA8PCBiaXQ7Ci0gICAgfQotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjb3B5Q2FsbGVl
U2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGNhbGxlZVNhdmVz
QnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGlu
ZUpJVFJlZ2lzdGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJl
Z2lzdGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYzQ2OTg1NzA5MzZjNTI3NTI3MDJmNGQzZmI5ZTllNWUz
NTA0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Jhc2Vs
aW5lSklUUmVnaXN0ZXJzLmgKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShKSVQpCisKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJhc2VsaW5lSklUUmVnaXN0ZXJzIHsK
KworbmFtZXNwYWNlIENhbGwgeworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBjYWxsZWVKU1Ig
eyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1QyIH07Cit9CisKK25hbWVzcGFjZSBDaGVja1RyYXBzIHsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6bm9uQXJnR1BSMCB9Owor
fQorCituYW1lc3BhY2UgRW50ZXIgeworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6
ZWRHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9J
bml0R1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKK30KKworbmFtZXNwYWNlIEluc3RhbmNlb2Ygewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
R1BSSW5mbzo6YXJndW1lbnRHUFIyIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3Rv
SlNSIHsgR1BSSW5mbzo6YXJndW1lbnRHUFIzIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDFHUFIgeyBHUFJJbmZvOjpub25BcmdHUFIwIH07CisgICAgY29uc3RleHByIEdQUlJl
ZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjEgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86Ompz
UmVnVDEwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsKKyNpZiBDUFUo
TUlQUykKKyAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIKKyNlbHNlCisgICAgICAgIEpTUkluZm86OmpzUmVnVDMyCisjZW5kaWYKKyAgICB9OworICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm90b0pTUiB7IEpTUkluZm86OmpzUmVnVDU0IH07Cisg
ICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAg
Y29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BS
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsKK30KKworbmFtZXNwYWNlIEpGYWxzZSB7Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsK
K30KKworbmFtZXNwYWNlIEpUcnVlIHsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVK
U1IgeyBKU1JJbmZvOjpqc1JlZ1QzMiB9OworfQorCituYW1lc3BhY2UgVGhyb3cgeworICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25UaHJvdyk7CisKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCkgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhyb3duVmFsdWVK
U1IgeyBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAxPigpIH07CisgICAgY29u
c3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86Om5vbkFyZ0dQUjAgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh0aHJvd25WYWx1ZUpTUiwgYnl0ZWNvZGVPZmZz
ZXRHUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgc3RhdGljX2Fz
c2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUiksICJSZXF1aXJl
ZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworfQorCituYW1lc3BhY2UgUmVzb2x2ZVNj
b3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSIHsgR1BSSW5mbzo6cmVnVDIg
fTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQUiwgc2NvcGVHUFIsIGJ5dGVj
b2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworfQorCitu
YW1lc3BhY2UgR2V0RnJvbVNjb3BlIHsKKyAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BS
IHsgR1BSSW5mbzo6cmVnVDQgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjb3BlR1BSIHsgR1BS
SW5mbzo6cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChtZXRhZGF0YUdQ
Uiwgc2NvcGVHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENU
SSB0aHVuayIpOworfQorCituYW1lc3BhY2UgUHV0VG9TY29wZSB7CisgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMiB9OworfQorCitu
YW1lc3BhY2UgR2V0QnlJZCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFu
ZCBTbG93IHBhdGhzCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUklu
Zm86OnJldHVyblZhbHVlSlNSIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVn
aXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyAg
ICAgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAg
ICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdUNiwgR1BSSW5mbzo6cmVnVDcgfTsK
KyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2JiZXJKU1IpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIp
OworICAgIH0KKworICAgIC8vIFNsb3cgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFj
ZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQ
UkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAo
YmFzZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJS
ZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChu
b092ZXJsYXAoYmFzZUpTUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlH
UFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gc2xvdyBvcGVyYXRpb24iKTsKKyAgICB9Cit9CisK
K25hbWVzcGFjZSBHZXRCeUlkV2l0aFRoaXMgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJv
dGggRmFzdCBhbmQgU2xvdyBwYXRocworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRK
U1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJ
bmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0aGlzSlNSIHsgSlNS
SW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIHRoaXNKU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSKSwgIlJlcXVpcmVk
IGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMK
KyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9
OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHBy
b3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNz
ZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1Yklu
Zm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOwor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCB0aGlzSlNSLCBnbG9iYWxP
YmplY3RHUFIsIHN0dWJJbmZvR1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0
byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEdldEJ5VmFsIHsKKyAg
ICAvLyBSZWdpc3RlcnMgdXNlZCBvbiBib3RoIEZhc3QgYW5kIFNsb3cgcGF0aHMKKyAgICBjb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
eyBHUFJJbmZvOjpyZWdUMSB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4
cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEpTUkluZm86OmpzUmVnVDEwIH07CisgICAgY29uc3Rl
eHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRp
ZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQ
YXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAg
ICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAg
ICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworI2Vu
ZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNS
LCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAg
fQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQ
YXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZv
OjpyZWdUNCB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsg
R1BSSW5mbzo6cmVnVDQgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBwcm9maWxlR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyNlbGlmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpy
ZWdUNiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpy
ZWdUNyB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1Is
IHByb3BlcnR5SlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIp
LCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJ
bmZvR1BSLCBwcm9maWxlR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9u
Iik7CisgICAgfQorfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKK25hbWVzcGFjZSBFbnVtZXJhdG9y
R2V0QnlWYWwgeworICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQ
UkluZm86OnJlZ1QwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUpTUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAvLyBXZSByZWx5IG9uIHRo
aXMgd2hlbiBsaW5raW5nIGEgQ29kZUJsb2NrIGFuZCBpbml0aWFsaXppbmcgcmVnaXN0ZXJzIGZv
ciBhIEdldEJ5VmFsIFN0dWJJbmZvLgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBHZXRC
eVZhbDo6YmFzZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRCeVZh
bDo6cHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSID09IEdldEJ5VmFs
OjpyZXN1bHRKU1IpOworICAgIHN0YXRpY19hc3NlcnQoc3R1YkluZm9HUFIgPT0gR2V0QnlWYWw6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUik7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoMSB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHNjcmF0Y2gzIHsgR1BSSW5mbzo6cmVnVDUgfTsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgUHV0
QnlJZCB7CisgICAgLy8gUmVnaXN0ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhz
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7
IEdQUkluZm86OnJlZ1QwIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
R1BSSW5mbzo6cmVnVDEgfTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgY29uc3RleHBy
IEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBKU1JJbmZvOjpqc1JlZ1QxMCB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEpTUkluZm86OmpzUmVnVDMyIH07CisjZW5kaWYKKwor
ICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVycworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJH
UFIgeyBHUFJJbmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAg
IGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDJHUFIgeyBiYXNlSlNSLnRhZ0dQUigpIH07IC8vIFJl
dXNpbmcgcmVnVDEgZm9yIGJldHRlciBjb2RlIHNpemUgb24gQVJNX1RIVU1CMgorI2VuZGlmCisg
ICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHZhbHVlSlNSLCBzdHViSW5m
b0dQUiwgc2NyYXRjaEdQUiksICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IucGF5bG9hZEdQUigpLCB2YWx1ZUpTUiwgc3R1Yklu
Zm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsK
KyAgICB9CisKKyAgICAvLyBTbG93IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2Ug
U2xvd1BhdGggeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBieXRlY29kZU9mZnNldEdQUiB7IEdQUkluZm86OnJlZ1QyIH07CisgICAgICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMyB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSIHsg
R1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0
KG5vT3ZlcmxhcChiYXNlSlNSLCB2YWx1ZUpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0dWJJbmZv
R1BSLCBwcm9wZXJ0eUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBDVEkgdGh1bmsiKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgdmFsdWVKU1IsIGdsb2JhbE9i
amVjdEdQUiwgc3R1YkluZm9HUFIsIHByb3BlcnR5R1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRv
IHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1lc3BhY2UgUHV0QnlWYWwgeworICAg
IC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQgU2xvdyBwYXRocworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpy
ZWdUMCB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86
OnJlZ1QxIH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdU
MyB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
YmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9OworICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdU
MiB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2
LCBHUFJJbmZvOjpyZWdUNyB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiB7IEdQ
UkluZm86OnJlZ1Q1IH07CisjZW5kaWYKKworICAgIC8vIEZhc3QgcGF0aCBvbmx5IHJlZ2lzdGVy
cworICAgIG5hbWVzcGFjZSBGYXN0UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1
YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3Zl
cmxhcChiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZv
R1BSKSwgIlJlcXVpcmVkIGZvciBEYXRhSUMiKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGgg
b25seSByZWdpc3RlcnMKKyAgICBuYW1lc3BhY2UgU2xvd1BhdGggeworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUNQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCisgICAgICAgICAg
ICAgICAgLy8gV2UgYXJlIGEgYml0IHNob3J0IG9uIHJlZ2lzdGVycyBvbiBBUk1fVEhVTUIyLCBi
dXQgd2UgY2FuIGp1c3QgYWJvdXQgZ2V0IGF3YXkgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c2NyYXRjaFJlZ2lzdGVyKCkKKyNlbHNlIC8vIE90aGVyIEpT
VkFMVUUzMl82NAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q4CisjZW5kaWYKKyAgICAg
ICAgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiB7IGdsb2Jh
bE9iamVjdEdQUiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BS
SW5mbzo6cmVnVDQgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
cHJvcGVydHlKU1IsIHZhbHVlSlNSLCBwcm9maWxlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1
YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIGNhbGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0
YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCB2YWx1ZUpTUiwgcHJv
ZmlsZUdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiksICJSZXF1aXJlZCBmb3IgY2Fs
bCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKworbmFtZXNwYWNlIEluQnlJZCB7Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHZXRCeUlkOjpiYXNlSlNSIH07Cisg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVl
SlNSIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5SWQ6OkZhc3RQ
YXRoOjpzdHViSW5mb0dQUiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdl
dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSIH07Cit9CisKK25hbWVzcGFjZSBJbkJ5VmFsIHsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFs
dWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBi
YXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OworICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQ
UiB7IEdQUkluZm86OnJlZ1QzIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
IH07CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVn
VDMsIEdQUkluZm86OnJlZ1QyIH07CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7
IEdQUkluZm86OnJlZ1Q3IH07CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BS
SW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQoYmFzZUpTUiA9PSBHZXRC
eVZhbDo6YmFzZUpTUik7CisgICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUpTUiA9PSBHZXRCeVZh
bDo6cHJvcGVydHlKU1IpOworfQorCituYW1lc3BhY2UgRGVsQnlJZCB7CisgICAgLy8gUmVnaXN0
ZXJzIHVzZWQgb24gYm90aCBGYXN0IGFuZCBTbG93IHBhdGhzCisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Cisj
ZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNS
IHsgSlNSSW5mbzo6anNSZWdUMzIgfTsKKyNlbmRpZgorCisgICAgLy8gRmFzdCBwYXRoIG9ubHkg
cmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIEZhc3RQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEpT
VmFsdWVSZWdzIHJlc3VsdEpTUiB7IEpTUkluZm86OnJldHVyblZhbHVlSlNSIH07CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUklu
Zm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUklu
Zm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyNlbmRpZgorICAgICAgICBz
dGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiks
ICJSZXF1aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkg
cmVnaXN0ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgeyBHUFJJbmZvOjpyZWdUMCB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiB7IEdQUklu
Zm86OnJlZ1QzIH07CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgeyBHUFJJ
bmZvOjpyZWdUNCB9OworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07CisgICAgICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgeyBHUFJJbmZvOjpyZWdUNiB9OworICAgICAgICBjb25zdGV4
cHIgR1BSUmVnIGVjbWFNb2RlR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAg
ICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBieXRlY29kZU9mZnNldEdQUiwgc3R1
YkluZm9HUFIsIHByb3BlcnR5R1BSLCBlY21hTW9kZUdQUiksICJSZXF1aXJlZCBmb3IgY2FsbCB0
byBDVEkgdGh1bmsiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKSwg
IlJlcXVpcmVkIGZvciBjYWxsIHRvIHNsb3cgb3BlcmF0aW9uIik7CisgICAgfQorfQorCituYW1l
c3BhY2UgRGVsQnlWYWwgeworICAgIC8vIFJlZ2lzdGVycyB1c2VkIG9uIGJvdGggRmFzdCBhbmQg
U2xvdyBwYXRocworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMSB9OworICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBw
cm9wZXJ0eUpTUiB7IEdQUkluZm86OnJlZ1QwIH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6anNSZWdUMzIgfTsK
KyAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBKU1JJbmZvOjpqc1JlZ1Qx
MCB9OworI2VuZGlmCisKKyAgICAvLyBGYXN0IHBhdGggb25seSByZWdpc3RlcnMKKyAgICBuYW1l
c3BhY2UgRmFzdFBhdGggeworICAgICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKKyAgICAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKKyNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIg
eyBHUFJJbmZvOjpyZWdUNiB9OworI2VuZGlmCisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVy
bGFwKGJhc2VKU1IsIHByb3BlcnR5SlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiksICJSZXF1
aXJlZCBmb3IgRGF0YUlDIik7CisgICAgfQorCisgICAgLy8gU2xvdyBwYXRoIG9ubHkgcmVnaXN0
ZXJzCisgICAgbmFtZXNwYWNlIFNsb3dQYXRoIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Cisg
ICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdU
MiB9OworICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVn
VDMgfTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJl
Z1Q0IH07CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1Q0IH07CisgICAgICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgeyBHUFJJbmZvOjpyZWdUNCB9OworICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKKyAgICAgICAgY29u
c3RleHByIEdQUlJlZyBlY21hTW9kZUdQUiB7IEdQUkluZm86OnJlZ1Q3IH07CisjZW5kaWYKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYmFzZUpTUiwgcHJvcGVydHlKU1IsIGJ5dGVj
b2RlT2Zmc2V0R1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGVHUFIpLCAiUmVxdWlyZWQgZm9yIGNh
bGwgdG8gQ1RJIHRodW5rIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGJhc2VK
U1IsIHByb3BlcnR5SlNSLCBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZUdQ
UiksICJSZXF1aXJlZCBmb3IgY2FsbCB0byBzbG93IG9wZXJhdGlvbiIpOworICAgIH0KK30KKwor
bmFtZXNwYWNlIFByaXZhdGVCcmFuZCB7CisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VK
U1IgeyBHZXRCeVZhbDo6YmFzZUpTUiB9OyAvLyBSZXF1aXJlZCBieSBzaGFyZWQgc2xvdyBwYXRo
IHRodW5rCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR2V0QnlWYWw6OnBy
b3BlcnR5SlNSIH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKworICAg
IG5hbWVzcGFjZSBGYXN0UGF0aCB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QyIH07CisjZWxpZiBVU0UoSlNW
QUxVRTMyXzY0KQorICAgICAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKKyNlbmRpZgorICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChiYXNl
SlNSLCBicmFuZEpTUiwgc3R1YkluZm9HUFIpLCAiUmVxdWlyZWQgZm9yIERhdGFJQyIpOworICAg
IH0KKworICAgIG5hbWVzcGFjZSBTbG93UGF0aCB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgeyBHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BS
IH07IC8vIFJlcXVpcmVkIGJ5IHNoYXJlZCBzbG93IHBhdGggdGh1bmsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFIg
fTsgLy8gUmVxdWlyZWQgYnkgc2hhcmVkIHNsb3cgcGF0aCB0aHVuaworICAgICAgICBzdGF0aWNf
YXNzZXJ0KG5vT3ZlcmxhcChiYXNlSlNSLCBicmFuZEpTUiwgYnl0ZWNvZGVPZmZzZXRHUFIsIHN0
dWJJbmZvR1BSKSwgIlJlcXVpcmVkIGZvciBjYWxsIHRvIENUSSB0aHVuayIpOworICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgQmFzZWxpbmVKSVRSZWdpc3RlcnMKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCmluZGV4IDA0ZThhZmRlNDFjMjY4YWQ5Y2YyZWIxYzVkM2NmMDQwOTgy
ODkzNWUuLjk1MWY3Mjc3YzY5NzdkYTFjYTJmZjgyZTUzMjMzOTQ1M2UwODVmYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk0LDYgKzk1LDQ0IEBAIHZvaWQgQ0NhbGxIZWxwZXJz
OjplbWl0SklUQ29kZU92ZXIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTSW50ZXJuYWxQdHJUYWc+
IHdoZXJlCiAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgZGVzY3JpcHRp
b24pOwogfQogCitzdGF0aWNfYXNzZXJ0KCEoKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
ICsgMiAqIHNpemVvZihDUFVSZWdpc3RlcikpICUgMTYpLCAiU3RhY2sgbXVzdCBiZSBhbGlnbmVk
IGFmdGVyIENUSSB0aHVuayBlbnRyeSIpOworCit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRo
dW5rUHJvbG9ndWUoYm9vbCByZXR1cm5BZGRyZXNzQWxyZWFkeVRhZ2dlZCkKK3sKKyAgICAvLyBT
dGFzaCBmcmFtZSBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcworICAgIGlmICghcmV0dXJuQWRk
cmVzc0FscmVhZHlUYWdnZWQpCisgICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKKyNpZiBDUFUo
WDg2XzY0KQorICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplYnApOyAvLyByZXR1cm4gYWRkcmVzcyBw
dXNoZWQgYnkgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24KKyNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFS
TV9USFVNQjIpCisgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rl
cik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rlciwg
cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyNlbHNlCisjICAgZXJyb3IgIk5vdCBpbXBsZW1lbnRl
ZCBvbiBwbGF0Zm9ybSIKKyNlbmRpZgorICAgIC8vIE1ha2UgZW5vdWdoIHNwYWNlIG9uIHRoZSBz
dGFjayB0byBwYXNzIGFyZ3VtZW50cyBpbiBhIGNhbGwKKyAgICBpZiBjb25zdGV4cHIgKG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQorICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworfQor
Cit2b2lkIENDYWxsSGVscGVyczo6ZW1pdENUSVRodW5rRXBpbG9ndWUoKQoreworICAgIC8vIFJl
c2V0IHN0YWNrCisgICAgaWYgY29uc3RleHByIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBSZXN0b3JlIGZyYW1lIHBvaW50
ZXIgYW5kIHJldHVybiBhZGRyZXNzCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBwb3AoWDg2UmVnaXN0
ZXJzOjplYnApOyAvLyBSZXR1cm4gYWRkcmVzcyBsZWZ0IG9uIHN0YWNrCisjZWxpZiBDUFUoQVJN
NjQpIHx8IENQVShBUk1fVEhVTUIyKQorICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBwb3BQYWlyKGZyYW1lUG9pbnRl
clJlZ2lzdGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworI2Vsc2UKKyMgICBlcnJvciAiTm90
IGltcGxlbWVudGVkIG9uIHBsYXRmb3JtIgorI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCmluZGV4IGFmYzVkY2M4OTllNzU2MzM5YTgxMTYzNGUyM2MyMTdiZGExY2NmNjQu
LjY4N2VmZGIwMGVhYzdkMTg1OWU2OTcxNTM5ZGYwYWE1ZWQzOThhNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtODUzLDE0NSArODUzLDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgZW1pdEpJVENvZGVPdmVyKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0ludGVybmFsUHRyVGFnPiB3aGVyZSwgU2NvcGVkTGFtYmRhPHZvaWQoQ0NhbGxIZWxwZXJz
Jik+LCBjb25zdCBjaGFyKik7CiAKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051
bSksIHNpemVfdD4gc2l6ZU9mQXJnKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplb2YodHlw
ZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlw
ZTxBcmdOdW0+KTsKLSAgICB9Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0g
QXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEFyZ3MuLi4gcmVzdCkKLSAgICB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpIDw9
IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0gICAgICAg
IGlmIGNvbnN0ZXhwciAoIUluZGV4KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsg
Zmlyc3QgfTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oZmlyc3Qp
OyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICByZXR1
cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4ocmVzdC4uLik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0g
QXJnTnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJlZyBzZWNvbmQsIEdQUlJlZyB0aGlyZCwgQXJn
cy4uLiByZXN0KQotICAgIHsKLSAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50
QXJnID0gc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOwotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRv
IGhhbmRsZSBsYXJnZSBhcmd1bWVudHMiKTsKLSAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgp
IHsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7Ci0g
ICAgICAgICAgICAgICAgLy8gRml0cyBpbiBzaW5nbGUgR1BSCi0gICAgICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKHNlY29uZCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIK
LSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0odGhpcmQpOyAvLyBPdGhlcndpc2Ugd2Fybmlu
ZyBkdWUgdG8gY29uc3RleHByCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShmaXJzdCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0ID09IEdQUklu
Zm86OmFyZ3VtZW50R1BSMSAmJiBzZWNvbmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIHRo
aXJkID09IEdQUkluZm86OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgICAgIC8vIFdpZGUg
YXJndW1lbnQgcGFzc2VkIGluIEdQUnMgbmVlZHMgdG8gc3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVy
IG51bWJlciwgc28gc2tpcCBhcmd1bWVudEdQUjEKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZVJlZ3MgeyB0aGlyZCwgc2Vjb25kIH07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIEZpcnN0IGlzIGVpdGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFy
Z3VtZW50IHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVy
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9Owot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgY29uc3RleHBy
KHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIC8vIEZpdHMgaW4gc2lu
Z2xlIEdQUgotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lz
ZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1cm4gcGlja0pT
UjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oc2Vjb25kLCB0aGlyZCwgcmVzdC4u
Lik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZpcnN0ID09IEdQUkluZm86OmFyZ3VtZW50R1BS
MSAmJiBzZWNvbmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIyICYmIHRoaXJkID09IEdQUkluZm86
OmFyZ3VtZW50R1BSMykgewotICAgICAgICAgICAgICAgIC8vIFdpZGUgYXJndW1lbnQgcGFzc2Vk
IGluIEdQUnMgbmVlZHMgdG8gc3RhcnQgd2l0aCBldmVuIHJlZ2lzdGVyIG51bWJlciwgc28gc2tp
cCBhcmd1bWVudEdQUjEsIGJ1dCByZXVzZSBpdCBsYXRlcgotICAgICAgICAgICAgICAgIHJldHVy
biBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihmaXJzdCwgcmVzdC4u
Lik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlzIGVp
dGhlciBhbiBldmVuIHJlZ2lzdGVyLCBvciB0aGlzIGFyZ3VtZW50IHdpbGwgYmUgcHVzaGVkIHRv
IHRoZSBzdGFjaywgc28gaXQgZG9lcyBub3QgbWF0dGVyCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+KHRoaXJkLCByZXN0Li4u
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBBcmdOdW0sIHVuc2lnbmVkIEluZGV4ID0gQXJn
TnVtLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cGlja0pTUihHUFJSZWcgZmlyc3QsIEdQUlJlZyBzZWNvbmQpCi0gICAgewotICAgICAgICBjb25z
dGV4cHIgc2l6ZV90IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwg
QXJnTnVtIC0gSW5kZXg+KCk7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFy
ZyA8PSA4LCAiRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOwotICAg
ICAgICAvLyBCYXNlIGNhc2UsICdmaXJzdCcgYW5kICdzZWNvbmQnIGFyZSBuZXZlciBhcmd1bWVu
dCByZWdpc3Rlciwgb3Igd2lsbCBiZSBwdXNoZWQgb24gdGhlIHN0YWNrIGFueXdheQotICAgICAg
ICBpZiBjb25zdGV4cHIgKCFJbmRleCkgewotICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXpl
T2ZDdXJyZW50QXJnIDw9IDQpIHsKLSAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25k
KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgotICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzIHsgc2Vjb25kLCBmaXJzdCB9
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgY29uc3RleHByKHNpemVPZkN1cnJl
bnRBcmcgPD0gNCkgewotICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7IC8vIE90
aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKLSAgICAgICAgICAgICAgICByZXR1cm4g
cGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4oc2Vjb25kKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
X1dJVEhfTUVTU0FHRSgiT3V0IG9mIHJlZ2lzdGVycyIpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5z
aWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCkKLSAgICB7Ci0gICAgICAgIGNv
bnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxPcGVyYXRpb25UeXBl
LCBBcmdOdW0gLSBJbmRleD4oKTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZDdXJyZW50
QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJndW1lbnRzIik7Ci0g
ICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBpcyBuZXZlciBhbiBhcmd1bWVudCByZWdpc3Rl
ciwgb3Igd2lsbCBiZSBwdXNoZWQgb24gdGhlIHN0YWNrIGFueXdheQotICAgICAgICBpZiBjb25z
dGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoZmlyc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRF9XSVRIX01FU1NBR0UoIk91dCBvZiByZWdpc3RlcnMiKTsK
LSAgICB9Ci0jZW5kaWYKLQotcHVibGljOgotICAgIC8vIFNlZSBwcmVmZXJyZWRBcmd1bWVudEdQ
UiBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbi4gVGhpcyB2ZXJzaW9uIHJldHVybnMg
YSBKU1ZhbHVlUmVncwotICAgIC8vIGluc3RlYWQgb2YgYSBHUFIsIHdoaWNoIG9uIEpTVkFMVUU2
NCBhcmUgZXF1aXZhbGVudCwgYnV0IG9uIEpTVkFMVUUzMl82NCBhIEpTVmFsdWVSZWdzIGlzCi0g
ICAgLy8gcmVxdWlyZWQgdG8gaG9sZCBhIDY0LWJpdCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50LCBz
byB1c2UgdGhpcyBpbiBwYXJ0aWN1bGFyIHdoZW4gcGFzc2luZyBhCi0gICAgLy8gSlNWYWx1ZS9F
bmNvZGVkSlNWYWx1ZSBiZSBjb21wYXRpYmxlIHdpdGggYm90aCBKU1ZBTFVFNjQgYW4gSlNWQUxV
RTMyXzY0IHBsYXRmb3JtcywgYW5kIHVzZQotICAgIC8vIHByZWZlcnJlZEFyZ3VtZW50R1BSIHdo
ZW4gcGFzc2luZyBob3N0IHBvaW50ZXJzLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJs
ZV9pZl90PChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBK
U1ZhbHVlUmVncz4KLSAgICBwcmVmZXJyZWRBcmd1bWVudEpTUigpCi0gICAgewotI2lmIFVTRShK
U1ZBTFVFNjQpCi0jaWYgIU9TKFdJTkRPV1MpCi0gICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJh
dGlvblR5cGUsIEFyZ051bT4oCi0gICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAotICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQsIEdQUkluZm86OmFy
Z3VtZW50R1BSNSk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBl
LCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAgIEdQUkluZm86
OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6bm9uQXJnR1BSMCwgICBHUFJJbmZvOjpub25BcmdHUFIx
KTsKLSNlbmRpZgotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSNpZiBDUFUoQVJNX1RIVU1CMikK
LSAgICAgICAgLy8gVGhlIGxhc3QgcmVnaXN0ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBwdXNoZWQg
b250byB0aGUgc3RhY2sgZm9yIGNhbGxzLCBzbyB3ZSBjYW4gdXNlCi0gICAgICAgIC8vIHRoZSBs
aW5rIHJlZ2lzdGVyIGFzIGEgdGVtcG9yYXJ5LgotICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVy
YXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwKLSAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVnVDcsICAgICAgICBHUFJJbmZvOjpy
ZWdUNiwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCAgICAgICAgR1BSSW5mbzo6cmVnVDUs
ICAgICAgICBBUk1SZWdpc3RlcnM6OmxyKTsKLSNlbGlmIENQVShNSVBTKQotICAgICAgICByZXR1
cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KAotICAgICAgICAgICAgR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BS
MiwKLSAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6cmVnVDIsICAg
ICAgICBHUFJJbmZvOjpyZWdUMywKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LCAgICAgICAg
R1BSSW5mbzo6cmVnVDUsICAgICAgICBHUFJJbmZvOjpyZWdUNik7Ci0jZW5kaWYKLSNlbmRpZgot
ICAgIH0KLQotICAgIC8vIENvbXB1dGVzIChzdGF0aWNhbGx5LCBhdCBjb21waWxhdGlvbiB0aW1l
KSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIgYW4gYXJndW1lbnQgc2hvdWxkIGJlCi0gICAg
Ly8gbG9hZGVkIGludG8gZm9yIGEgZnVuY3Rpb24gY2FsbC4gVGhpcyB5aWVsZHMgdGhlIEFCSSBz
cGVjaWZpYyBhcmd1bWVudCByZWdpc3RlcnMgZm9yIHRoZQotICAgIC8vIGluaXRpYWwgYXJndW1l
bnRzIGFzIGFwcHJvcHJpYXRlLCB0aGVuIHN1aXRhYmxlIHRlbXBvcmFyeSByZWdpc3RlcnMgZm9y
IHRoZSByZW1haW5pbmcKLSAgICAvLyBhcmd1bWVudHMuIFRoZSBpZGVhIGlzIHRoYXQgJ3NldHVw
QXJndW1lbnRzJyB3aWxsIGhhdmUgdG8gZG8gdGhlIG1pbmltYWwgYW1vdW50IG9mIHdvcmsgd2hl
bgotICAgIC8vIHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB0byBob2xkIHRoZSBhcmd1bWVudHMsIHNv
IGlmIHlvdSBhcmUgbG9hZGluZyBtb3N0IGFyZ3VtZW50cyBmcm9tIG1lbW9yeQotICAgIC8vIGFu
eXdheSwgdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHlpZWxkcyB0aGUgc21hbGxlc3QgY29kZSByZXF1
aXJlZCBmb3IgYSBjYWxsLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBBcmdOdW0+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmVuYWJsZV9pZl90PChG
dW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6YXJpdHkgPiBBcmdOdW0pLCBHUFJSZWc+Ci0g
ICAgcHJlZmVycmVkQXJndW1lbnRHUFIoKQotICAgIHsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVPZkFyZzxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCkg
PD0gNCwgIkFyZ3VtZW50IGRvZXMgbm90IGZpdCBpbiBHUFIiKTsKLSNlbmRpZgotICAgICAgICBy
ZXR1cm4gcHJlZmVycmVkQXJndW1lbnRKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpLnBheWxv
YWRHUFIoKTsKLSAgICB9CisgICAgdm9pZCBlbWl0Q1RJVGh1bmtQcm9sb2d1ZShib29sIHJldHVy
bkFkZHJlc3NBbHJlYWR5VGFnZ2VkID0gZmFsc2UpOworICAgIHZvaWQgZW1pdENUSVRodW5rRXBp
bG9ndWUoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVEYXRhLmNwcAppbmRleCA4MTgwZDZhYmE1NzQw
NDAxYTJmY2FiMmQ1YTFmZGQ1M2M5YTIwNmEzLi4xYzc0ZjFmOTgyZmM1MDk5NmQ4ZTFmZWRiMDFm
ZTNhYmJkN2FkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVEYXRhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkK
IAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVT
dHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9m
ZnNldExpc3QuaCIKQEAgLTk1LDkgKzk2LDkgQEAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgQ2FsbEZy
YW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxsKGNvbnMKICAg
ICAgICAgICAgICAgICBEYXRhRm9ybWF0SlMpOwogICAgIH0KICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIHNodWZmbGVEYXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluR1BSKEJhc2VsaW5lQ2Fs
bFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICBz
aHVmZmxlRGF0YS5jYWxsZWUgPSBWYWx1ZVJlY292ZXJ5OjppbkdQUihCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgRGF0YUZvcm1hdEpTKTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVy
eTo6aW5QYWlyKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNSLnRhZ0dQUigpLCBCYXNl
bGluZUNhbGxSZWdpc3RlcnM6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOworICAgIHNodWZmbGVE
YXRhLmNhbGxlZSA9IFZhbHVlUmVjb3Zlcnk6OmluUGFpcihCYXNlbGluZUpJVFJlZ2lzdGVyczo6
Q2FsbDo6Y2FsbGVlSlNSLnRhZ0dQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bGVlSlNSLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBzaHVmZmxlRGF0YS5zZXR1cENhbGxl
ZVNhdmVSZWdpc3RlcnMoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpKTsKICAgICBzaHVmZmxlRGF0YS5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA2MGE1YmVlMTViODIyMDc2NDY1MTIwZGY3NGU5
NDA4ZDc4YmM3Y2Q3Li4wMDIyYmQ5Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0NzgxZTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb25UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTk3Niw2ICs5NzgsMjEx
IEBAIGlubGluZSBOb1Jlc3VsdFRhZyBleHRyYWN0UmVzdWx0KE5vUmVzdWx0VGFnKSB7IHJldHVy
biBOb1Jlc3VsdDsgfQogLy8gV2UgdXNlIHRoaXMgaGFjayB0byBnZXQgdGhlIEdQUkluZm8gZnJv
bSB0aGUgR1BSUmVnIHR5cGUgaW4gdGVtcGxhdGVzIGJlY2F1c2Ugb3VyIGNvZGUgaXMgYmFkIGFu
ZCB3ZSBzaG91bGQgZmVlbCBiYWQuLgogY29uc3RleHByIEdQUkluZm8gdG9JbmZvRnJvbVJlZyhH
UFJSZWcpIHsgcmV0dXJuIEdQUkluZm8oKTsgfQogCitjbGFzcyBOb092ZXJsYXBJbXBsIHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vT3ZlcmxhcEltcGxSZWdNYXNrKEdQUlJlZyBn
cHIpCisgICAgeworICAgICAgICBpZiAoZ3ByID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAg
ICByZXR1cm4gMFVMTDsKKyAgICAgICAgdW5zaWduZWQgYml0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGdwcik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdCA8IGNvdW50T2ZCaXRzPHVpbnQ2
NF90Pik7CisgICAgICAgIHJldHVybiAxVUxMIDw8IGJpdDsKKyAgICB9CisKKyAgICAvLyBCYXNl
IGNhc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBub092ZXJsYXBJbXBsKHVpbnQ2NF90KSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAv
LyBHUFJSZWcgY2FzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5vT3ZlcmxhcEltcGwodWludDY0X3QgdXNlZCwgR1BSUmVnIGdwciwg
QXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcElt
cGxSZWdNYXNrKGdwcik7CisgICAgICAgIGlmICh1c2VkICYgbWFzaykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG5vT3ZlcmxhcEltcGwodXNlZCB8IG1hc2ssIGFy
Z3MuLi4pOworICAgIH0KKworICAgIC8vIEpTVmFsdWVSZWdzIGNhc2UKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBub092ZXJsYXBJbXBs
KHVpbnQ2NF90IHVzZWQsIEpTVmFsdWVSZWdzIGpzciwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgbWFzayA9IG5vT3ZlcmxhcEltcGxSZWdNYXNrKGpzci5wYXlsb2FkR1BS
KCkpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIG1hc2sgfD0gbm9PdmVybGFwSW1w
bFJlZ01hc2soanNyLnRhZ0dQUigpKTsKKyNlbmRpZgorICAgICAgICBpZiAodXNlZCAmIG1hc2sp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBub092ZXJsYXBJbXBs
KHVzZWQgfCBtYXNrLCBhcmdzLi4uKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICAvLyBFbnRyeSBw
b2ludAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBlbnRyeShBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIG5vT3ZlcmxhcEltcGwoMCwgYXJn
cy4uLik7IH0KK307CisKKy8vIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIEdQUlJlZ3Mg
YW5kIEpTVmFsdWVSZWdzIGRvIG5vdCBvdmVybGFwLiBVc2UgdGhpcyBpbiBzdGF0aWMKKy8vIGFz
c2VydGlvbnMgdG8gZW5zdXJlIHRoYXQgcmVnaXN0ZXIgYWxpYXNlcyBsaXZlIGF0IHRoZSBzYW1l
IHBvaW50IGRvIG5vdCBtYXAgdG8gdGhlIHNhbWUKKy8vIGFyY2hpdGVjdHVyYWwgcmVnaXN0ZXIu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KK2NvbnN0ZXhwciBib29sIG5vT3ZlcmxhcChB
cmdzLi4uIGFyZ3MpIHsgcmV0dXJuIE5vT3ZlcmxhcEltcGw6OmVudHJ5KGFyZ3MuLi4pOyB9CisK
K2NsYXNzIFByZWZlcnJlZEFyZ3VtZW50SW1wbCB7CisgICAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgQXJnTnVtPgorICAgIHN0YXRpYyBj
b25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OmFyaXR5ID4gQXJnTnVtKSwgc2l6ZV90PiBzaXplT2ZBcmcoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVtcGxh
dGUgQXJndW1lbnRUeXBlPEFyZ051bT4pOworICAgIH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5z
aWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgQXJncy4uLiByZXN0KQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVt
IC0gSW5kZXg+KCkgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBhcmd1bWVu
dHMiKTsKKyAgICAgICAgaWYgY29uc3RleHByICghSW5kZXgpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZVJlZ3MgeyBmaXJzdCB9OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShmaXJzdCk7IC8vIE90aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAg
ICAgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAx
PihyZXN0Li4uKTsKKyAgICAgICAgfQorICAgIH0KKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5z
aWduZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0
ZXhwciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCwgR1BS
UmVnIHRoaXJkLCBBcmdzLi4uIHJlc3QpCisgICAgeworICAgICAgICBjb25zdGV4cHIgc2l6ZV90
IHNpemVPZkN1cnJlbnRBcmcgPSBzaXplT2ZBcmc8T3BlcmF0aW9uVHlwZSwgQXJnTnVtIC0gSW5k
ZXg+KCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQ3VycmVudEFyZyA8PSA4LCAiRG9u
J3Qga25vdyBob3cgdG8gaGFuZGxlIGxhcmdlIGFyZ3VtZW50cyIpOworICAgICAgICBpZiBjb25z
dGV4cHIgKCFJbmRleCkgeworICAgICAgICAgICAgaWYgY29uc3RleHByIChzaXplT2ZDdXJyZW50
QXJnIDw9IDQpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXRzIGluIHNpbmdsZSBHUFIKKyAgICAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vjb25kKTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVl
IHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlyZCk7IC8vIE90
aGVyd2lzZSB3YXJuaW5nIGR1ZSB0byBjb25zdGV4cHIKKyAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGZpcnN0KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
Zmlyc3QgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1
bWVudEdQUjIgJiYgdGhpcmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2lkZSBhcmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRo
IGV2ZW4gcmVnaXN0ZXIgbnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMQorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlUmVncyB7IHRoaXJkLCBzZWNvbmQgfTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0
ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2lsbCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBk
b2VzIG5vdCBtYXR0ZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBzZWNv
bmQsIGZpcnN0IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiBjb25zdGV4cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAg
Ly8gRml0cyBpbiBzaW5nbGUgR1BSCisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGZpcnN0
KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAgICAgICAg
IHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihzZWNvbmQs
IHRoaXJkLCByZXN0Li4uKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlyc3QgPT0gR1BSSW5m
bzo6YXJndW1lbnRHUFIxICYmIHNlY29uZCA9PSBHUFJJbmZvOjphcmd1bWVudEdQUjIgJiYgdGhp
cmQgPT0gR1BSSW5mbzo6YXJndW1lbnRHUFIzKSB7CisgICAgICAgICAgICAgICAgLy8gV2lkZSBh
cmd1bWVudCBwYXNzZWQgaW4gR1BScyBuZWVkcyB0byBzdGFydCB3aXRoIGV2ZW4gcmVnaXN0ZXIg
bnVtYmVyLCBzbyBza2lwIGFyZ3VtZW50R1BSMSwgYnV0IHJldXNlIGl0IGxhdGVyCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtLCBJbmRleCAtIDE+
KGZpcnN0LCByZXN0Li4uKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gRmlyc3QgaXMgZWl0aGVyIGFuIGV2ZW4gcmVnaXN0ZXIsIG9yIHRoaXMgYXJndW1lbnQgd2ls
bCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGlja0pTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0sIEluZGV4IC0gMT4o
dGhpcmQsIHJlc3QuLi4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bSwgdW5zaWdu
ZWQgSW5kZXggPSBBcmdOdW0sIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBwaWNrSlNSKEdQUlJlZyBmaXJzdCwgR1BSUmVnIHNlY29uZCkKKyAgICB7
CisgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mQ3VycmVudEFyZyA9IHNpemVPZkFyZzxP
cGVyYXRpb25UeXBlLCBBcmdOdW0gLSBJbmRleD4oKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplT2ZDdXJyZW50QXJnIDw9IDgsICJEb24ndCBrbm93IGhvdyB0byBoYW5kbGUgbGFyZ2UgYXJn
dW1lbnRzIik7CisgICAgICAgIC8vIEJhc2UgY2FzZSwgJ2ZpcnN0JyBhbmQgJ3NlY29uZCcgYXJl
IG5ldmVyIGFyZ3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sg
YW55d2F5CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIUluZGV4KSB7CisgICAgICAgICAgICBpZiBj
b25zdGV4cHIgKHNpemVPZkN1cnJlbnRBcmcgPD0gNCkgeworICAgICAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShzZWNvbmQpOyAvLyBPdGhlcndpc2Ugd2FybmluZyBkdWUgdG8gY29uc3RleHByCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MgeyBz
ZWNvbmQsIGZpcnN0IH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiBjb25zdGV4
cHIoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KSB7CisgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFN
KGZpcnN0KTsgLy8gT3RoZXJ3aXNlIHdhcm5pbmcgZHVlIHRvIGNvbnN0ZXhwcgorICAgICAgICAg
ICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bSwgSW5kZXggLSAxPihz
ZWNvbmQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKCJPdXQgb2YgcmVnaXN0ZXJzIik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgQXJnTnVtLCB1bnNpZ25lZCBJbmRleCA9IEFyZ051bSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBzdGF0aWMgY29uc3RleHByIEpTVmFsdWVSZWdzIHBpY2tKU1IoR1BSUmVnIGZpcnN0KQorICAg
IHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplT2ZDdXJyZW50QXJnID0gc2l6ZU9mQXJn
PE9wZXJhdGlvblR5cGUsIEFyZ051bSAtIEluZGV4PigpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVPZkN1cnJlbnRBcmcgPD0gOCwgIkRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBsYXJnZSBh
cmd1bWVudHMiKTsKKyAgICAgICAgLy8gQmFzZSBjYXNlLCAnZmlyc3QnIGlzIG5ldmVyIGFuIGFy
Z3VtZW50IHJlZ2lzdGVyLCBvciB3aWxsIGJlIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW55d2F5Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZU9mQ3VycmVudEFyZyA8PSA0KQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShmaXJzdCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgiT3V0IG9m
IHJlZ2lzdGVycyIpOworICAgIH0KKyNlbmRpZgorCitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIEFyZ051bT4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6ZW5hYmxlX2lmX3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0
eSA+IEFyZ051bSksIEpTVmFsdWVSZWdzPgorICAgIHByZWZlcnJlZEFyZ3VtZW50SlNSKCkKKyAg
ICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiAhT1MoV0lORE9XUykKKyAgICAgICAgcmV0dXJu
IHBpY2tKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigKKyAgICAgICAgICAgIEdQUkluZm86OmFy
Z3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIs
CisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BS
NCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBwaWNrSlNS
PE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLAorICAgICAg
ICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpub25BcmdHUFIwLCAgIEdQUklu
Zm86Om5vbkFyZ0dQUjEpOworI2VuZGlmCisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorI2lmIENQ
VShBUk1fVEhVTUIyKQorICAgICAgICAvLyBUaGUgbGFzdCByZWdpc3RlciBpcyBndWFyYW50ZWVk
IHRvIGJlIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBmb3IgY2FsbHMsIHNvIHdlIGNhbiB1c2UKKyAg
ICAgICAgLy8gdGhlIGxpbmsgcmVnaXN0ZXIgYXMgYSB0ZW1wb3JhcnkuCisgICAgICAgIHJldHVy
biBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAgICAgICBHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
LAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZWdUNywgICAg
ICAgIEdQUkluZm86OnJlZ1Q2LAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDQsICAgICAgICBH
UFJJbmZvOjpyZWdUNSwgICAgICAgIEFSTVJlZ2lzdGVyczo6bHIpOworI2VsaWYgQ1BVKE1JUFMp
CisgICAgICAgIHJldHVybiBwaWNrSlNSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oCisgICAgICAg
ICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyLAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJ
bmZvOjpyZWdUMiwgICAgICAgIEdQUkluZm86OnJlZ1QzLAorICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDQsICAgICAgICBHUFJJbmZvOjpyZWdUNSwgICAgICAgIEdQUkluZm86OnJlZ1Q2KTsKKyNl
bmRpZgorI2VuZGlmCisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIEFyZ051bT4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6ZW5hYmxlX2lm
X3Q8KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA+IEFyZ051bSksIEdQUlJl
Zz4KKyAgICBwcmVmZXJyZWRBcmd1bWVudEdQUigpCisgICAgeworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZU9mQXJnPE9wZXJhdGlvblR5cGUsIEFyZ051
bT4oKSA8PSA0LCAiQXJndW1lbnQgZG9lcyBub3QgZml0IGluIEdQUiIpOworI2VuZGlmCisgICAg
ICAgIHJldHVybiBwcmVmZXJyZWRBcmd1bWVudEpTUjxPcGVyYXRpb25UeXBlLCBBcmdOdW0+KCku
cGF5bG9hZEdQUigpOworICAgIH0KK307CisKKy8vIENvbXB1dGVzIChzdGF0aWNhbGx5LCBhdCBj
b21waWxhdGlvbiB0aW1lKSwgdGhlIGlkZWFsIG1hY2hpbmUgcmVnaXN0ZXIgYW4gYXJndW1lbnQg
c2hvdWxkIGJlCisvLyBsb2FkZWQgaW50byBmb3IgYSBmdW5jdGlvbiBjYWxsLiBUaGlzIHlpZWxk
cyB0aGUgQUJJIHNwZWNpZmljIGFyZ3VtZW50IHJlZ2lzdGVycyBmb3IgdGhlCisvLyBpbml0aWFs
IGFyZ3VtZW50cyBhcyBhcHByb3ByaWF0ZSwgdGhlbiBzdWl0YWJsZSB0ZW1wb3JhcnkgcmVnaXN0
ZXJzIGZvciB0aGUgcmVtYWluaW5nCisvLyBhcmd1bWVudHMuIFRoZSBpZGVhIGlzIHRoYXQgJ3Nl
dHVwQXJndW1lbnRzJyB3aWxsIGhhdmUgdG8gZG8gdGhlIG1pbmltYWwgYW1vdW50IG9mIHdvcmsg
d2hlbgorLy8gdXNpbmcgdGhlc2UgcmVnaXN0ZXJzIHRvIGhvbGQgdGhlIGFyZ3VtZW50cywgc28g
aWYgeW91IGFyZSBsb2FkaW5nIG1vc3QgYXJndW1lbnRzIGZyb20gbWVtb3J5CisvLyBhbnl3YXks
IHVzaW5nIHRoZXNlIHJlZ2lzdGVycyB5aWVsZHMgdGhlIHNtYWxsZXN0IGNvZGUgcmVxdWlyZWQg
Zm9yIGEgY2FsbC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBB
cmdOdW0+Citjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgR1BSUmVnPgorcHJlZmVycmVkQXJndW1lbnRHUFIo
KQoreworICAgIHJldHVybiBQcmVmZXJyZWRBcmd1bWVudEltcGw6OnByZWZlcnJlZEFyZ3VtZW50
R1BSPE9wZXJhdGlvblR5cGUsIEFyZ051bT4oKTsKK30KKworLy8gU2VlIHByZWZlcnJlZEFyZ3Vt
ZW50R1BSIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIHZlcnNpb24gcmV0
dXJucyBhIEpTVmFsdWVSZWdzCisvLyBpbnN0ZWFkIG9mIGEgR1BSLCB3aGljaCBvbiBKU1ZBTFVF
NjQgYXJlIGVxdWl2YWxlbnQsIGJ1dCBvbiBKU1ZBTFVFMzJfNjQgYSBKU1ZhbHVlUmVncyBpcwor
Ly8gcmVxdWlyZWQgdG8gaG9sZCBhIDY0LWJpdCB3aWRlIGZ1bmN0aW9uIGFyZ3VtZW50LCBzbyB1
c2UgdGhpcyBpbiBwYXJ0aWN1bGFyIHdoZW4gcGFzc2luZyBhCisvLyBKU1ZhbHVlL0VuY29kZWRK
U1ZhbHVlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBib3RoIEpTVkFMVUU2NCBhbiBKU1ZBTFVFMzJf
NjQgcGxhdGZvcm1zLCBhbmQgdXNlCisvLyBwcmVmZXJyZWRBcmd1bWVudEdQUiB3aGVuIHBhc3Np
bmcgaG9zdCBwb2ludGVycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBBcmdOdW0+Citjb25zdGV4cHIgc3RkOjplbmFibGVfaWZfdDwoRnVuY3Rpb25UcmFpdHM8
T3BlcmF0aW9uVHlwZT46OmFyaXR5ID4gQXJnTnVtKSwgSlNWYWx1ZVJlZ3M+CitwcmVmZXJyZWRB
cmd1bWVudEpTUigpCit7CisgICAgcmV0dXJuIFByZWZlcnJlZEFyZ3VtZW50SW1wbDo6cHJlZmVy
cmVkQXJndW1lbnRKU1I8T3BlcmF0aW9uVHlwZSwgQXJnTnVtPigpOworfQorCiAjZW5kaWYgLy8g
RU5BQkxFKEFTU0VNQkxFUikKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggYzY0ZGRlZjIzZDRiMmQ2MjRmYjczNDU5ZjA1NDdhZjU3ODg5NDY5Zi4u
NTE1Yjc5NmI4YWIzODk3ZmZhZDk4MjJiMDQyNWVlY2JiMDU0ZTA1NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSklUOjpyZXNldFNQKCkKICNk
ZWZpbmUgREVGSU5FX1NMT1dfT1AobmFtZSkgXAogICAgIGNhc2Ugb3BfIyNuYW1lOiB7IFwKICAg
ICAgICAgaWYgKG1fYnl0ZWNvZGVJbmRleCA+PSBzdGFydEJ5dGVjb2RlSW5kZXgpIHsgXAotICAg
ICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF8jI25hbWUpOyBcCisgICAgICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF8jI25hbWUpOyBcCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOyBcCiAgICAgICAgIH0gXAogICAgICAgICBORVhUX09QQ09ERV9JTl9N
QUlOKG9wXyMjbmFtZSk7IFwKQEAgLTE5MCwxNSArMTkwLDE1IEBAIHZvaWQgSklUOjpyZXNldFNQ
KCkKIAogI2RlZmluZSBERUZJTkVfU0xPV0NBU0VfU0xPV19PUChuYW1lKSBcCiAgICAgY2FzZSBv
cF8jI25hbWU6IHsgXAotICAgICAgICBlbWl0U2xvd0Nhc2VDYWxsKGN1cnJlbnRJbnN0cnVjdGlv
biwgaXRlciwgc2xvd19wYXRoXyMjbmFtZSk7IFwKKyAgICAgICAgZW1pdFNsb3dDYXNlQ2FsbChp
dGVyLCBzbG93X3BhdGhfIyNuYW1lKTsgXAogICAgICAgICBicmVhazsgXAogICAgIH0KIAotdm9p
ZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5j
dGlvbiBzdHViKQordm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGlvbiBzdHViKQogewogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc3R1Yik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBzdHViKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC02
NTcsOSArNjU3LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Aoc3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9TTE9XX09QKG5zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX1NMT1dfT1Ao
Z2V0X3Byb3RvdHlwZV9vZikKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgICAg
IERFRklORV9TTE9XQ0FTRV9TTE9XX09QKHJlc29sdmVfc2NvcGUpCi0jZW5kaWYKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX1NMT1dfT1AoY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfU0xPV19PUCh0b19wcm9wZXJ0eV9rZXkpCiAgICAgICAgIGRlZmF1bHQ6CkBAIC04NjAsOSAr
ODU3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICBtX2FyaXR5Q2hlY2sgPSBlbnRyeUxhYmVs
OyAvLyBOZXZlciByZXF1aXJlIGFyaXR5IGZpeHVwLgogCiAgICAgQVNTRVJUKG1fam1wVGFibGUu
aXNFbXB0eSgpKTsKLSAgICAKLSAgICBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7
Ci0gICAgCisKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVy
LT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIu
YXBwZW5kSXRlbShsYWJlbCgpLCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI6OmRlZmF1bHRDb2Rl
T3JpZ2luKCkpOwpAQCAtOTE0LDEyICs5MDksMTAgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgICAg
ICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4
Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0
aW9uQ2hlY2tzLCBDb2RlTG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICBpZiAoIW1fZXhj
ZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFtZVJvbGxiYWNrLmVtcHR5KCkpCiAgICAgICAgIHBhdGNo
QnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZyYW1lUm9sbGJhY2ssIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwotI2VuZGlmCiAK
ICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fbmVhckp1bXBzKSB7CiAgICAgICAgIGlmIChyZWNv
cmQudGFyZ2V0KQpAQCAtMTA0MCwzNSArMTAzMyw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6
cHJpdmF0ZUNvbXBpbGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uRWZmb3J0
CiAgICAgcmV0dXJuIGZpbmFsaXplT25NYWluVGhyZWFkKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKLXsKLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVS
b2xsYmFjay5lbXB0eSgpKSB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxGcmFt
ZVJvbGxiYWNrLmxpbmsodGhpcyk7Ci0KLSAgICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICAvLyBv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lIGlzIHBhc3NlZCBv
bmUgYXJndW1lbnQsIHRoZSBWTSouCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0oKSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZt
KCkpOwotICAgICAgICBtX2ZhckNhbGxzLmFwcGVuZChGYXJDYWxsUmVjb3JkKGNhbGwoT3BlcmF0
aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBF
eGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKSkpOwotICAgICAgICBqdW1wVG9FeGNlcHRp
b25IYW5kbGVyKHZtKCkpOwotICAgIH0KLQotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1w
dHkoKSkgewotICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwotCi0gICAgICAg
IGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50
cnlGcmFtZSk7Ci0KLSAgICAgICAgLy8gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlciBp
cyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0aGUgVk0qLgotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoJnZtKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBwcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSgpKTsKLSAgICAgICAgbV9mYXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChj
YWxsKE9wZXJhdGlvblB0clRhZyksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikpKTsKLSAgICAgICAganVtcFRvRXhjZXB0aW9uSGFu
ZGxlcih2bSgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi19
Ci0KIHZvaWQgSklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKQogewog
ICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGhhdmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB0eXBl
IGluZm9ybWF0aW9uIHdoZW4gcGVyZm9ybWluZyB0eXBlY2hlY2sgb3B0aW1pemF0aW9ucyBmb3Ig
b3BfcHJvZmlsZV90eXBlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggODdjZTlkYzU5ZTFk
MmU2OGNhZjg3NWMxNzY1Y2FjNDk1MTJiODBkNC4uYzI2NWNjYzA0Nzk4N2JmOWM3NzQ3ODgyNDFi
ZTA3MjFhMGE2NWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNzYsOCArMjc2LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc1dpdGhDYWxs
RnJhbWVSb2xsYmFjay5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNoZWNrKHZtKCkpKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpOwotCiAg
ICAgICAgIHZvaWQgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKICAgICAgICAgdm9pZCBlbWl0
SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoSnVtcCk7CiAgICAgICAgIHZvaWQgc2V0RmFzdFBh
dGhSZXN1bWVQb2ludCgpOwpAQCAtNTUzLDcgKzU1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGNvZGVUeXBlLCB0eXBlbmFtZSBTbG93UGF0aEZ1bmN0aW9uVHlwZT4K
LSAgICAgICAgdm9pZCBlbWl0X2VudW1lcmF0b3JfaGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0
cnVjdGlvbiosIGNvbnN0IE9wY29kZVR5cGUmLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSk7CisgICAg
ICAgIHZvaWQgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgT3Bjb2RlVHlw
ZSYsIFNsb3dQYXRoRnVuY3Rpb25UeXBlKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0
b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIApAQCAtNjE0
LDcgKzYxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Rv
X2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKIAotICAgICAgICB2b2lkIGVtaXRTbG93Q2FzZUNhbGwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlv
bik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiwgU2xvd1BhdGhGdW5jdGlvbik7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpAQCAtNjIyLDcgKzYyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKICAgICAgICAgdm9pZCBlbWl0SGFzUHJp
dmF0ZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSwgVmlydHVhbFJl
Z2lzdGVyIHByb3BlcnR5T3JCcmFuZCwgQWNjZXNzVHlwZSk7Ci0gICAgICAgIHZvaWQgZW1pdEhh
c1ByaXZhdGVTbG93KFZpcnR1YWxSZWdpc3RlciBiYXNlLCBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHksIEFjY2Vzc1R5cGUpOworICAgICAgICB2b2lkIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NU
eXBlKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgdm9pZCBlbWl0
TmV3RnVuY0NvbW1vbihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjU4LDM5ICs2NTYsMjkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNlbGluZUdlbmVyYXRvcihWTSYpOwogCiAgICAgcHJp
dmF0ZToKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgLy8gVGh1bmsgZ2Vu
ZXJhdG9ycy4KLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gc2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mKTsKLSAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9k
ZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJlQ2Fs
bEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0m
KTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
c2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3Bf
cHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVw
YXJlQ2FsbEdlbmVyYXRvcihWTSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZGVsX2J5X3Zh
bF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29w
X3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJik7CisKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mKTsK
LQotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBv
cF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKFZNJik7Ci0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0
b3IoVk0mKTsKICAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gb3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF9jaGVja190cmFwc19oYW5kbGVy
R2VuZXJhdG9yKFZNJik7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHRodW5rSXNV
c2VkRm9yT3BHZXRGcm9tU2NvcGUoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIC8vIEdsb2JhbFZhciBiZWNhdXNlIGl0IGlzIG1vcmUgZWZmaWNpZW50IHRv
IGVtaXQgaW5saW5lIHRoYW4gdXNlIGEgdGh1bmsuCi0gICAgICAgICAgICAvLyBSZXNvbHZlZENs
b3N1cmVWYXIgYW5kIE1vZHVsZVZhciBiZWNhdXNlIHdlIGRvbid0IHVzZSB0aGVzZSB0eXBlcyB3
aXRoIG9wX2dldF9mcm9tX3Njb3BlLgotICAgICAgICAgICAgcmV0dXJuICEocmVzb2x2ZVR5cGUg
PT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IFJlc29sdmVkQ2xvc3VyZVZhciB8fCByZXNv
bHZlVHlwZSA9PSBNb2R1bGVWYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc0ZhbHNleUdlbmVyYXRvcihW
TSYpOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiB2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKFZNJik7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NU
SV9USFVOS1MpCisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNo
ZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJh
dGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9wcml2YXRlX25h
bWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKICAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19v
cF9nZXRfZnJvbV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX3Jlc29sdmVfc2NvcGVHZW5lcmF0
b3IoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wR2V0RnJvbVNj
b3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBlPgogICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZU9wUmVz
b2x2ZVNjb3BlVGh1bmsoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1
dGh5R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mKTsKIAogICAgICAgICBK
dW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAg
ICAgICAgIHsKQEAgLTcxOCw5ICs3MDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOwogICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2soQWRkcmVzcyk7Ci0jaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KTsKLSNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4sIFZpcnR1YWxSZWdpc3RlciByZXN1bHQpOwogICAgICAgICB2b2lkIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KEFkZHJlc3MsIFZpcnR1YWxSZWdpc3RlciBy
ZXN1bHQpOwpAQCAtNzYzLDcgKzc0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IC8vIHg2NCBXaW5kb3dzIGNhbm5vdCB1c2Ugc3RhbmRhcmQgY2FsbCB3aGVuIHRoZSByZXR1cm4g
dHlwZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLgogICAgICAgICAgICAgaWYgY29uc3RleHByIChp
czY0Qml0VHlwZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0
VHlwZT46OnZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShvcGVyYXRpb24pOworICAgICAgICAg
ICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUob3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgIGV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICByZXR1cm4gY2FsbDsKICAg
ICAgICAgfQogI2Vsc2UgLy8gT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDc2ZTA2ODlmYzE5NTBl
NDU1MzE0NjQ3ZDU0OTcyNjA4NmYyNDJhZDkuLmY0MjYwNzRmNDViYWY0ZmM2MGM4NTI4NWQwZGZj
YjBjMWE3NTVlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcApAQCAtNDUxLDE5ICs0NTEsMTkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihyZXN1bHQsIGpzUmVnVDEwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbW9kKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9tb2QpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKICNlbHNlIC8vIENQVShYODZfNjQpCiAKLXZvaWQgSklUOjplbWl0X29w
X21vZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVt
aXRfb3BfbW9kKGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX21vZCk7CisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfbW9kKTsKICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC01MjIsMTEgKzUyMiwxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVzdWx0UmVncyk7CiB9CiAKLXZvaWQgSklU
OjplbWl0U2xvd19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9wb3coY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3Bvdyk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhf
cG93KTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCkBAIC05NzgsNyArOTc4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZGl2KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGdlbi5lbmRKdW1wTGlzdCgpLmVtcHR5
KCkpOwogICAgICAgICBBU1NFUlQoZ2VuLnNsb3dQYXRoSnVtcExpc3QoKS5lbXB0eSgpKTsKLSAg
ICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9kaXYpOworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIHNsb3dfcGF0aF9kaXYpOwogICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IGVlM2NjNDc4ZmY0
N2ZhZGE3MWVjOWRjMThmYWQxZDM0NTU0NTY5YjUuLmM2OGU0N2VlOWM4OGIxNmU4MTYxNGZkYzhk
Y2EwYzYwYzQyYzI4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNlbGluZUpJ
VFJlZ2lzdGVycy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50Lmgi
CiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWVTaHVmZmxlci5oIgpAQCAtMTUzLDcgKzE1NCw3IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJh
bWUoY29uc3QgT3AmIGJ5dGVjb2RlKQogICAgIEp1bXAgbm90QmlnZ2VzdCA9IGJyYW5jaDMyKEFi
b3ZlLCByZWdUMywgcmVnVDIpOwogICAgIHN0b3JlMzIocmVnVDIsIEFkZHJlc3MocmVnVDAsIENh
bGxMaW5rSW5mbzo6b2Zmc2V0T2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKSk7CiAg
ICAgbm90QmlnZ2VzdC5saW5rKHRoaXMpOwotICAgIAorCiAgICAgLy8gSW5pdGlhbGl6ZSAndGhp
cycuCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBqc1JlZ1QxMDsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwgdGhpc0pTUik7CkBAIC0xOTYsMTEgKzE5
NywxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0NhcwogCiAgICAgYWRkUHRyKFRydXN0ZWRJbW0z
MihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAg
c3RhdGljX2Fzc2VydChub092ZXJsYXAoQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1Is
IEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZvR1BSLCByZWdUMykpOwotICAgIGxv
YWRWYWx1ZShBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICog
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgQmFzZWxp
bmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IpOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFw
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IsIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHJlZ1QzKSk7CisgICAgbG9hZFZhbHVlKEFkZHJl
c3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90
OjpjYWxsZWUgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbGVlSlNSKTsKICAgICBsb2FkR2xvYmFsT2JqZWN0KHJlZ1QzKTsKLSAgICBt
YXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wQ2FsbEV2YWw6Ok1ldGFk
YXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxM
aW5rSW5mb0dQUik7Ci0gICAgZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVj
dCgqbV92bSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIENhbGxNb2Rl
OjpSZWd1bGFyKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUs
IE9wQ2FsbEV2YWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBlbWl0VmlydHVhbENhbGxX
aXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KCptX3ZtLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbExpbmtJbmZvR1BSLCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgcmVzZXRTUCgpOwog
fQogCkBAIC0yMTMsMTggKzIxNCwxOCBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0
IE9wJiwgVW5saW5rZWRDYWxsTGlua0luZm8qLCB1bnNpZ25lZCkKIHRlbXBsYXRlPD4KIGJvb2wg
SklUOjpjb21waWxlVGFpbENhbGwoY29uc3QgT3BUYWlsQ2FsbCYgYnl0ZWNvZGUsIFVubGlua2Vk
Q2FsbExpbmtJbmZvKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpCiB7Ci0gICAgbWF0ZXJp
YWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6
b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0lu
Zm9HUFIpOwotICAgIEp1bXBMaXN0IHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxD
YWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbGVlSlNS
LnBheWxvYWRHUFIoKSwgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsTGlua0luZm9HUFIsIHNj
b3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFk
YXRhKGJ5dGVjb2RlLCBPcFRhaWxDYWxsOjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8o
KSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgSnVt
cExpc3Qgc2xvd1BhdGhzID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxEYXRhSUNGYXN0UGF0
aCgqdGhpcywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExh
bWJkYTx2b2lkKCk+KFsmXSB7CiAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVE
YXRhID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxD
YWxsKGJ5dGVjb2RlLCBtX3VubGlua2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogICAg
ICAgICBDYWxsRnJhbWVTaHVmZmxlciBzaHVmZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0YSB9Owot
ICAgICAgICBzaHVmZmxlci5sb2NrR1BSKEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJ
bmZvR1BSKTsKKyAgICAgICAgc2h1ZmZsZXIubG9ja0dQUihCYXNlbGluZUpJVFJlZ2lzdGVyczo6
Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICAgICAgc2h1ZmZsZXIucHJlcGFyZUZvclRhaWxD
YWxsKCk7CiAgICAgfSkpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CiAKICAgICBhdXRv
IGRvbmVMb2NhdGlvbiA9IGxhYmVsKCk7CiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxM
aW5rSW5mb0luZGV4XS5kb25lTG9jYXRpb24gPSBkb25lTG9jYXRpb247Ci0gICAgCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjYyLDggKzI2Myw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BD
YWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZv
SW5kCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLmJpdHMoKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCBB
ZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBUYWdPZmZz
ZXQpKTsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBCYXNlbGluZUNhbGxS
ZWdpc3RlcnM6OmNhbGxlZUpTUik7Ci0gICAgc3RvcmVWYWx1ZShCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxlZUpTUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSAtIHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSkpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKTsKKyAgICBzdG9yZVZhbHVlKEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IsIEFkZHJlc3Moc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKIAogICAgIGlmIChjb21w
aWxlQ2FsbEV2YWwoYnl0ZWNvZGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNzEsMTcgKzI3Miwx
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
Ly8gV2UgbmVlZCB0aGlzIG9uIEpTVkFMVUUzMl82NCBvbmx5IGFzIG9uIEpTVkFMVUU2NCBhIHBv
aW50ZXIgY29tcGFyaXNvbiBpbiB0aGUgRGF0YUlDIGZhc3QKICAgICAvLyBwYXRoIGNhdGNoZXMg
dGhpcy4KLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwoQmFzZWxpbmVDYWxsUmVnaXN0
ZXJzOjpjYWxsZWVKU1IpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUikpOwogI2VuZGlmCiAKICAgICBpZiAoY29t
cGlsZVRhaWxDYWxsKGJ5dGVjb2RlLCBpbmZvLCBjYWxsTGlua0luZm9JbmRleCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwg
T3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUNhbGxSZWdpc3Rl
cnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRh
KGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgIGlmIChvcGNvZGVJRCA9
PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMpIHsKLSAgICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVt
aXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNh
bGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5lQ2FsbFJlZ2lzdGVyczo6Y2FsbExpbmtJbmZv
R1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0geworICAgICAgICBhdXRvIHNsb3dQYXRocyA9
IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgoKnRoaXMsIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0g
ewogICAgICAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgcHJl
cGFyZUZvclRhaWxDYWxsU2xvdyhCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQ
Uik7CisgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgICAgICB9KSk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKHNsb3dQYXRocyk7CiAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsK
QEAgLTI4OSw3ICsyOTAsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRh
SUNGYXN0UGF0aCgqdGhpcywgQmFzZWxpbmVDYWxsUmVnaXN0ZXJzOjpjYWxsZWVKU1IucGF5bG9h
ZEdQUigpLCBCYXNlbGluZUNhbGxSZWdpc3RlcnM6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgYXV0
byBzbG93UGF0aHMgPSBDYWxsTGlua0luZm86OmVtaXREYXRhSUNGYXN0UGF0aCgqdGhpcywgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwogICAgIGF1dG8gZG9uZUxvY2F0
aW9uID0gbGFiZWwoKTsKICAgICBhZGRTbG93Q2FzZShzbG93UGF0aHMpOwogCkBAIC0zNzgsNyAr
Mzc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NhbGxfZXZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKIHsKICAgICBjb21waWxlQ2FsbEV2YWxT
bG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOwogfQotIAorCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgY29tcGls
ZU9wQ2FsbFNsb3dDYXNlPE9wQ2FsbFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwg
bV9jYWxsTGlua0luZm9JbmRleCsrKTsKQEAgLTM5MywxMiArMzk0LDEyIEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0CiB7CiAgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wVGFpbENhbGxGb3J3
YXJkQXJndW1lbnRzPihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CiB9Ci0gICAgCisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jb25zdHJ1Y3RfdmFyYXJn
cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENv
bnN0cnVjdFZhcmFyZ3M+KGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9J
bmRleCsrKTsKIH0KLSAgICAKKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcENvbnN0cnVj
dD4oY3VycmVudEluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOwpAQCAt
NDE2LDcgKzQxNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogICAgICAgICB9CiAgICAgfSkoKTsKIAotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlv
bik7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rp
b24pOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNDI3LDkg
KzQyOCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uKQogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJldHVy
blZhbHVlSlNSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpT
UjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIHN0YXRpY19h
c3NlcnQobm9PdmVybGFwKHJldHVyblZhbHVlSlNSLCBzdHViSW5mb0dQUikpOwogICAgIHN0YXRp
Y19hc3NlcnQocmV0dXJuVmFsdWVKU1IgPT0gYmFzZUpTUik7IC8vIE90aGVyd2lzZSB3aWxsIG5l
ZWQgbW92ZShyZXR1cm5WYWx1ZUpTUiwgYmFzZUpTUikKQEAgLTQ2OSw3ICs0NzAsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChq
dW1wKCkpOwogCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLSAgICBKU1ZhbHVlUmVncyBp
dGVyYXRvckpTUiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKKyAgICBKU1Zh
bHVlUmVncyBpdGVyYXRvckpTUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNl
SlNSOwogICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5j
aElmTm90Q2VsbChpdGVyYXRvckpTUikpOwogICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZO
b3RPYmplY3QoaXRlcmF0b3JKU1IucGF5bG9hZEdQUigpKSk7CkBAIC00NzgsNyArNDc5LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2
bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKLSAgICAKKwogICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRl
Y2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CkBAIC01MTgsMTYgKzUxOSwxNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbikKICAgICAgICAgfQogICAgIH0pKCk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRS
ZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpy
ZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpkb250Q2xvYmJl
ckpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpiYXNlSlNSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRoOjpkb250Q2xvYmJlckpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0dWJJ
bmZvR1BSOwogCiAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIG5leHRKU1IgPSBiYXNlSlNSOyAv
LyBVc2VkIGFzIHRlbXBvcmFyeSByZWdpc3RlcgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV9uZXh0LCBuZXh0SlNSKTsKICAgICBKdW1wIGdlbmVyaWNDYXNlID0gYnJhbmNo
SWZOb3RFbXB0eShuZXh0SlNSKTsKIAotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCB0cnlGYXN0RnVuY3Rpb24pOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiAgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0
aW9uTW9kZTo6R2VuZXJpYykpKTsKIApAQCAtNjE2LDggKzYxNyw4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDCiAgICAgZW1pdFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogICAgIGVtaXRKdW1w
U2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwogCi0gICAgdXNpbmcgQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpkb250Q2xvYmJlckpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlk
OjpGYXN0UGF0aDo6ZG9udENsb2JiZXJKU1I7CiAKICAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
aXRlckNhbGxSZXN1bHRKU1IgPSBkb250Q2xvYmJlckpTUjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAwNGZm
MjJlNmU0MjVhMDNjNjE0MTQ3MDU2N2YzN2RhNjM2NTM0YWU2Li5iNjVhNjA0YzM0ZmUxYzUyNzMy
YTcyZjM4MGVlZGUzY2QzMWQ0YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKQEAgLTE0OSw5ICsxNTAsOSBAQCB2b2lkIEpJ
VEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGpp
dCwgdW5zaWduZWQgc3R1YgogCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogCi0gICAgdXNp
bmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0
QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0
UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJ
bmZvR1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5mb0dQ
UiwgYmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTE4NSw5ICsxODYsOSBAQCB2
b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zh
c3RQYXRoKEpJVCYgaml0LCB1bnNpZwogCiAgICAgbV9zdGFydCA9IGppdC5sYWJlbCgpOwogCi0g
ICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1
c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpGYXN0UGF0
aDo6c2NyYXRjaEdQUjsKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZv
R1BSKTsKICAgICBnZW5lcmF0ZUdldEJ5SWRJbmxpbmVBY2Nlc3Moaml0LCBzdHViSW5mb0dQUiwg
YmFzZUpTUiwgc2NyYXRjaEdQUiwgcmVzdWx0SlNSKTsKQEAgLTIxNSwxMCArMjE2LDEwIEBAIHZv
aWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJ
VCYgaml0LCB1bnNpZ25lZCBzdHViCiAKICAgICBqaXQubG9hZENvbnN0YW50KHN0dWJJbmZvLCBz
dHViSW5mb0dQUik7CiAKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1
c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoMkdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6UHV0QnlJZDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5SWQ6OkZhc3RQYXRoOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaDJHUFI7CiAKICAgICBqaXQubG9hZDMy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlSlNSLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgYXV0byBkb0lubGluZUFjY2VzcyA9
IGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZklubGlu
ZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmVJRCgpKSk7CkBAIC00MDUsOSArNDA2LDkgQEAgdm9pZCBKSVRJ
bkJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlQmFzZWxpbmVEYXRhSUNGYXN0UGF0aChKSVQmIGppdCwg
dW5zaWduZWQgc3R1YkkKIAogICAgIGppdC5sb2FkQ29uc3RhbnQoc3R1YkluZm8sIHN0dWJJbmZv
R1BSKTsKIAotICAgIHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFz
ZWxpbmVJbkJ5SWRSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6SW5CeUlkOjpyZXN1bHRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Oklu
QnlJZDo6c2NyYXRjaEdQUjsKIAogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZG9uZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCmluZGV4IDYyOTI5YzBjMjQ4NGZiOWNhMGVjNjYxYmI3YzBhN2RlNjQ5ZmM5OGMuLjUyNGY5
YjA0OWUwZjNmMzFjMjk2ZGM0ZDRmNzJlNzY4YmVlZTNiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTQ4LDE5MCAr
NDgsNiBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbzsKIGVudW0gY2xhc3MgQWNj
ZXNzVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgSklUVHlwZSA6IHVpbnQ4X3Q7CiAKLW5hbWVz
cGFjZSBCYXNlbGluZURlbEJ5VmFsUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBy
ZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQp
Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QzIH07Ci1jb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUklu
Zm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
eyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5m
bzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVEZWxCeUlkUmVnaXN0
ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5W
YWx1ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFz
ZUpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsg
R1BSSW5mbzo6cmVnVDMgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86
OnJlZ1QyIH07Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdz
IGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUNyB9OwotY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDYgfTsKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFz
ZWxpbmVHZXRCeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNS
IHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpT
VmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzY3Jh
dGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25z
dGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDMs
IEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2
IH07Ci0jZW5kaWYKLX0KLQotI2lmIFVTRShKU1ZBTFVFNjQpCi1uYW1lc3BhY2UgQmFzZWxpbmVF
bnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnMgewotc3RhdGljIGNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcHJvcGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMSB9Owotc3RhdGljIGNvbnN0ZXhwciBKU1Zh
bHVlUmVncyByZXN1bHRKU1IgeyBHUFJJbmZvOjpyZWdUMCB9Owotc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBHUFJJbmZvOjpyZWdUMjsKLS8vIFdlIHJlbHkgb24gdGhpcyB3
aGVuIGxpbmtpbmcgYSBDb2RlQmxvY2sgYW5kIGluaXRpYWxpemluZyByZWdpc3RlcnMgZm9yIGEg
R2V0QnlWYWwgU3R1YkluZm8uCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0gQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3BlcnR5SlNSID09IEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLXN0YXRpY19hc3NlcnQocmVz
dWx0SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUik7Ci1zdGF0aWNf
YXNzZXJ0KHN0dWJJbmZvR1BSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZv
R1BSKTsKLQotc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDEgPSBHUFJJbmZvOjpyZWdU
MzsKLXN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gR1BSSW5mbzo6cmVnVDQ7Ci1z
dGF0aWMgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMyA9IEdQUkluZm86OnJlZ1Q1OwotfQotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnMgewotI2lmIFVTRShK
U1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVzdWx0SlNSIHsgR1BSSW5mbzo6cmVn
VDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50
R1BSMiB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNSIHsgR1BSSW5mbzo6YXJndW1l
bnRHUFIzIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6YXJndW1l
bnRHUFIxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxR1BSIHsgR1BSSW5mbzo6bm9uQXJn
R1BSMCB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMkdQUiB7IEdQUkluZm86Om5vbkFyZ0dQ
UjEgfTsKLSNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcmVz
dWx0SlNSIHsgSlNSSW5mbzo6anNSZWdUMTAgfTsKLSNpZiBDUFUoTUlQUykKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJn
dW1lbnRHUFIyIH07Ci0jZWxzZQotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsgSlNS
SW5mbzo6anNSZWdUMzIgfTsKLSNlbmRpZgotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3RvSlNS
IHsgSlNSSW5mbzo6anNSZWdUNTQgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBH
UFJJbmZvOjpyZWdUMSB9OwotY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMUdQUiB7IEdQUkluZm86
OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDcg
fTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6Om5vT3ZlcmxhcCh2YWx1
ZUpTUiwgcHJvdG9KU1IsIHN0dWJJbmZvR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpKTsK
LX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNW
YWx1ZVJlZ3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgeyBHUFJJbmZvOjpyZWdU
MCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNSIHsgR1BSSW5mbzo6cmVnVDEg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29u
c3RleHByIEdQUlJlZyBzY3JhdGNoR1BSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHByb3BlcnR5SlNS
ICB7IEdQUkluZm86OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q3IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hH
UFIgeyBHUFJJbmZvOjpyZWdUNiB9OwotI2VuZGlmCi1zdGF0aWNfYXNzZXJ0KGJhc2VKU1IgPT0g
QmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUik7Ci1zdGF0aWNfYXNzZXJ0KHByb3Bl
cnR5SlNSID09IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSKTsKLX0KLQot
bmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVycyB7Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBKU1Zh
bHVlUmVncyBiYXNlSlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLSNpZiBVU0UoSlNW
QUxVRTY0KQotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1QxIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwotY29uc3Rl
eHByIEpTVmFsdWVSZWdzIGRvbnRDbG9iYmVySlNSIHsgR1BSSW5mbzo6cmVnVDMgfTsKLSNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5m
bzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Qz
IH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgZG9udENsb2JiZXJKU1IgeyBHUFJJbmZvOjpyZWdU
NiwgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBl
cnM6Om5vT3ZlcmxhcChiYXNlSlNSLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgZG9udENsb2Ji
ZXJKU1IpKTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJz
IHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyByZXN1bHRKU1IgeyBKU1JJbmZvOjpyZXR1cm5WYWx1
ZUpTUiB9OwotI2lmIFVTRShKU1ZBTFVFNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpT
UiB7IEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdGhpc0pTUiB7IEdQ
UkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6
cmVnVDIgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QzIH07
Ci0jZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQotY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
eyBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVn
cyB0aGlzSlNSIHsgR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1Q2IH07Ci0jZW5kaWYKLX0KLQotbmFtZXNwYWNlIEJh
c2VsaW5lSW5CeUlkUmVnaXN0ZXJzIHsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
QmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJl
Z3MgcmVzdWx0SlNSIHsgSlNSSW5mbzo6cmV0dXJuVmFsdWVKU1IgfTsKLWNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6OnN0dWJJbmZvR1BSIH07
Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgeyBCYXNlbGluZUdldEJ5SWRSZWdpc3RlcnM6
OnNjcmF0Y2hHUFIgfTsKLX0KLQotbmFtZXNwYWNlIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVycyB7
Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86
OnJlZ1QxIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDMg
fTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7IEdQUkluZm86OnJlZ1QyIH07Ci1jb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgR1BSSW5mbzo6cmVnVDQgfTsKLSNlbGlmIFVTRShK
U1ZBTFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSIHsg
R1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLWNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiB7
IEdQUkluZm86OnJlZ1Q2IH07Ci1jb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BSIHsgYmFzZUpT
Ui50YWdHUFIoKSB9OyAvLyBSZXVzaW5nIHJlZ1QxIGZvciBiZXR0ZXIgY29kZSBzaXplIG9uIEFS
TV9USFVNQjIKLSNlbmRpZgotfQotCi1uYW1lc3BhY2UgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVy
cyB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsg
R1BSSW5mbzo6cmVnVDAgfTsKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiB7IEdQ
UkluZm86OnJlZ1QxIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWVKU1IgeyBHUFJJbmZv
OjpyZWdUMiB9OwotY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0
IH07Ci1jb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUMyB9OwotI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BS
SW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH07Ci1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJv
cGVydHlKU1IgeyBHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIgfTsKLWNvbnN0ZXhwciBK
U1ZhbHVlUmVncyB2YWx1ZUpTUiB7IEdQUkluZm86OnJlZ1Q2LCBHUFJJbmZvOjpyZWdUNyB9Owot
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiB7IEdQUkluZm86OnJlZ1Q0IH07Ci1jb25zdGV4
cHIgR1BSUmVnIHByb2ZpbGVHUFIgeyBHUFJJbmZvOjpyZWdUNSB9OwotI2VuZGlmCi19Ci0KLW5h
bWVzcGFjZSBCYXNlbGluZVByaXZhdGVCcmFuZFJlZ2lzdGVycyB7Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLWNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSIHsgR1BSSW5mbzo6cmVnVDAgfTsKLWNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiB7IEdQUkluZm86OnJlZ1QxIH07Ci1jb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSIHsgR1BSSW5mbzo6cmVnVDIgfTsKLSNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi1jb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiB7IEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMCB9OwotY29uc3RleHByIEpTVmFsdWVSZWdzIGJyYW5kSlNSIHsgR1BS
SW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyIH07Ci1jb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZv
R1BSIHsgR1BSSW5mbzo6cmVnVDcgfTsKLSNlbmRpZgotc3RhdGljX2Fzc2VydChiYXNlSlNSID09
IEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IpOwotc3RhdGljX2Fzc2VydChicmFu
ZEpTUiA9PSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUik7Ci19Ci0KIGNs
YXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKIHByb3RlY3RlZDoKICAgICBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApp
bmRleCAzOTg3YzRjYmQxZjFmOWVhMTg2MzQwNGZlMDZlOGIwN2U3MWFkZWU4Li4wMmUyZjhhZWEz
YzkzNzk3YjRlNWQxMmYzYmRhMmFiNWIzNDBmNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaApAQCAtMTMzLDE2ICsxMzMsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKEFkZHJlc3MgZnVuY3Rpb24pCiAgICAgZXhj
ZXB0aW9uQ2hlY2soKTsKIH0KIAotI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCi1BTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja0FuZFNsb3dQYXRoUmV0dXJuVHlwZShjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGZ1bmN0aW9uKQotewotICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOwotICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShm
dW5jdGlvbik7Ci0gICAgZXhjZXB0aW9uQ2hlY2soKTsKLSAgICByZXR1cm4gY2FsbDsKLX0KLSNl
bmRpZgotCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2Fs
bFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4gZnVuY3Rpb24pCiB7CiAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7IC8vIFRo
ZSBjYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdG9wQ2FsbEZyYW1lIHRvIHRoZWly
IGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZTU0
MDRmZDlkNDRmMjVkN2Q2ZWEwZDZhMWIxNzc1YWFlNjVhZGZiMi4uNTZkZmI4NzM2NTIzYTc1YzNj
YTUxMmM4ZmMxOGMzMTMyNDYwMWQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRlICJK
SVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAiQmFz
aWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJFeGNlcHRpb24uaCIKQEAgLTE1MiwxMiArMTUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29w
X2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIFZpcnR1YWxSZWdp
c3RlciBwcm90byA9IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwogCi0gICAgdXNpbmcgQmFzZWxpbmVJ
bnN0YW5jZW9mUmVnaXN0ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5j
ZW9mUmVnaXN0ZXJzOjp2YWx1ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdp
c3RlcnM6OnByb3RvSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lSW5zdGFuY2VvZlJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVnaXN0ZXJzOjpzY3Jh
dGNoMUdQUjsKLSAgICB1c2luZyBCYXNlbGluZUluc3RhbmNlb2ZSZWdpc3RlcnM6OnNjcmF0Y2gy
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpyZXN1bHRK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnZhbHVlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpwcm90b0pTUjsK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFuY2VvZjo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6Okluc3RhbmNlb2Y6OnNjcmF0Y2gxR1BS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbnN0YW5jZW9mOjpzY3JhdGNoMkdQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHZhbHVlSlNSKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3RvLCBwcm90b0pTUik7CkBAIC0yMDUsOSArMjA2LDkg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVj
bHR5cGUob3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKTsKICAgICBjb25zdGV4cHIgR1BSUmVn
IGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+
KCk7CiAgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50
R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbnN0YW5jZW9mUmVn
aXN0ZXJzOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5zdGFu
Y2VvZjo6dmFsdWVKU1I7CiAgICAgc3RhdGljX2Fzc2VydCh2YWx1ZUpTUiA9PSBwcmVmZXJyZWRB
cmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpKTsKLSAgICB1c2luZyBCYXNlbGluZUluc3Rh
bmNlb2ZSZWdpc3RlcnM6OnByb3RvSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpJbnN0YW5jZW9mOjpwcm90b0pTUjsKICAgICAvLyBPbiBKU1ZBTFVFMzJfNjQsICdwcm90bycg
d2lsbCBiZSBwYXNzZWQgb24gc3RhY2sgYW55d2F5CiAgICAgc3RhdGljX2Fzc2VydChwcm90b0pT
UiA9PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpIHx8IGlzMzJCaXQo
KSk7CiAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5m
b0dQUiwgdmFsdWVKU1IsIHByb3RvSlNSKSk7CkBAIC00NTEsMjQgKzQ1MiwxMyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0
ZWNvZGUubV90YXJnZXRMYWJlbCk7CiAKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFsdWUg
PSBqc1JlZ1QxMDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SkZhbHNlOjp2YWx1
ZUpTUjsKIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9jb25kaXRpb24s
IHZhbHVlKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi0gICAgY29uc3RleHByIEdQ
UlJlZyBzY3JhdGNoMSA9IHJlZ1QyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSBy
ZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHJlZ1Q0OwotICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGdsb2Jh
bE9iamVjdEdQUikpOwotICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IHRydWU7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIp
OwotICAgIGFkZEp1bXAoYnJhbmNoSWZGYWxzZXkodm0oKSwgdmFsdWUsIHNjcmF0Y2gxLCBzY3Jh
dGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCBnbG9iYWxPYmplY3RHUFIpLCB0YXJnZXQpOwotI2Vsc2UKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1ZUpTUik7CiAgICAgZW1pdE5ha2VkTmVh
ckNhbGwodm0oKS5nZXRDVElTdHViKHZhbHVlSXNGYWxzZXlHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAgICAgYWRkSnVtcChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDAp
LCB0YXJnZXQpOwotI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjp2YWx1ZUlzRmFsc2V5R2Vu
ZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVu
Y3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNl
CkBAIC00NzcsMzEgKzQ2NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6dmFsdWVJc0ZhbHNleUdlbmVyYXRvcihWTSYgdm0pCiAgICAgLy8gQ2FsbEZyYW1l
Ojpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQ
UlJlZyB2YWx1ZSA9IHJlZ1QwOwotICAgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0ganNSZWdUMTAu
cGF5bG9hZEdQUigpKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDE7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1QyOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpKRmFsc2U6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBy
ZWdUNDsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0
dXJuQWRkcmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBy
ZWdUMzsKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgYXV0byBpc0ZhbHNleSA9IGppdC5icmFuY2hJZkZhbHNleSh2bSwgSlNWYWx1ZVJl
Z3ModmFsdWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92
ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwot
Ci0gICAgaXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSks
IHJlZ1QwKTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzRmFsc2V5ID0gaml0
LmJyYW5jaElmRmFsc2V5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBm
cFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2Jh
bE9iamVjdEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAg
aXNGYWxzZXkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVu
ayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiQmFzZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogdmFsdWVJc0ZhbHNleSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtNjUzLDI0ICs2MzksMTMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEp0cnVlPigpOwogICAg
IHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0aW9uLCBieXRlY29k
ZS5tX3RhcmdldExhYmVsKTsKIAotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZSA9IGpz
UmVnVDEwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpKVHJ1ZTo6dmFsdWVKU1I7
CiAKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fY29uZGl0aW9uLCB2YWx1
ZSk7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDEgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKLSAgICBzdGF0
aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZSwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBnbG9iYWxPYmpl
Y3RHUFIpKTsKLSAgICBjb25zdGV4cHIgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSB0cnVlOwotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBhZGRKdW1wKGJyYW5jaElmVHJ1dGh5KHZtKCksIHZhbHVlLCBzY3JhdGNoMSwgc2NyYXRjaDIs
IGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xv
YmFsT2JqZWN0R1BSKSwgdGFyZ2V0KTsKLSNlbHNlCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2NvbmRpdGlvbiwgdmFsdWVKU1IpOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtKCkuZ2V0Q1RJU3R1Yih2YWx1ZUlzVHJ1dGh5R2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFy
Z2V0KTsKLSNlbmRpZgogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQpAQCAt
Njc5LDMxICs2NTQsMjcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0b3IoVk0mIHZtKQogICAgIC8vIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
dmFsdWUgPSByZWdUMDsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlID09IGpzUmVnVDEwLnBheWxv
YWRHUFIoKSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1QxOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc2NyYXRjaDIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6SlRydWU6OnZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDFHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gyR1BS
ID0gcmVnVDU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsK
KyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcCh2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0
Y2gyR1BSLCBnbG9iYWxPYmplY3RHUFIpKTsKKwogICAgIGNvbnN0ZXhwciBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IHRydWU7CiAKICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUMzsK
ICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGds
b2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgYXV0byBpc1RydXRoeSA9IGppdC5icmFuY2hJZlRydXRoeSh2bSwgSlNWYWx1ZVJlZ3ModmFs
dWUpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubW92ZShUcnVz
dGVkSW1tMzIoMCksIHJlZ1QwKTsKLSAgICBKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwotCi0gICAg
aXNUcnV0aHkubGluaygmaml0KTsKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1Qw
KTsKLQotICAgIGRvbmUubGluaygmaml0KTsKKyAgICBhdXRvIGlzVHJ1dGh5ID0gaml0LmJyYW5j
aElmVHJ1dGh5KHZtLCB2YWx1ZUpTUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBmcFJlZ1Qw
LCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVj
dEdQUik7CisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CisgICAgaXNUcnV0
aHkubGluaygmaml0KTsKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Ci0g
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFz
ZWxpbmU6IHZhbHVlSXNmYWxzZXkiKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogdmFsdWVJc1RydXRoeSIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApAQCAtNzM0LDU3ICs3MDUsNDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
dm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRo
cm93PigpOwotICAgIHN0YXRpY19hc3NlcnQocmVnVDAgPT0gcmV0dXJuVmFsdWVHUFIpOwotCi0j
aWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7Ci0gICAgdXNpbmcgU2xv
d09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblRocm93KTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHZhbHVlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlSlNSKTsKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9u
VGhyb3csIGdsb2JhbE9iamVjdEdQUiwgdmFsdWVKU1IpOwotICAgIGp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0oKSk7Ci0jZWxzZQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1ZUdQUiA9
IGFyZ3VtZW50R1BSMTsKLQogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29k
ZUluZGV4Lm9mZnNldCgpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlRocm93
Ojp0aHJvd25WYWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6VGhyb3c6
OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNv
ZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX3ZhbHVlLCB0aHJvd25WYWx1ZUdQUik7CiAgICAgZW1pdE5ha2VkTmVhckp1
bXAodm0oKS5nZXRDVElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpv
cF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRocm93blZhbHVlR1BSID0gYXJndW1lbnRHUFIxOwot
ICAgIAotICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6VGhyb3c6Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6VGhyb3c6OnRocm93blZhbHVlSlNSOyAvLyBJbmNvbWluZworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpUaHJvdzo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29t
aW5nCiAKICNpZiBOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyA+IDAKLSAgICBqaXQu
bG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgYXJndW1lbnRHUFIwKTsKLSAgICBqaXQuY29weUNh
bGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoYXJndW1lbnRHUFIwKTsKKyAg
ICB7CisgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgc2NyYXRjaEdQUiA9IGdsb2JhbE9iamVjdEdQ
UjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoc2NyYXRjaEdQUiwgdGhyb3duVmFs
dWVKU1IsIGJ5dGVjb2RlT2Zmc2V0R1BSKSwgIlNob3VsZCBub3QgY2xvYmJlciBpbmNvbWluZyBw
YXJhbWV0ZXJzIik7CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKHNjcmF0Y2hHUFIpOworICAgIH0KICNlbmRpZgogCi0gICAgY29uc3RleHByIEdQ
UlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKLQotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25UaHJvdyk+KGdsb2JhbE9iamVjdEdQUiwgdGhyb3duVmFsdWVHUFIpOwotICAgIGppdC5wcmVw
YXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvblRocm93KT4oZ2xvYmFsT2JqZWN0R1BSLCB0aHJvd25WYWx1ZUpTUik7CiAgICAgQ2Fs
bCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCiAgICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uVGhyb3cpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfdGhyb3dfaGFuZGxlciIpOwogfQotI2Vu
ZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIApA
QCAtMTI1MCw3NyArMTIxMSw3MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0
cnVjdGlvbiopCiAgICAgLy8gRXZlbiB0aG91Z2ggQ1RJIGRvZXNuJ3QgdXNlIHRoZW0sIHdlIGlu
aXRpYWxpemUgb3VyIGNvbnN0YW50CiAgICAgLy8gcmVnaXN0ZXJzIHRvIHphcCBzdGFsZSBwb2lu
dGVycywgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBwcm9sb25naW5nCiAgICAgLy8gb2JqZWN0IGxp
ZmV0aW1lIGFuZCBpbmNyZWFzaW5nIEdDIHByZXNzdXJlLgotICAgIHNpemVfdCBjb3VudCA9IG1f
dW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKLSNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCi0gICAgc2l6ZV90IGZpcnN0ID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7Ci0gICAgaWYgKGZpcnN0IDwgY291bnQpCi0gICAg
ICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwganNSZWdUMTApOwotICAgIGZvciAo
c2l6ZV90IGogPSBmaXJzdDsgaiA8IGNvdW50OyArK2opCi0gICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaiksIGpzUmVnVDEwKTsKIAotICAgIGxv
YWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAg
ZW1pdFdyaXRlQmFycmllcihyZWdUMCk7Ci0KLSAgICBlbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVj
aygpOwotI2Vsc2UKICAgICBBU1NFUlQobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpID09IDApOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgbG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOwotICAg
IGNvbnN0ZXhwciBHUFJSZWcgY2FuQmVPcHRpbWl6ZWRHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KLSAg
ICB1bnNpZ25lZCBsb2NhbHNUb0luaXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOworICAgIHNpemVfdCBjb3VudCA9
IG1fdW5saW5rZWRDb2RlQmxvY2stPm51bVZhcnMoKTsKKyAgICB1aW50MzJfdCBsb2NhbHNUb0lu
aXQgPSBjb3VudCAtIENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFzVmly
dHVhbFJlZ2lzdGVycygpOwogICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fsc1RvSW5pdCA8IGNvdW50
KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihsb2NhbHNUb0luaXQgKiBzaXplb2YoUmVnaXN0ZXIp
KSwgbG9jYWxzVG9Jbml0R1BSKTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpF
bnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7CisKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihjYW5CZU9w
dGltaXplZCgpKSwgY2FuQmVPcHRpbWl6ZWRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxv
Y2Fsc1RvSW5pdCksIGxvY2Fsc1RvSW5pdEdQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0o
KS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiB9CiAKLSNpZiBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucHVzaChYODZSZWdpc3Rl
cnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
LSAgICBqaXQucHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0j
ZW5kaWYKLSAgICAvLyBvcF9lbnRlciBpcyBhbHdheXMgYXQgYnl0ZWNvZGVPZmZzZXQgMC4KLSAg
ICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgp
OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBpdGVyYXRvckdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGVuZEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIHVuZGVmaW5lZEdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGNh
bkJlT3B0aW1pemVkR1BSID0gYXJndW1lbnRHUFI0OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpFbnRlcjo6Y2FuQmVPcHRpbWl6ZWRHUFI7IC8vIEluY29taW5nCiAKLSAgICBzaXpl
X3Qgc3RhcnRMb2NhbCA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpOwotICAgIGludCBzdGFydE9mZnNldCA9IHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKHN0YXJ0TG9jYWwpLm9mZnNldCgpOwotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02
NChzdGFydE9mZnNldCAqIHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7Ci0gICAgaml0
LnN1YjY0KGl0ZXJhdG9yR1BSLCBsb2NhbHNUb0luaXRHUFIsIGVuZEdQUik7Ci0KLSAgICBqaXQu
bW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdW5kZWZp
bmVkR1BSKTsKLSAgICBhdXRvIGluaXRMb29wID0gaml0LmxhYmVsKCk7Ci0gICAgSnVtcCBpbml0
RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBlbmRHUFIp
OwogICAgIHsKLSAgICAgICAgaml0LnN0b3JlNjQodW5kZWZpbmVkR1BSLCBCYXNlSW5kZXgoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGl0ZXJhdG9yR1BSLCBUaW1lc09uZSkpOwotICAgICAg
ICBqaXQuc3ViNjQoVHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7
Ci0gICAgICAgIGppdC5qdW1wKGluaXRMb29wKTsKKyAgICAgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkVudGVyOjpsb2NhbHNUb0luaXRHUFI7IC8vIEluY29taW5nCisgICAgICAgIGNv
bnN0ZXhwciBHUFJSZWcgaXRlcmF0b3JHUFIgPSByZWdUNDsKKyAgICAgICAgY29uc3RleHByIEdQ
UlJlZyBlbmRHUFIgPSByZWdUNTsKKyAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHVuZGVm
aW5lZEpTUiA9IGpzUmVnVDMyOworICAgICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChsb2Nh
bHNUb0luaXRHUFIsIGNhbkJlT3B0aW1pemVkR1BSLCBpdGVyYXRvckdQUiwgdW5kZWZpbmVkSlNS
KSk7CisKKyAgICAgICAgc2l6ZV90IHN0YXJ0TG9jYWwgPSBDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKTsKKyAgICAgICAgaW50IHN0YXJ0
T2Zmc2V0ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7Cisg
ICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSAwKTsKKyAgICAgICAgaml0LnN1YlB0cihHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgVHJ1c3RlZEltbTMyKC1zdGFydE9mZnNldCAqIHNpemVv
ZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgIGppdC5tdWwzMihUcnVzdGVkSW1t
MzIoc2l6ZW9mKFJlZ2lzdGVyKSksIGxvY2Fsc1RvSW5pdEdQUiwgbG9jYWxzVG9Jbml0R1BSKTsK
KyAgICAgICAgaml0LnN1YlB0cihpdGVyYXRvckdQUiwgbG9jYWxzVG9Jbml0R1BSLCBlbmRHUFIp
OworICAgICAgICBqaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB1bmRlZmluZWRK
U1IpOworCisgICAgICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgSnVt
cCBpbml0RG9uZSA9IGppdC5icmFuY2gzMihMZXNzVGhhbk9yRXF1YWwsIGl0ZXJhdG9yR1BSLCBl
bmRHUFIpOworICAgICAgICB7CisgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSh1bmRlZmluZWRK
U1IsIEFkZHJlc3MoaXRlcmF0b3JHUFIpKTsKKyAgICAgICAgICAgIGppdC5zdWJQdHIoVHJ1c3Rl
ZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBpdGVyYXRvckdQUik7CisgICAgICAgICAgICBqaXQu
anVtcChpbml0TG9vcCk7CisgICAgICAgIH0KKyAgICAgICAgaW5pdERvbmUubGluaygmaml0KTsK
ICAgICB9Ci0gICAgaW5pdERvbmUubGluaygmaml0KTsKIAogICAgIC8vIGVtaXRXcml0ZUJhcnJp
ZXIobV9jb2RlQmxvY2spLgorICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbkJlT3B0aW1p
emVkR1BSLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMikpOwogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgYXJndW1lbnRHUFIxKTsKICAgICBK
dW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuYmFycmllckJyYW5jaCh2bSwgYXJn
dW1lbnRHUFIxLCBhcmd1bWVudEdQUjIpOwogCi0gICAgaml0Lm1vdmUoY2FuQmVPcHRpbWl6ZWRH
UFIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsgLy8gc2F2ZS4KLSAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpPigmdm0sIGFy
Z3VtZW50R1BSMSk7CisgICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0
IDAuCisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOworCisgICAgLy8gc2F2ZSBjYW5CZU9wdGltaXplZEdQUiAoYXJndW1lbnRzIHRv
IGNhbGwgYmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBz
dGFjayB0aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNl
IHB1c2hUb1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQu
CisgICAgaml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIp
OworICAgIGppdC5zdG9yZVB0cihjYW5CZU9wdGltaXplZEdQUiwgQWRkcmVzcyhzdGFja1BvaW50
ZXJSZWdpc3RlcikpOworCisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bldyaXRlQmFycmllclNsb3dQYXRoKT4oJnZtLCBhcmd1bWVudEdQUjEpOwogICAgIENhbGwgb3Bl
cmF0aW9uV3JpdGVCYXJyaWVyQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAKLSAg
ICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIp
OyAvLyByZXN0b3JlLgotICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJU
YWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgaml0LmxvYWRQdHIoQWRkcmVz
cyhzdGFja1BvaW50ZXJSZWdpc3RlciksIGNhbkJlT3B0aW1pemVkR1BSKTsgLy8gUmVzdG9yZSBj
YW5CZU9wdGltaXplZEdQUgorICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBvd25lcklz
UmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJmppdCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTEzMzUsMTEgKzEyOTIsMzAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogICAgICAgICBza2lwT3B0
aW1pemUuYXBwZW5kKGppdC5icmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25z
OjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yRW50cnkoKSksIEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKIAogICAgICAg
ICBqaXQuY29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0Vu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKLQotICAgICAgICBq
aXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uT3B0aW1pemUpPigmdm0sIFRydXN0
ZWRJbW0zMigwKSk7CiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisKKyNp
ZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgICAgICAvLyBPbiBXaW5kb3dzLCByZXR1
cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgYXJlIHJldHVlbmVkIHZpYSBhbiBpbXBsaWNp
dCBwb2ludGVyIHBhc3NlZCBhcworICAgICAgICAvLyB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCBy
ZW1haW5pbmcgYXJndW1lbnRzIGFyZSBzaGlmdGVkIHRvIHRoZSByaWdodC4gTWFrZSBzcGFjZSBm
b3IgdGhpcy4KKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBl
KSA9PSAxNiwgIkFzc3VtZWQgYnkgZ2VuZXJhdGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgICAg
ICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMTYpLCBNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBqaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
Y29uc3RleHByIEdQUlJlZyB2bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjEg
fTsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQ
UkluZm86OmFyZ3VtZW50R1BSMiB9OworI2Vsc2UKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyB2
bVBvaW50ZXJBcmdHUFIgeyBHUFJJbmZvOjphcmd1bWVudEdQUjAgfTsKKyAgICAgICAgY29uc3Rl
eHByIEdQUlJlZyBieXRlY29kZUluZGV4Qml0c0FyZ0dQUiB7IEdQUkluZm86OmFyZ3VtZW50R1BS
MSB9OworI2VuZGlmCisgICAgICAgIGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoJnZtKSwgdm1Qb2lu
dGVyQXJnR1BSKTsKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBieXRlY29kZUlu
ZGV4Qml0c0FyZ0dQUik7CisKICAgICAgICAgb3BlcmF0aW9uT3B0aW1pemVDYWxsID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKIAorI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisg
ICAgICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOyAvLyB0YXJnZXRQQworICAg
ICAgICBqaXQucG9wKEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7IC8vIGRhdGFCdWZmZXIgKHVu
dXNlZCwgYnV0IG5lZWRzIHBvcHBpbmcgdG8gcmVzdG9yZSBzdGFjaykKKyNlbmRpZgorCiAgICAg
ICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFs
dWVHUFIpKTsKICAgICAgICAgaml0LmZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKIApAQCAtMTM0NywxMSArMTMyMyw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZN
JiB2bSkKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLSNpZiBDUFUoWDg2XzY0
KQotICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IGppdC5wb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0xMzYyLDcgKzEzMzQsNiBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRv
cihWTSYgdm0pCiAjZW5kaWYKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQotI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2Nv
cGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTE1NzMsNTcg
KzE1NDQsNDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGUKIHsKICAgICBsaW5rQWxsU2xvd0Nh
c2VzKGl0ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGxvYWRHbG9i
YWxPYmplY3QoYXJndW1lbnRHUFIwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhbmRs
ZVRyYXBzLCBhcmd1bWVudEdQUjApOwotI2Vsc2UKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVj
b2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0
ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVj
b2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNoZWNrVHJhcHM6OmJ5dGVjb2RlT2Zmc2V0R1BSOworCisgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CiAgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKIH0KIAotI2lmIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6Om9wX2NoZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVy
czo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwot
ICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKLSNl
bmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSMzsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFt
ZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2hlY2tUcmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAgICAg
Y29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBjb2RlQmxvY2tH
UFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoY29kZUJsb2NrR1BSLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIAotICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25IYW5kbGVUcmFwcyk+KGdsb2JhbE9iamVj
dEdQUik7Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2Vw
dGlvbkNoZWNrKHZtKTsKKyAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChieXRlY29kZU9mZnNl
dEdQUiwgZ2xvYmFsT2JqZWN0R1BSKSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3Ao
WDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgaml0LnJldCgp
OworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9w
ZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKyAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
SGFuZGxlVHJhcHMpPihnbG9iYWxPYmplY3RHUFIpOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBv
cGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworCisgICAgaml0LmVtaXRDVElU
aHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNhbGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRo
dW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYW5kbGVUcmFwcykpOwotICAgIGF1dG8g
aGFuZGxlciA9IHZtLmdldENUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4
Y2VwdGlvbkdlbmVyYXRvcik7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywg
Q29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAg
ICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJCYXNlbGluZTogb3BfY2hlY2tfdHJhcHNfaGFuZGxlciIpOwogfQotI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfcmVnZXhwKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDEyMzI3YmI2ZTdiOTVh
ODc3ODJhOWY3MzAwM2FhZDA0M2M5YzU5YWQuLjhlYjIxMzhhMTFjOWNiOTY5OWZjM2ZhMjlkYWEy
MmU1NTJiMTljODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEpJVCkKICNpbmNsdWRl
ICJKSVQuaCIKIAorI2luY2x1ZGUgIkJhc2VsaW5lSklUUmVnaXN0ZXJzLmgiCiAjaW5jbHVkZSAi
Q2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKQEAgLTUyLDExICs1MywxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKIAotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRC
eVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6
OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0
Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNS
OworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpGYXN0UGF0
aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpT
Uik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpA
QCAtMTAxLDUxICsxMDIsMjIgQEAgdm9pZCBKSVQ6OmdlbmVyYXRlR2V0QnlWYWxTbG93Q2FzZShj
b25zdCBPcGNvZGVUeXBlJiBieXRlY29kZSwgVmVjdG9yPFNsb3dDYXNlRW4KICAgICBpZiAoIWhh
c0FueVNsb3dDYXNlcyhpdGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLQotICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFs
c1ttX2dldEJ5VmFsSW5kZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0
aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0
aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRB
cmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
ZmlsZUdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGFyZzNKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAzPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBhcmc0SlNSID0gcHJl
ZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgND4oKTsKLQotICAgIHN0YXRpY19hc3Nl
cnQoIUJhc2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1Iub3ZlcmxhcHMoYXJnNEpTUikp
OwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlK
U1IsIGFyZzRKU1IpOwotICAgIG1vdmVWYWx1ZVJlZ3MoQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVy
czo6YmFzZUpTUiwgYXJnM0pTUik7Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RH
UFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRl
eCwgc3R1YkluZm9HUFIpOwotICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRl
Y29kZSwgT3Bjb2RlVHlwZTo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2Zp
bGVHUFIpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJl
c3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGFy
ZzNKU1IsIGFyZzRKU1IpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVp
bnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFT
U0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwor
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5k
ZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQ
YXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpwcm9maWxlR1BSOworCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0K
LSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOyAvLyBhcmcx
IGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFy
Z3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7Ci0gICAgc3RhdGljX2Fzc2VydChCYXNlbGlu
ZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKSA9PSByZWdUMCk7Ci0gICAg
c3RhdGljX2Fzc2VydChCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5wYXls
b2FkR1BSKCkgPT0gcmVnVDEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVy
SW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcGNvZGVUeXBlOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJh
eVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJ
U3R1YihzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCku
Z2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CkBAIC0xNTUsOCAr
MTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICBnZW5lcmF0ZUdldEJ5VmFsU2xv
d0Nhc2UoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpLCBpdGVyKTsKIH0KIAot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihW
TSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24g
Y2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAg
Ly8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWlu
ZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTY0LDM1ICsxMzUs
MzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
Z2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9j
aygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7
CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3Vt
ZW50R1BSNDsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OmJhc2VK
U1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpwcm9wZXJ0eUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpn
bG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFs
OjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6cHJvZmlsZUdQUjsKKworICAgIGpp
dC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lR2V0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0eUpTUi5w
YXlsb2FkR1BSKCk7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8
fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50
R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2Fk
UHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBB
cmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgcHJv
ZmlsZUdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVy
cmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVk
ZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQu
Y2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgcHJvZmlsZUdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7
CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQot
ICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0
aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2Fs
bCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV92YWxfY2FsbFNsb3dPcGVyYXRp
b25UaGVuQ2hlY2tFeGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMjAxLDEwICsxNzIsMTAgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
R2V0QnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5VmFs
UmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6
R2V0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlW
YWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6
OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVy
dHlKU1IpOwpAQCAtMjMwLDU1ICsyMDEsMjkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXN1bHRKU1IpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVt
aXRTbG93X29wX2dldF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIEFTU0VSVChoYXNBbnlTbG93Q2Fz
ZXMoaXRlcikpOwotICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBKSVRHZXRCeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeVZhbHNbbV9nZXRCeVZhbEluZGV4KytdOwotICAgIExh
YmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJp
dmF0ZU5hbWU+KCk7Ci0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlv
bkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09w
ZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZl
cnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIHByb3BlcnR5SlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwg
Mz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2Fk
Q29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BS
KTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0
eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVy
dHlKU1IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY3VycmVudEluc3RydWN0aW9uKTsKLSAg
ICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2Rl
T2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOworICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5VmFsc1ttX2dldEJ5VmFsSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlWYWw6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIzOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMjsgLy8gYXJnMSBhbHJlYWR5IHVzZWQuCi0gICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BS
KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lR2V0QnlWYWxS
ZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQo
cHJvcGVydHlHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXROYWtl
ZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAg
ZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFt
ZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeVZhbFJl
Z2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVl
SlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7
CiB9CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHZW5lcmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBKSVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRl
ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGlu
ZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdo
dCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2so
KS4KQEAgLTI4NiwzNCArMjMxLDM0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHCiAgICAgLy8g
Q2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYg
KCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpHZXRCeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJ
bmZvR1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
cmVnVDE7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNB
Uk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwg
cHJvcGVydHlKU1IpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xv
d09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBz
bG93IG9wZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3Vt
ZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25HZXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVz
cyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24o
KSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAg
Ly8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9u
Q2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxp
bmU6IHNsb3dfb3BfeHh4X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb24iKTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9p
ZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKQEAgLTMyMSw5ICsyNjYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9z
ZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBicmFuZCA9IGJ5dGVjb2RlLm1fYnJhbmQ7CiAKLSAgICB1c2luZyBCYXNlbGluZVBy
aXZhdGVCcmFuZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVByaXZhdGVC
cmFuZFJlZ2lzdGVyczo6YnJhbmRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQ
cml2YXRlQnJhbmQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlBy
aXZhdGVCcmFuZDo6YnJhbmRKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlBy
aXZhdGVCcmFuZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihiYXNlLCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJyYW5k
LCBicmFuZEpTUik7CkBAIC0zNTQsNDYgKzI5OSwyMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VgogewogICAgIFVOVVNFRF9QQVJBTShjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCi0gICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYg
Z2VuID0gbV9wcml2YXRlQnJhbmRBY2Nlc3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4Kytd
OwotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wU2V0UHJpdmF0ZUJyYW5kPigpOwotCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0
eXBlKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24s
IDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJh
c2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dP
cGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7
Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBz
dHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2Us
IGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwg
YnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIGJy
YW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBi
eXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0
ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBKSVRQ
cml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNb
bV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0ZUJyYW5kOjpTbG93UGF0aDo6c3R1Yklu
Zm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQ
UiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCks
IGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1c2VkLgotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJyYW5kR1BSID0gQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3Nl
cnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQogICAgIGxvYWRDb25zdGFudChnZW4ubV91
bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOworCiAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFpdHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0
UHJpdmF0ZUJyYW5kT3B0aW1pemUpPjo6QXJndW1lbnRUeXBlcywgRnVuY3Rpb25UcmFpdHM8ZGVj
bHR5cGUob3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+OjpBcmd1bWVudFR5cGVzPjo6
dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYKKyAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9Q
dHJUYWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBD
YWxsKCkpOwogfQpAQCAtNDA0LDkgKzMyNCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3By
aXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYnJhbmQgPSBieXRlY29kZS5tX2JyYW5kOwogCi0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRl
QnJhbmRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQcml2YXRlQnJhbmRS
ZWdpc3RlcnM6OmJyYW5kSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lUHJpdmF0ZUJyYW5kUmVnaXN0
ZXJzOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0
ZUJyYW5kOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OmJyYW5kSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRl
QnJhbmQ6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihicmFuZCwgYnJh
bmRKU1IpOwpAQCAtNDI4LDQ5ICszNDgsMjMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfcHJp
dmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIG1f
cHJpdmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKGdlbik7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xv
d19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
Q2hlY2tQcml2YXRlQnJhbmQ+KCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlKTsKLQotICAg
IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuID0gbV9wcml2YXRlQnJhbmRBY2Nl
c3Nlc1ttX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4KytdOwotICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5n
IFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGlt
aXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHVi
SW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93
T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBicmFuZEpTUiA9IHBy
ZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2Vk
U3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9icmFuZCwgYnJhbmRKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xv
d09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
c3R1YkluZm9HUFIsIGJhc2VKU1IsIGJyYW5kSlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiA9
IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXNbbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCsrXTsKKwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQcml2YXRlQnJhbmQ6OlNsb3dQYXRoOjpi
eXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHJpdmF0
ZUJyYW5kOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
ID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0
ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSB1
c2VkLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lUHJpdmF0ZUJyYW5k
UmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJy
YW5kR1BSID0gQmFzZWxpbmVQcml2YXRlQnJhbmRSZWdpc3RlcnM6OmJyYW5kSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FS
TTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQoYnJhbmRHUFIgPT0gYXJndW1lbnRHUFIxKTsKLQog
ICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1
YkluZm9HUFIpOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RnVuY3Rpb25UcmFp
dHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSk+OjpBcmd1bWVu
dFR5cGVzLCBGdW5jdGlvblRyYWl0czxkZWNsdHlwZShvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9w
dGltaXplKT46OkFyZ3VtZW50VHlwZXM+Ojp2YWx1ZSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0u
Z2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFn
PigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKyAgICBlbWl0TmFrZWRO
ZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93
T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQpAQCAtNDgzLDE5ICszNzcsMjAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdp
c3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlWYWxS
ZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6dmFsdWVK
U1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0g
ICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6cHJvZmlsZUdQUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnZhbHVlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvZmlsZUdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHZhbHVlSlNSKTsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0
ZWNvZGUsIE9wOjpNZXRhZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7
CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZSk7Ci0gICAg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRH
UFIoKSwgcHJvZmlsZUdQUik7Ci0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5
dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQXJyYXlQcm9maWxlKCksIHByb2ZpbGVHUFIp
OworCisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNS
LnBheWxvYWRHUFIoKSwgLyogc2NyYXRjaEdQUjogKi8gc3R1YkluZm9HUFIpOwogCiAgICAgSklU
UHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAogICAgICAgICBudWxscHRyLCBudWxscHRyLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCkBAIC01MjksNzYgKzQyNCwyNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXRfb3BfcHV0X2J5X3ZhbDxPcFB1dEJ5VmFsRGlyZWN0PihjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3Bf
cHV0X2J5X3ZhbF9kaXJlY3Q7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2U7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIHByb3BlcnR5OwotICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZTsKLSAgICBFQ01B
TW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKLQotICAgIGF1dG8gbG9hZCA9IFsm
XShhdXRvIGJ5dGVjb2RlKSB7Ci0gICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAg
ICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICAgICAgdmFsdWUgPSBieXRl
Y29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7Ci0g
ICAgfTsKLQotICAgIGlmIChpc0RpcmVjdCkKLSAgICAgICAgbG9hZChjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCkpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZChjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCkpOwotCi0gICAgSklUUHV0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKLQotICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsK
LQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9u
ID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAy
PigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5m
b0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgNT4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKLSAgICBpZiAoaXNEaXJlY3QpCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRlcklu
dG9NZXRhZGF0YShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCksIE9w
UHV0QnlWYWxEaXJlY3Q6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxl
R1BSKTsKLSAgICBlbHNlCi0gICAgICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0QnlWYWw+KCksIE9wUHV0QnlWYWw6Ok1ldGFkYXRh
OjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
cGVydHksIHByb3BlcnR5SlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCB2
YWx1ZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFs
dWVKU1IsIHN0dWJJbmZvR1BSLCBwcm9maWxlR1BSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZh
bHNbbV9wdXRCeVZhbEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlB1dEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCi0gICAgLy8gVGhleSBhcmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3Qg
Y2xvYmJlcmVkLgotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAg
IC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4
cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9m
aWxlR1BSID0gcmVnVDM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0
OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAg
ICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJ
bmZvR1BSKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0
X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
LSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQorCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3df
b3BfcHV0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhV
TktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3Bf
cHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgpAQCAtNjA2LDM5ICs0NTIsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdl
bmVyYXQKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBq
aXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdG9p
biA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUpOwogCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNTsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgdmFsdWVHUFIgPSBCYXNlbGluZVB1dEJ5VmFsUmVnaXN0ZXJzOjp2YWx1ZUpTUi5wYXlsb2Fk
R1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1Q0OwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnBy
b2ZpbGVHUFI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1
OwotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZChiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIsIHByb2ZpbGVHUFIpOwotICAgICAgICBBU1NFUlQoIXVzZWQuY29udGFpbnMocmVn
VDQpKTsKLSAgICAgICAgQVNTRVJUKCF1c2VkLmNvbnRhaW5zKHJlZ1Q1KSk7Ci0gICAgfQorICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6YmFzZUpTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb3BlcnR5SlNSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6dmFsdWVKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpwcm9maWxlR1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6Omdsb2JhbE9iamVjdEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29k
ZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKIAorICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOwog
CisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zm
c2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
KTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAg
ICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRP
Zkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVu
dHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdG9pbj4oc3R1YkluZm9HUFIsCisgICAgICAgIGds
b2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQ
UiwgcHJvZmlsZUdQUik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwog
Ci0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0
T3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQ
Uiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIpOwotICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAo
QWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7
CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhj
ZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
QmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVy
LmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5l
OiBzbG93X29wX3B1dF9ieV92YWxfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb24i
KTsKIH0KLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewpAQCAtNjQ3LDEwICs0OTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1
YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lz
dGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6
dmFsdWVKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVQdXRCeVZhbFJlZ2lzdGVyczo6c3R1YkluZm9H
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVydHlKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OkZhc3RQYXRoOjpzdHViSW5mb0dQ
UjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwpAQCAtNjc5LDU2ICs1
MjIsMjcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hv
dWxkRmlsdGVyQmFzZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9u
YW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAg
ICBKSVRQdXRCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4
KytdOwotCi0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7
Ci0KLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlWYWxE
ZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAg
IGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xv
d09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyB2YWx1ZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRp
b24sIDM+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFy
Z3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDQ+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9D
b25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09w
ZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgYmFz
ZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5mb0dQUiwgVHJ1c3RlZEltbVB0cihu
dWxscHRyKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgSklU
UHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsK
IAotICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIC8vIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKLSAgICAvLyBjb25zdGV4cHIgR1BSUmVn
IHZhbHVlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJl
Z1QzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNsb3dQYXRoOjpieXRlY29k
ZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OlNs
b3dQYXRoOjpzdHViSW5mb0dQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBsb2FkQ29uc3RhbnQoZ2Vu
Lm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVw
YXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dl
ZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQor
CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29s
ZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxT
bG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICAv
LyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRo
IHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1w
dGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBD
YWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtNzM2LDM0ICs1NTAsMzkgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEcKICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxsSGVs
cGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGlu
ZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgdXNpbmcgU2xvd09w
ZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0
aW1pemUpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IEJhc2VsaW5lUHV0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxv
YWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gQmFzZWxpbmVQdXRCeVZh
bFJlZ2lzdGVyczo6dmFsdWVKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c3R1YkluZm9HUFIgPSByZWdUMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gcmVnVDQ7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpi
YXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6cHJvcGVy
dHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnByb2ZpbGVHUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpTbG93UGF0aDo6Z2xv
YmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZhbDo6
U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpQdXRCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOwogCisgICAgaml0LmVtaXRDVElU
aHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0
b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSByZWdUNDsKLQorICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgaml0
LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBnbG9iYWxPYmpl
Y3RHUFIpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBDb2RlQmxv
Y2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIC8vIExv
YWRpbmcgbnVsbHB0ciB0byB0aGlzIHJlZ2lzdGVyIGlzIG5lY2Vzc2FyeSBmb3Igc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGwKKyAgICAvLyB0byBub3QgY2xvYmJlciBnbG9iYWxPYmplY3RH
UFIgb24gQVJNX1RIVU1CMiwgYW5kIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KKyAgICBqaXQubW92
ZShUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBwcm9maWxlR1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1
bWVudHNGb3JJbmRpcmVjdENhbGw8U2xvd09wZXJhdGlvbj4oc3R1YkluZm9HUFIsCisgICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgYmFzZUpTUiwgcHJvcGVydHlKU1IsIHZhbHVlSlNSLCBzdHViSW5m
b0dQUiwgcHJvZmlsZUdQUik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhub25BcmdHUFIwLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcp
OwogCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVm
aW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwot
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0LmVtaXRDVElUaHVua0Vw
aWxvZ3VlKCk7CiAKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5l
SklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7Ci0g
ICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7CisgICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlv
biBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNo
ZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9wdXRfcHJp
dmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9n
ZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTg0MSwxMCArNjYwLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlu
a2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVz
aW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGlu
ZURlbEJ5SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZURlbEJ5SWRS
ZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVy
czo6c2NyYXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6
YmFzZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6RmFzdFBh
dGg6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6
RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VK
U1IsIGJhc2UpOwpAQCAtODc1LDYyICs2OTQsMzYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVsX2J5
X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZz
ZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRl
bnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KICAgICBKSVREZWxCeUlkR2VuZXJhdG9y
JiBnZW4gPSBtX2RlbEJ5SWRzW21fZGVsQnlJZEluZGV4KytdOwogCiAgICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotI2lmICFF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5
cGUob3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAg
dXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnBy
b3BlcnR5R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6ZWNtYU1vZGVHUFI7CiAKLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4
LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBiYXNlSlNS
KTsKLSAgICBjYWxsT3BlcmF0aW9uPFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAot
ICAgICAgICBnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBD
YWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2so
bV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihieXRl
Y29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29k
ZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVudEdQUjQ7Ci0KICAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VHUFIpOwogICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlD
b2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpLCBwcm9wZXJ0
eUdQUik7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGUubV9lY21hTW9kZS52YWx1ZSgp
KSwgZWNtYU1vZGVHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xv
d19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHJldHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwot
ICAgIHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3df
b3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgYm94Qm9vbGVhbihyZXN1bHRKU1Iu
cGF5bG9hZEdQUigpLCByZXN1bHRKU1IpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCByZXN1bHRKU1IpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1
ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxfYnlfaWRfcHJlcGFyZUNhbGxHZW5l
cmF0b3IoVk0mIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVu
Y3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNl
CiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVj
dCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtOTM4LDMz
ICs3MzEsMzYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0
ZUJ5SWRPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIwOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlk
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93
UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpE
ZWxCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkRlbEJ5SWQ6OlNsb3dQYXRoOjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6RGVsQnlJZDo6U2xvd1BhdGg6OnByb3BlcnR5R1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeUlkOjpTbG93UGF0aDo6ZWNtYU1vZGVH
UFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8vIENhbGwgc2xv
dyBvcGVyYXRpb24KICAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7Ci0KLSAgICBjb25zdGV4
cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BS
ID0gYXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0KLSAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhhcmd1
bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVj
dEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
Z2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQ
UiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsK
KyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0R1BSLCBz
dHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVydHlHUFIsIGVjbWFNb2RlR1BSKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0gYXJn
dW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0dWJJ
bmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0
LmJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIHJldHVyblZhbHVlSlNSKTsKIAotICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQuZmFy
SnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGppdC5y
ZXQoKTsKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwgY2Fs
bCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0
Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X2RlbF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2RlbF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC05NzMsMTEgKzc2
OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0
eTsKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAg
dXNpbmcgQmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cHJvcGVydHlKU1I7Ci0gICAgdXNpbmcg
QmFzZWxpbmVEZWxCeVZhbFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5l
RGVsQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlW
YWxSZWdpc3RlcnM6OnNjcmF0Y2hHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpGYXN0UGF0aDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpEZWxCeVZhbDo6RmFzdFBhdGg6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChiYXNlSlNSLCBiYXNlKTsKQEAgLTEwMTAsNjMgKzgwNiwzNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7Ci0gICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQorICAgIHVpbnQzMl90IGJ5dGVjb2Rl
T2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIEFTU0VSVChCeXRlY29kZUlu
ZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgpOwogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7Ci0KICAgICBKSVREZWxCeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9kZWxCeVZh
bHNbbV9kZWxCeVZhbEluZGV4KytdOwogCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkRlbEJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxC
eVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpTbG93UGF0aDo6ZWNtYU1vZGVHUFI7CisKICAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0
ZXIpOwogCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVy
YXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dP
cGVyYXRpb24sIDA+KCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZl
cnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFs
dWVSZWdzIGJhc2VKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigp
OwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBwcm9wZXJ0eUpTUiA9IHByZWZlcnJlZEFyZ3Vt
ZW50SlNSPFNsb3dPcGVyYXRpb24sIDM+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25z
dGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNl
LCBiYXNlSlNSKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCBwcm9wZXJ0
eUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgcHJvcGVy
dHlKU1IsIFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpKTsKLSNlbHNl
Ci0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKLSAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRl
Y29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIzOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZWNtYU1vZGVHUFIgPSBhcmd1bWVu
dEdQUjQ7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50
SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIGJh
c2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHByb3BlcnR5R1BS
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZS5tX2VjbWFNb2RlLnZhbHVlKCkpLCBl
Y21hTW9kZUdQUik7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29w
X2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4o
KSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHJl
dHVyblZhbHVlR1BSID09IHJlZ1QwKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5L
UykKIAotICAgIHVzaW5nIEJhc2VsaW5lRGVsQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHN0YXRpY19hc3NlcnQocmVzdWx0SlNSLnBheWxvYWRHUFIoKSA9PSBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3Bf
ZGVsX2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIGJveEJvb2xlYW4ocmVzdWx0SlNSLnBh
eWxvYWRHUFIoKSwgcmVzdWx0SlNSKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cmVzdWx0SlNSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVK
U1IpOwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsK
IH0KIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVy
YXRvcihWTSYgdm0pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9kZWxfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiB2bSkKIHsKICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVu
Y3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNl
CiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVj
dCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgpAQCAtMTA3NCwz
MyArODQzLDM2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpz
bG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0CiAgICAgLy8gQ2FsbEZyYW1lOjpj
b2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgaWYgKCFKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBqaXQudGFnUmV0dXJuQWRk
cmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRH
UFIgPSBhcmd1bWVudEdQUjA7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5
VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6
cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkRlbEJ5VmFsOjpT
bG93UGF0aDo6Z2xvYmFsT2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpEZWxCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpEZWxCeVZhbDo6U2xvd1BhdGg6OmVjbWFNb2RlR1BS
OworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxsIHNsb3cg
b3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGVjbWFNb2RlR1BSID0gYXJndW1l
bnRHUFI0OwotCi0gICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCBnbG9iYWxPYmplY3RHUFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoYXJndW1l
bnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RH
UFIpOwotCi0gICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIsIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgZWNtYU1vZGVHUFIpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBn
bG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BS
LCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOwor
ICAgIGppdC5zZXR1cEFyZ3VtZW50czxTbG93T3BlcmF0aW9uPihnbG9iYWxPYmplY3RHUFIsIHN0
dWJJbmZvR1BSLCBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgZWNtYU1vZGVHUFIpOworICAgIHN0YXRp
Y19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKSA9PSBhcmd1
bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9wZXJhdGlvbiB2aWEgU3R1Yklu
Zm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BSMSwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQu
Ym94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgcmV0dXJuVmFsdWVKU1IpOwogCi0gICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJK
dW1wKEFkZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJl
dCgpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisgICAgLy8gVGFpbCBjYWxs
IHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQu
anVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIu
bGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6
IHNsb3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQotI2VuZGlmIC8vIEVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC0xMTA5LDkgKzg4MSw5IEBA
IHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxp
bmVHZXRCeUlkUmVnaXN0ZXJzOjpiYXNlSlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJl
Z2lzdGVyczo6cmVzdWx0SlNSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6
c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OmJh
c2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6RmFzdFBhdGg6OnN0
dWJJbmZvR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFzZUpT
Uik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVnKTsK
QEAgLTExMzgsNDkgKzkxMCwyNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHJ5R2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91
bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0KLSNpZiAhRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0gICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJh
dGlvblRyeUdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmpl
Y3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVy
cmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3Bl
cmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHVi
SW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJv
bUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCku
cmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJf
dCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQo
Qnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdl
biA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpwcm9w
ZXJ0eUdQUjsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0
R1BSID0gYXJndW1lbnRHUFIyOwogICAgIG1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVP
ZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNfYXNzZXJ0
KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9hZENvbnN0
YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0Jp
dHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNs
dHlwZShvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBF
TkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSks
IGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5h
a2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTExOTEsOSArOTQxLDkgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlVlJlZyA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKLSAgICB1c2luZyBCYXNlbGluZUdl
dEJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0
ZXJzOjpyZXN1bHRKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpzdHVi
SW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAt
MTIxOSw0OSArOTY5LDI3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF9kaXJlY3QoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZF9kaXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
JihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
LQotICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5k
ZXgrK107Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUo
b3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDA+KCk7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHByZWZlcnJlZEFyZ3VtZW50R1BS
PFNsb3dPcGVyYXRpb24sIDE+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIGJhc2VKU1Ig
PSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotCi0gICAgbG9hZEds
b2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxp
bmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9u
PFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENvZGVCbG9jaywg
KmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERp
cmVjdD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVC
bG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZzZXRH
UFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpz
dHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xv
d1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0
ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVn
IHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBzdGF0aWNf
YXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotCiAgICAgbG9h
ZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1YkluZm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQ
Uik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQp
LnJhd0JpdHMoKSksIHByb3BlcnR5R1BSKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpLCBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpPjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
LmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1
YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFz
ZWxpbmVHZXRCeUlkUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk+Ojp2YWx1ZSk7
CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X2lk
X2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpOworCisgICAgc3RhdGljX2Fzc2VydChCYXNlbGluZUpJVFJlZ2lzdGVy
czo6R2V0QnlJZDo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKQEAgLTEyNzIsMTUgKzEw
MDAsMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2VWUmVnID0gYnl0ZWNv
ZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29k
ZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAotICAgIHVzaW5nIEJh
c2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6YmFzZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5
SWRSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRSZWdpc3Rl
cnM6OnN0dWJJbmZvR1BSOwotICAgIHVzaW5nIEJhc2VsaW5lR2V0QnlJZFJlZ2lzdGVyczo6c2Ny
YXRjaEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6cmVzdWx0SlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpGYXN0UGF0aDo6c3R1Yklu
Zm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OkZhc3RQYXRo
OjpzY3JhdGNoR1BSOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywgYmFz
ZUpTUik7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VKU1IsIGJhc2VWUmVn
KTsKLSAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKworICAgIGlmICgqaWRlbnQgPT0gdm0oKS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgIGxv
YWQ4RnJvbU1ldGFkYXRhKGJ5dGVjb2RlLCBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjpvZmZzZXRPZk1v
ZGVNZXRhZGF0YSgpICsgR2V0QnlJZE1vZGVNZXRhZGF0YTo6b2Zmc2V0T2ZNb2RlKCksIHNjcmF0
Y2hHUFIpOwogICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5
TGVuZ3RoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwoCkBAIC0xMzEyLDUxICsxMDQwLDY2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wR2V0QnlJZD4oKTsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxp
bmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7Ci0KLSAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwot
ICAgIAotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJl
ZEFyZ3VtZW50SlNSPFNsb3dPcGVyYXRpb24sIDI+KCk7Ci0KLSAgICBsb2FkR2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJh
dGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1Yklu
Zm9HUFIsIGJhc2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJh
d0JpdHMoKSk7Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOworICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlH
UFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBsaW5rQWxsU2xv
d0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IGFyZ3VtZW50R1BSMjsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5
dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBh
cmd1bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRC
eUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJh
c2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8ICFpc0FSTTY0KCkpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjM7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1f
dW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKSwgcHJv
cGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7
Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFf
Q1RJX1RIVU5LUykKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxpbmVHZXRCeUlkUmVnaXN0ZXJz
OjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZt
KCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVj
a0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQoreworICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBm
dW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1
c2UKKyAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2Jq
ZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCisgICAgLy8g
REZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2Jq
ZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaAorICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCku
CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkdldEJ5SWQ6OmJhc2VKU1I7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpnbG9iYWxPYmplY3RHUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZv
R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6
cHJvcGVydHlHUFI7CisKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKworICAgIC8v
IENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPFNsb3dP
cGVyYXRpb24+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1IsIHByb3BlcnR5
R1BSKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRp
b24sIDE+KCkgPT0gYXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVy
YXRpb24gdmlhIFN0dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0
clRhZyk7CisKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKKworICAgIC8vIFRhaWwg
Y2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0g
aml0Lmp1bXAoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOworICAgIHBhdGNoQnVm
ZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIo
Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2Vs
aW5lOiBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
biIpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7CkBAIC0xMzY1LDEwICsx
MTA4LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1ZS
ZWcgPSBieXRlY29kZS5tX3RoaXNWYWx1ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
ICYobV91bmxpbmtlZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CiAKLSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6YmFzZUpTUjsK
LSAgICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6dGhpc0pTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUdldEJ5SWRXaXRoVGhpc1JlZ2lzdGVyczo6cmVzdWx0SlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpzdHViSW5mb0dQUjsKKyAg
ICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpiYXNlSlNSOwor
ICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnRoaXNKU1I7
CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6cmVzdWx0
SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OkZh
c3RQYXRoOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZS
ZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodGhpc1ZSZWcsIHRoaXNK
U1IpOwpAQCAtMTM5NSw5NiArMTEzOCwzMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnLCByZXN1bHRKU1IpOwogfQogCi0jaWYgRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3IoVk0mIHZtKQot
ewotICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKLSAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgLy8gREZHL0ZUTCBtYXkgaW5saW5l
IGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5v
dCBtYXRjaAotICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCi0gICAgQ0NhbGxIZWxwZXJz
IGppdDsKLQotICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgaml0LnN0b3JlMzIoYnl0
ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcykpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1
bWVudEdQUjU7Ci0gICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BS
MTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIg
R1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRpY19hc3NlcnQoYmFz
ZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KLSAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7Ci0g
ICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7Ci0KLSAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BS
LCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwotICAgIGppdC5wcmVwYXJlQ2Fs
bE9wZXJhdGlvbih2bSk7Ci0KLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRh
Zyk7Ci0gICAgZWxzZQotICAgICAgICBqaXQucmV0KCk7Ci0KLSAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNU
SVRodW5rKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQ
dHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkV2l0aFRoaXM+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkp
OwotCi0gICAgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0
aFRoaXNbbV9nZXRCeUlkV2l0aFRoaXNJbmRleCsrXTsKLSAgICAKLSAgICBMYWJlbCBjb2xkUGF0
aEJlZ2luID0gbGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1
c2luZyBTbG93T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0
aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVk
QXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAg
ICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgYmFzZUpTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFNs
b3dPcGVyYXRpb24sIDI+KCk7Ci0gICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBw
cmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLCB0aGlzSlNSKTsKLSAgICBjYWxsT3BlcmF0aW9u
PFNsb3dPcGVyYXRpb24+KAotICAgICAgICBBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLAotICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIHN0dWJJbmZvR1BSLCBiYXNlSlNSLCB0aGlzSlNSLAotICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV91bmxpbmtlZENv
ZGVCbG9jaywgKmlkZW50KS5yYXdCaXRzKCkpOwotI2Vsc2UKLSAgICBWTSYgdm0gPSB0aGlzLT52
bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNl
dCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVj
b2RlSW5kZXgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0QnlJZFdpdGhUaGlzPigpOworICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX3Vu
bGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKKyAgICBK
SVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNXaXRoVGhpc1ttX2dl
dEJ5SWRXaXRoVGhpc0luZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OlNsb3dQYXRoOjpzdHViSW5m
b0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpT
bG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwo
KTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMzsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjI7IC8vIGFyZzEgYWxyZWFkeSBpbiB1c2UuCi0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gQmFzZWxpbmVHZXRCeUlkV2l0aFRoaXNSZWdp
c3RlcnM6OmJhc2VKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdGhpc0dQ
UiA9IEJhc2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjp0aGlzSlNSLnBheWxvYWRHUFIo
KTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0g
ICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29u
c3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVudCkucmF3
Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0
dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0j
ZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBzdGF0aWNfYXNzZXJ0KEJh
c2VsaW5lR2V0QnlJZFdpdGhUaGlzUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVK
U1IpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OnJlc3VsdEpTUiA9PSByZXR1cm5WYWx1
ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkp
OwogfQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBh
cmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25U
aGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIC8vIFRoZSB0aHVuayBn
ZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8g
QmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0
aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29k
ZUJsb2NrKCkuCkBAIC0xNDkyLDM1ICsxMTcxLDM1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNh
CiAgICAgLy8gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICBDQ2FsbEhlbHBlcnMgaml0Owog
Ci0gICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAg
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBk
ZWNsdHlwZShvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4
cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIzOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRoaXM6OmJhc2VKU1I7CisgICAgdXNpbmcg
QmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6dGhpc0pTUjsKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6Z2xvYmFs
T2JqZWN0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkV2l0aFRo
aXM6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0QnlJZFdpdGhUaGlzOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNp
bmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWRXaXRoVGhpczo6U2xvd1BhdGg6OnByb3Bl
cnR5R1BSOworCisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CisKKyAgICAvLyBDYWxs
IHNsb3cgb3BlcmF0aW9uCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0Zv
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwotCi0gICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjU7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBjb25zdGV4cHIgR1BS
UmVnIGJhc2VHUFIgPSByZWdUMDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHRoaXNHUFIgPSByZWdU
MTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFI0OwotICAg
IHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0g
ICAgc3RhdGljX2Fzc2VydCh0aGlzR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlv
bj4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwgdGhpc0pTUiwgcHJvcGVy
dHlHUFIpOworICAgIHN0YXRpY19hc3NlcnQocHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJh
dGlvbiwgMT4oKSA9PSBhcmd1bWVudEdQUjEsICJOZWVkZWQgZm9yIGJyYW5jaCB0byBzbG93IG9w
ZXJhdGlvbiB2aWEgU3R1YkluZm8iKTsKKyAgICBqaXQuY2FsbChBZGRyZXNzKGFyZ3VtZW50R1BS
MSwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9u
UHRyVGFnKTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VH
UFIsIHRoaXNHUFIsIHByb3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOwor
ICAgIC8vIFRhaWwgY2FsbCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2Vw
dGlvbkNoZWNrID0gaml0Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwot
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRD
VElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uIik7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewpAQCAtMTUzNCwxMCArMTIxMywxMCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAvLyB0byBqdXN0IGFmdGVyIHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHJl
Z2lzdGVycyAnaG90UGF0aEJlZ2luJywgYW5kIHdlIGdlbmVyYXRlIGNvZGUKICAgICAvLyBzdWNo
IHRoYXQgdGhlIFN0cnVjdHVyZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0IHRoZSBzYW1lIGRpc3Rh
bmNlIGZyb20gdGhpcy4KIAotICAgIHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6YmFz
ZUpTUjsKLSAgICB1c2luZyBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSOwotICAg
IHVzaW5nIEJhc2VsaW5lUHV0QnlJZFJlZ2lzdGVyczo6c3R1YkluZm9HUFI7Ci0gICAgdXNpbmcg
QmFzZWxpbmVQdXRCeUlkUmVnaXN0ZXJzOjpzY3JhdGNoR1BSOworICAgIHVzaW5nIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6UHV0QnlJZDo6RmFzdFBhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpQdXRCeUlkOjpGYXN0UGF0aDo6c2NyYXRjaEdQUjsKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodmFsdWVWUmVnLCB2YWx1ZUpTUik7CkBAIC0xNTYxLDcgKzEyNDAsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICByZXNldFNQKCk7IC8vIFdlIG1pZ2h0IE9TUiBleGl0IGhlcmUsIHNvIHdlIG5lZWQg
dG8gY29uc2VydmF0aXZlbHkgcmVzZXQgU1AKICAgICBhZGRTbG93Q2FzZSgpOwogICAgIG1fcHV0
QnlJZHMuYXBwZW5kKGdlbik7Ci0gICAgCisKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVj
dHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklY
TUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5
IHRvIHJlZHVjZSBjb2RlIHNpemUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTM5NQpAQCAtMTU3MCw1NiArMTI0OSwzMCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0
eSkpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKLSAgICAKLSAgICBKSVRQdXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRzW21fcHV0QnlJZEluZGV4KytdOwotCi0jaWYg
IUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dPcGVyYXRpb24gPSBkZWNs
dHlwZShvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwg
MD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcHJlZmVycmVkQXJndW1l
bnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgdmFs
dWVKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAyPigpOwotICAgIGNv
bnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09w
ZXJhdGlvbiwgMz4oKTsKLQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsK
LSAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0
dWJJbmZvR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUs
IHZhbHVlSlNSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwg
YmFzZUpTUik7Ci0gICAgY2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJh
c2VKU1IsCi0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQpLnJhd0JpdHMoKSk7
Ci0jZWxzZQotICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlkPigpOworICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJihtX3VubGlua2VkQ29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKTsKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5SWRz
W21fcHV0QnlJZEluZGV4KytdOworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1
dEJ5SWQ6OlNsb3dQYXRoOjpieXRlY29kZU9mZnNldEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6cHJvcGVydHlHUFI7CisKKyAg
ICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVy
KTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQ
UjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNl
dEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIz
OyAvLyBhcmcxIGFscmVhZHkgaW4gdXNlLgotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIg
PSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OnZhbHVlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBCYXNlbGluZVB1dEJ5SWRSZWdpc3RlcnM6OmJhc2VK
U1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1
bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAh
aXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7
Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgs
IHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxv
Y2ssICppZGVudCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXROYWtlZE5lYXJD
YWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9wdXRfYnlfaWRfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0gICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0
Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKLSNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGVtaXROYWtlZE5l
YXJDYWxsKHZtKCkuZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0K
IAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9y
KFZNJiB2bSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX3B1dF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7CiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9u
IGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAg
IC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVp
bmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KQEAgLTE2MjcsMzUgKzEy
ODAsMzUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfcHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG8KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBpZiAoIUpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNz
KCk7CisgICAgdXNpbmcgU2xvd09wZXJhdGlvbiA9IGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZSk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFIyOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlk
OjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1
ZUpTUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJZDo6U2xvd1BhdGg6
Omdsb2JhbE9iamVjdEdQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlJ
ZDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zmc2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpQdXRCeUlkOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OlNsb3dQYXRoOjpwcm9wZXJ0eUdQUjsKKworICAgIGpp
dC5lbWl0Q1RJVGh1bmtQcm9sb2d1ZSgpOworCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFI1OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1Yklu
Zm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJl
Z1QxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgc3RhdGljX2Fzc2VydChi
YXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHZhbHVlR1BSID09IGFyZ3VtZW50R1BSMSk7Ci0KKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9i
amVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8U2xvd09wZXJhdGlvbj4oZ2xvYmFsT2JqZWN0
R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVKU1IsIGJhc2VKU1IsIHByb3BlcnR5R1BSKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHByZWZlcnJlZEFyZ3VtZW50R1BSPFNsb3dPcGVyYXRpb24sIDE+KCkgPT0g
YXJndW1lbnRHUFIxLCAiTmVlZGVkIGZvciBicmFuY2ggdG8gc2xvdyBvcGVyYXRpb24gdmlhIFN0
dWJJbmZvIik7CisgICAgaml0LmNhbGwoQWRkcmVzcyhhcmd1bWVudEdQUjEsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAKLSAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGlt
aXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgdmFsdWVHUFIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKLSAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5l
bWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOwogCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRH
UFIxLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRp
b25QdHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LnJldCgpOworICAgIC8vIFRhaWwgY2Fs
bCB0byBleGNlcHRpb24gY2hlY2sgdGh1bmsKKyAgICBKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0
Lmp1bXAoKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29w
X3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3B1dF9i
eV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbiIpOwogfQotI2VuZGlmIC8v
IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewpAQCAtMTY2NCw5ICsxMzE3
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZVZSZWcgPSBieXRlY29kZS5t
X2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCi0gICAgdXNpbmcgQmFzZWxp
bmVJbkJ5SWRSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5SWRSZWdp
c3RlcnM6OnJlc3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlJZFJlZ2lzdGVyczo6c3R1
YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6YmFzZUpT
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeUlkOjpyZXN1bHRKU1I7Cisg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlJZDo6c3R1YkluZm9HUFI7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCBiYXNlSlNSKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZUpTUiwgYmFzZVZSZWcpOwpAQCAtMTY5MSw1MSArMTM0
NCwyOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfaWQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0gICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fdW5saW5rZWRDb2RlQmxvY2stPmlkZW50aWZpZXIo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkpOwotCi0gICAgSklUSW5CeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVzaW5nIFNsb3dP
cGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3Bl
cmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBwcmVmZXJy
ZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVl
UmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMj4oKTsK
LQotICAgIGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBsb2FkQ29uc3Rh
bnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUpTUik7Ci0gICAg
Y2FsbE9wZXJhdGlvbjxTbG93T3BlcmF0aW9uPigKLSAgICAgICAgQWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwKLSAgICAgICAg
Z2xvYmFsT2JqZWN0R1BSLCBzdHViSW5mb0dQUiwgYmFzZUpTUiwKLSAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5r
ZWRDb2RlQmxvY2ssICppZGVudCkucmF3Qml0cygpKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5v
ZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9i
eXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEluQnlJZD4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtl
ZENvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CisgICAgSklUSW5C
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlJZHNbbV9pbkJ5SWRJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeUlkOjpTbG93UGF0aDo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5SWQ6OlNsb3dQYXRo
OjpzdHViSW5mb0dQUjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0QnlJZDo6
U2xvd1BhdGg6OnByb3BlcnR5R1BSOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcg
Ynl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
Ynl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BS
UmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IEJhc2VsaW5lSW5CeUlkUmVnaXN0ZXJzOjpiYXNlSlNSLnBheWxvYWRHUFIoKTsKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIzOwotICAgIHN0YXRp
Y19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0KICAgICBs
b2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0NvbnN0YW50SW5kZXgsIHN0dWJJbmZv
R1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fdW5saW5rZWRDb2RlQmxvY2ssICppZGVu
dCkucmF3Qml0cygpKSwgcHJvcGVydHlHUFIpOwotICAgIC8vIHNsb3dfb3BfZ2V0X2J5X2lkX3By
ZXBhcmVDYWxsR2VuZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisKKyAgICAv
LyBzbG93X29wX2dldF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdz
IG5vIHBvaW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBh
IGRpZmZlcmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBl
KG9wZXJhdGlvbkluQnlJZE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKT46OnZhbHVlKTsKLSAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNs
b3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChCYXNl
bGluZUluQnlJZFJlZ2lzdGVyczo6cmVzdWx0SlNSID09IHJldHVyblZhbHVlSlNSKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5SWQ6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCkBAIC0xNzQ2LDExICsxMzc3LDExIEBAIHZvaWQgSklUOjplbWl0X29w
X2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAKLSAgICB1c2luZyBCYXNlbGluZUlu
QnlWYWxSZWdpc3RlcnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0
ZXJzOjpwcm9wZXJ0eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJl
c3VsdEpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BS
OwotICAgIHVzaW5nIEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6c2NyYXRjaEdQUjsKKyAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6YmFzZUpTUjsKKyAgICB1c2luZyBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cHJvcGVydHlKU1I7CisgICAgdXNpbmcgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6c3R1YkluZm9HUFI7CisgICAgdXNpbmcgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkluQnlWYWw6OnNjcmF0Y2hHUFI7CiAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2UsIGJhc2VKU1IpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVy
dHksIHByb3BlcnR5SlNSKTsKQEAgLTE3NzcsNjQgKzE0MDgsMzcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotCi0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwotCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLQotICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOwotCi0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgIHVz
aW5nIFNsb3dPcGVyYXRpb24gPSBkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcHJlZmVycmVkQXJndW1lbnRH
UFI8U2xvd09wZXJhdGlvbiwgMD4oKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BS
ID0gcHJlZmVycmVkQXJndW1lbnRHUFI8U2xvd09wZXJhdGlvbiwgMT4oKTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9u
LCAyPigpOwotICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJn
dW1lbnRKU1I8U2xvd09wZXJhdGlvbiwgMz4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3Mg
cHJvcGVydHlKU1IgPSBwcmVmZXJyZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCA0PigpOwot
Ci0gICAgbG9hZEdsb2JhbE9iamVjdChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFu
dChnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAg
IG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwgT3BJbkJ5VmFsOjpNZXRh
ZGF0YTo6b2Zmc2V0T2ZBcnJheVByb2ZpbGUoKSwgcHJvZmlsZUdQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VKU1IpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlKU1IpOwotICAgIGNhbGxP
cGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAgIEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIHByb2ZpbGVHUFIsIGJhc2VKU1IsIHByb3BlcnR5SlNS
KTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NFUlQoQnl0ZWNvZGVJ
bmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgSklUSW5CeVZh
bEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1BhdGg6OmJ5dGVjb2RlT2Zm
c2V0R1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZhbDo6U2xvd1Bh
dGg6OnN0dWJJbmZvR1BSOworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRCeVZh
bDo6U2xvd1BhdGg6OnByb2ZpbGVHUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFi
ZWwoKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgY29uc3RleHByIEdQUlJl
ZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSNDsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKLQotICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBw
cm9maWxlR1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29u
c3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJlZ2lzdGVyczo6cHJv
cGVydHlKU1IucGF5bG9hZEdQUigpOwotICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1
bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7Ci0gICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9
PSBhcmd1bWVudEdQUjEpOwotCiAgICAgbG9hZENvbnN0YW50KGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4LCBzdHViSW5mb0dQUik7CiAgICAgbWF0ZXJpYWxpemVQb2ludGVySW50
b01ldGFkYXRhKGJ5dGVjb2RlLCBPcEluQnlWYWw6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJv
ZmlsZSgpLCBwcm9maWxlR1BSKTsKLSAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNh
bGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZC4KKworICAgIC8vIHNsb3df
b3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
ciB3aWxsIGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgogICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBv
aW50IGluIGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZl
cmVudCBuYW1lLgogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUp
Pjo6dmFsdWUpOwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9n
ZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkp
OwotICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3df
b3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEhhc1ByaXZhdGUoVmlydHVhbFJlZ2lzdGVy
IGRzdCwgVmlydHVhbFJlZ2lzdGVyIGJhc2UsIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eU9yQnJh
bmQsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3Rl
cnM6OmJhc2VKU1I7Ci0gICAgdXNpbmcgQmFzZWxpbmVJbkJ5VmFsUmVnaXN0ZXJzOjpwcm9wZXJ0
eUpTUjsKLSAgICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnJlc3VsdEpTUjsKLSAg
ICB1c2luZyBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpiYXNlSlNSOworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpJbkJ5VmFsOjpwcm9wZXJ0eUpTUjsKKyAgICB1c2luZyBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6SW5CeVZhbDo6cmVzdWx0SlNSOworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpJbkJ5VmFsOjpzdHViSW5mb0dQUjsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgYmFzZUpTUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0
eU9yQnJhbmQsIHByb3BlcnR5SlNSKTsKQEAgLTE4NTgsNTEgKzE0NjIsMjcgQEAgdm9pZCBKSVQ6
OmVtaXRIYXNQcml2YXRlKFZpcnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBiYXNl
LCBWaXJ0dWFsUmVnaXMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVzdWx0SlNS
KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRIYXNQcml2YXRlU2xvdyhWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSwgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5LCBBY2Nlc3NUeXBlIHR5cGUpCit2b2lkIEpJVDo6
ZW1pdEhhc1ByaXZhdGVTbG93KEFjY2Vzc1R5cGUgdHlwZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKICAgICBBU1NFUlRfVU5VU0VEKHR5
cGUsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpIYXNQcml2YXRlQnJhbmQpOwogCi0gICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0g
bV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKLQotI2lmICFFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICB1c2luZyBTbG93
T3BlcmF0aW9uID0gZGVjbHR5cGUob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSk7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQ
UjxTbG93T3BlcmF0aW9uLCAwPigpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIg
PSBwcmVmZXJyZWRBcmd1bWVudEdQUjxTbG93T3BlcmF0aW9uLCAxPigpOwotICAgIGNvbnN0ZXhw
ciBKU1ZhbHVlUmVncyBiYXNlSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8U2xvd09wZXJhdGlv
biwgMj4oKTsKLSAgICBjb25zdGV4cHIgSlNWYWx1ZVJlZ3MgcHJvcGVydHlKU1IgPSBwcmVmZXJy
ZWRBcmd1bWVudEpTUjxTbG93T3BlcmF0aW9uLCAzPigpOwotCi0gICAgbG9hZEdsb2JhbE9iamVj
dChnbG9iYWxPYmplY3RHUFIpOwotICAgIGxvYWRDb25zdGFudChnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCwgc3R1YkluZm9HUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgYmFzZUpTUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwg
cHJvcGVydHlKU1IpOwotICAgIGNhbGxPcGVyYXRpb248U2xvd09wZXJhdGlvbj4oCi0gICAgICAg
IEFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgc3R1YkluZm9HUFIsIGJhc2VKU1Is
IHByb3BlcnR5SlNSKTsKLSNlbHNlCi0gICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICB1aW50
MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICBBU1NF
UlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKyAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4Kytd
OworCisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5VmFsOjpTbG93UGF0aDo6
Ynl0ZWNvZGVPZmZzZXRHUFI7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkdldEJ5
VmFsOjpTbG93UGF0aDo6c3R1YkluZm9HUFI7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0g
bGFiZWwoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1
bWVudEdQUjM7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29k
ZU9mZnNldEdQUik7Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1l
bnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lSW5CeVZhbFJl
Z2lzdGVyczo6YmFzZUpTUi5wYXlsb2FkR1BSKCk7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eU9yQnJhbmRHUFIgPSBCYXNlbGluZUluQnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBh
eWxvYWRHUFIoKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1lbnRHUFIwIHx8
ICFpc0FSTTY0KCkpOwotICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlPckJyYW5kR1BSID09IGFy
Z3VtZW50R1BSMSk7Ci0KICAgICBsb2FkQ29uc3RhbnQoZ2VuLm1fdW5saW5rZWRTdHViSW5mb0Nv
bnN0YW50SW5kZXgsIHN0dWJJbmZvR1BSKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lPGRlY2x0eXBlKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUpLCBkZWNsdHlwZShv
cGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplKT46OnZhbHVlKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6
ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpPjo6dmFsdWUpOwot
ICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfcHJpdmF0ZV9u
YW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7Ci0jZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0oKS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoQmFzZWxp
bmVJbkJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IgPT0gcmV0dXJuVmFsdWVKU1IpOworICAgIHN0
YXRpY19hc3NlcnQoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkluQnlWYWw6OnJlc3VsdEpTUiA9PSBy
ZXR1cm5WYWx1ZUpTUik7CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBDYWxsKCkpOwogfQogCkBAIC0xOTEyLDEyICsxNDkyLDEwIEBAIHZvaWQgSklUOjplbWl0X29w
X2hhc19wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0SGFzUHJpdmF0ZShieXRlY29kZS5tX2RzdCwgYnl0ZWNvZGUubV9iYXNlLCBieXRl
Y29kZS5tX3Byb3BlcnR5LCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9CiAKLXZvaWQg
SklUOjplbWl0U2xvd19vcF9oYXNfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSGFzUHJpdmF0ZU5hbWU+KCk7Ci0gICAgZW1pdEhhc1ByaXZhdGVTbG93KGJ5dGVjb2Rl
Lm1fYmFzZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUp
OworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTI2LDEyICsxNTA0LDEwIEBAIHZvaWQgSklUOjpl
bWl0X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgZW1pdEhhc1ByaXZhdGUoYnl0ZWNvZGUubV9kc3QsIGJ5dGVjb2RlLm1fYmFz
ZSwgYnl0ZWNvZGUubV9icmFuZCwgQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZUJyYW5kKTsKIH0KIAot
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2hhc19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxp
bmtBbGxTbG93Q2FzZXMoaXRlcik7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEhhc1ByaXZhdGVCcmFuZD4oKTsKLSAgICBlbWl0SGFzUHJpdmF0ZVNsb3co
Ynl0ZWNvZGUubV9iYXNlLCBieXRlY29kZS5tX2JyYW5kLCBBY2Nlc3NUeXBlOjpIYXNQcml2YXRl
QnJhbmQpOworICAgIGVtaXRIYXNQcml2YXRlU2xvdyhBY2Nlc3NUeXBlOjpIYXNQcml2YXRlQnJh
bmQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xOTQxLDcgKzE1MTcsNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIFZpcnR1
YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlv
bkF0KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKQEAgLTE5NDksMTQg
KzE1MjQsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIElmIHdlIHByb2ZpbGUgY2VydGFpbiBy
ZXNvbHZlIHR5cGVzLCB3ZSdyZSBndWFyYW50ZWVkIGFsbCBsaW5rZWQgY29kZSB3aWxsIGhhdmUg
dGhlIHNhbWUKICAgICAvLyByZXNvbHZlIHR5cGUuCiAKLSAgICBpZiAocHJvZmlsZWRSZXNvbHZl
VHlwZSA9PSBNb2R1bGVWYXIpIAorICAgIGlmIChwcm9maWxlZFJlc29sdmVUeXBlID09IE1vZHVs
ZVZhcikKICAgICAgICAgbG9hZFB0ckZyb21NZXRhZGF0YShieXRlY29kZSwgT3BSZXNvbHZlU2Nv
cGU6Ok1ldGFkYXRhOjpvZmZzZXRPZkxleGljYWxFbnZpcm9ubWVudCgpLCByZXR1cm5WYWx1ZUdQ
Uik7CiAgICAgZWxzZSB7CiAgICAgICAgIHVpbnQzMl90IG1ldGFkYXRhT2Zmc2V0ID0gbV9wcm9m
aWxlZENvZGVCbG9jay0+bWV0YWRhdGFUYWJsZSgpLT5vZmZzZXRJbk1ldGFkYXRhVGFibGUoYnl0
ZWNvZGUpOwogCi0gICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUMjsK
LSAgICAgICAgY29uc3RleHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QwOwotICAgICAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7CisgICAgICAgIHVzaW5nIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6Om1ldGFkYXRhR1BSOworICAgICAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UmVzb2x2ZVNjb3BlOjpzY29wZUdQUjsKKyAgICAg
ICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6Ynl0ZWNvZGVPZmZz
ZXRHUFI7CiAKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlclBheWxvYWQoc2NvcGUsIHNj
b3BlR1BSKTsKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNf
bWV0YWRhdGFHUFIsIG1ldGFkYXRhR1BSKTsKQEAgLTE5NjQsMjMgKzE1MzksMjMgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
Y29kZTsKICAgICAgICAgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKLSAg
ICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVu
azxDbG9zdXJlVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVy
YXRlT3BSZXNvbHZlU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgICAgIGVsc2UgaWYgKHBy
b2ZpbGVkUmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0g
ICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1
bms8Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAgIGNvZGUg
PSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2
ZVR5cGUgPT0gR2xvYmFsVmFyKQotICAgICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2Vu
ZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOworICAgICAgICAgICAgY29kZSA9
IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsVmFyPik7
CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkp
Ci0gICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3Bl
VGh1bms8R2xvYmFsUHJvcGVydHk+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0
dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgICAg
IGVsc2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKLSAgICAg
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxMZXhpY2FsVmFyPik7CisgICAgICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdl
bmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgICAgIGVs
c2UgaWYgKHByb2ZpbGVkUmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcykKLSAgICAgICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZl
U2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgICAg
ICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVk
UmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAg
ICAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5r
PEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICAgICAgY29k
ZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bms8R2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UgaWYgKHByb2ZpbGVk
UmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0g
ICAgICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1
bms8R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M+KTsKKyAgICAgICAgICAg
IGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rPEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuazxH
bG9iYWxWYXI+KTsKKyAgICAgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVP
cFJlc29sdmVTY29wZVRodW5rPEdsb2JhbFZhcj4pOwogCiAgICAgICAgIGVtaXROYWtlZE5lYXJD
YWxsKGNvZGUucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICAgICB9CkBAIC0yMDAwLDEyICsx
NTc1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5l
cmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mIHZtKQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
ICAgICB1c2luZyBNZXRhZGF0YSA9IE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25z
dGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0gcmVnVDI7IC8vIGluY29taW5nCi0gICAgY29uc3Rl
eHByIEdQUlJlZyBzY29wZUdQUiA9IHJlZ1QwOyAvLyBpbmNvbWluZwotICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUMzsgLy8gaW5jb21pbmcgLSBwYXNzIHRocnUg
dG8gc2xvdyBwYXRoLgorICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2Nv
cGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpSZXNvbHZlU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNvbWluZworICAgIHVzaW5nIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpSZXNvbHZlU2NvcGU6OmJ5dGVjb2RlT2Zmc2V0R1BSOyAvLyBJbmNv
bWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAgICAgY29uc3RleHByIEdQUlJlZyBz
Y3JhdGNoR1BSID0gcmVnVDU7IC8vIGxvY2FsIHRlbXBvcmFyeQogICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZU9mZnNldEdQUik7Ci0gICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAocmV0dXJuVmFs
dWVHUFIsIG1ldGFkYXRhR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRjaEdQUikpOworICAg
IHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBzY29wZUdQUiwgYnl0ZWNvZGVP
ZmZzZXRHUFIsIHNjcmF0Y2hHUFIpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNjb3BlR1BSID09IHJl
dHVyblZhbHVlR1BSKTsgLy8gZW1pdFJlc29sdmVDbG9zdXJlIGFzc3VtZXMgdGhpcwogCiAgICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKQEAgLTIxMzYsNTAgKzE3MTEsMzMgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcmVzb2x2ZV9zY29wZUdl
bmVyYXRvcihWTSYgdm0KICAgICAvLyBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSAgICAvLyBUaGUgZmFzdCBwYXRoIGFscmVhZHkgcHVzaGVkIHRoZSBy
ZXR1cm4gYWRkcmVzcy4KLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVy
czo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVND
VjY0KQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVy
KTsKLSNlbGlmIENQVShNSVBTKQotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKLSNlbHNlCi0jICAgZXJyb3IgIk5vdCBpbXBsZW1l
bnRlZCBvbiBwbGF0Zm9ybSIKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWlu
Z0J5dGVjb2RlT2Zmc2V0R1BSID0gcmVnVDM7Ci0gICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRl
Y29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKSk7CisgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlJlc29sdmVTY29wZTo6
Ynl0ZWNvZGVPZmZzZXRHUFI7IC8vIEluY29taW5nCiAKICAgICBjb25zdGV4cHIgR1BSUmVnIHNj
cmF0Y2hHUFIgPSByZWdUMjsKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9
IGFyZ3VtZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJn
dW1lbnRHUFIxOwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGluY29taW5nQnl0ZWNvZGVP
ZmZzZXRHUFIsIHNjcmF0Y2hHUFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7
CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoYnl0ZWNvZGVPZmZzZXRHUFIsIHNjcmF0Y2hH
UFIgLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CiAKKyAgICBqaXQuZW1pdENU
SVRodW5rUHJvbG9ndWUoLyogcmV0dXJuQWRkcmVzc0FscmVhZHlUYWdnZWQ6ICovIHRydWUpOyAv
LyBSZXR1cm4gYWRkcmVzcyB0YWdnZWQgaW4gJ2dlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuaycK
KworICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9m
ZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hHUFIpOwogICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9i
amVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKHNjcmF0
Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBpbnN0
cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSLCBp
bnN0cnVjdGlvbkdQUik7Ci0KKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBpbnN0
cnVjdGlvbkdQUik7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblJl
c29sdmVTY29wZUZvckJhc2VsaW5lKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7
Ci0gICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBDYWxsIG9wZXJhdGlvbiA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0gICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0jaWYgQ1BVKFg4Nl82NCkK
LSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkgfHwgQ1BV
KEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5wb3BQYWlyKGZyYW1lUG9pbnRl
clJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnBvcFBh
aXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQot
IyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0iCi0jZW5kaWYKLSAgICBqaXQu
cmV0KCk7CisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisKKyAgICAvLyBUYWlsIGNh
bGwgdG8gZXhjZXB0aW9uIGNoZWNrIHRodW5rCisgICAgSnVtcCBleGNlcHRpb25DaGVjayA9IGpp
dC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhv
cGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUmVzb2x2ZVNj
b3BlRm9yQmFzZWxpbmUpKTsKLSAgICBhdXRvIGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOwotICAgIHBhdGNo
QnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0
YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25D
aGVjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcmVzb2x2
ZV9zY29wZSIpOwogfQogCkBAIC0yMTkwLDM4ICsxNzQ4LDM3IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAgICBSZXNvbHZl
VHlwZSBwcm9maWxlZFJlc29sdmVUeXBlID0gYnl0ZWNvZGUubWV0YWRhdGEobV9wcm9maWxlZENv
ZGVCbG9jaykubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5
dGVjb2RlSW5kZXgpOwogICAgIEFTU0VSVChtX3VubGlua2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlv
bkF0KG1fYnl0ZWNvZGVJbmRleCkgPT0gY3VycmVudEluc3RydWN0aW9uKTsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgbWV0YWRhdGFHUFIgPSByZWdUNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNj
b3BlR1BSID0gcmVnVDI7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IHJlZ1QzOwotCiAgICAgdWludDMyX3QgbWV0YWRhdGFPZmZzZXQgPSBtX3Byb2ZpbGVkQ29kZUJs
b2NrLT5tZXRhZGF0YVRhYmxlKCktPm9mZnNldEluTWV0YWRhdGFUYWJsZShieXRlY29kZSk7CiAK
KyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpzY29wZUdQ
UjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29k
ZU9mZnNldEdQUjsKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKHNjb3BlLCBz
Y29wZUdQUik7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtZXRhZGF0YU9mZnNldCksIHNfbWV0
YWRhdGFHUFIsIG1ldGFkYXRhR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9m
ZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gY29kZTsKICAgICBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9z
dXJlVmFyKQotICAgICAgICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNj
b3BlVGh1bms8Q2xvc3VyZVZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxDbG9zdXJlVmFyPik7CiAgICAgZWxzZSBpZiAocHJv
ZmlsZWRSZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdl
dENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9i
YWxWYXIpCi0gICAgICAgIGNvZGUgPSB2bS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9tU2Nv
cGVUaHVuazxHbG9iYWxWYXI+KTsKKyAgICAgICAgY29kZSA9IHZtKCkuZ2V0Q1RJU3R1YihnZW5l
cmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmls
ZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAg
ICBjb2RlID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcz4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElT
dHViKGdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuazxHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9w
ZXJ0eSkKLSAgICAgICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29w
ZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CisgICAgICAgIGNvZGUgPSB2bSgpLmdldENUSVN0dWIo
Z2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbFByb3BlcnR5Pik7CiAgICAgZWxzZSBp
ZiAocHJvZmlsZWRSZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQotICAgICAgICBjb2Rl
ID0gdm0uZ2V0Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsTGV4aWNh
bFZhcj4pOworICAgICAgICBjb2RlID0gdm0oKS5nZXRDVElTdHViKGdlbmVyYXRlT3BHZXRGcm9t
U2NvcGVUaHVuazxHbG9iYWxMZXhpY2FsVmFyPik7CiAgICAgZWxzZSBpZiAocHJvZmlsZWRSZXNv
bHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAgICAg
ICAgY29kZSA9IHZtLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CisgICAgICAgIGNvZGUgPSB2bSgp
LmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzPik7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gdm0uZ2V0
Q1RJU3R1YihnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bms8R2xvYmFsVmFyPik7CisgICAgICAg
IGNvZGUgPSB2bSgpLmdldENUSVN0dWIoZ2VuZXJhdGVPcEdldEZyb21TY29wZVRodW5rPEdsb2Jh
bFZhcj4pOwogCiAgICAgZW1pdE5ha2VkTmVhckNhbGwoY29kZS5yZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUpTUik7
CkBAIC0yMjM1LDkgKzE3OTIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAgLy8gREZH
L0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0
cywgd2hpY2ggbWF5IG5vdCBtYXRjaAogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgdXNpbmcgTWV0YWRhdGEgPSBPcEdldEZyb21TY29wZTo6TWV0YWRhdGE7Ci0gICAgY29uc3Rl
eHByIEdQUlJlZyBtZXRhZGF0YUdQUiA9IHJlZ1Q0OwotICAgIGNvbnN0ZXhwciBHUFJSZWcgc2Nv
cGVHUFIgPSByZWdUMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0g
cmVnVDM7IC8vIFVzZWQgb25seSBvbiBzbG93IHBhdGgKKworICAgIHVzaW5nIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6Om1ldGFkYXRhR1BSOyAvLyBJbmNvbWluZworICAgIHVz
aW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OnNjb3BlR1BSOyAvLyBJbmNv
bWluZworICAgIHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpHZXRGcm9tU2NvcGU6OmJ5dGVj
b2RlT2Zmc2V0R1BSOyAvLyBJbmNvbWluZyAtIHBhc3MgdGhyb3VnaCB0byBzbG93IHBhdGguCiAg
ICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDU7CiAgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlT2Zmc2V0R1BSKTsKICAgICBzdGF0aWNfYXNzZXJ0KG5vT3ZlcmxhcChyZXR1cm5W
YWx1ZUpTUiwgbWV0YWRhdGFHUFIsIHNjb3BlR1BSLCBieXRlY29kZU9mZnNldEdQUiwgc2NyYXRj
aEdQUikpOwpAQCAtMjI1Niw3ICsxODE0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYgdm0pCiAgICAg
ICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNUX09GRlNFVE9GKEpTR2xv
YmFsT2JqZWN0LCBtX3ZhckluamVjdGlvbldhdGNocG9pbnQpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoOChFcXVhbCwgQWRkcmVzcyhzY3JhdGNoR1BS
LCBXYXRjaHBvaW50U2V0OjpvZmZzZXRPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJbnZhbGlk
YXRlZCkpKTsKICAgICB9OwotICAgIAorCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAg
ICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgpAQCAtMjM3MSw2OCArMTkyOSw0MiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29w
ZUdlbmVyYXRvcihWTSYgdgogICAgIC8vIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnB1c2goWDg2UmVnaXN0
ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKFJJ
U0NWNjQpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0
ZXIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lz
dGVyLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwotI2Vsc2UKLSMgICBlcnJvciAiTm90IGltcGxl
bWVudGVkIG9uIHBsYXRmb3JtIgotI2VuZGlmCi0KICAgICB1c2luZyBNZXRhZGF0YSA9IE9wR2V0
RnJvbVNjb3BlOjpNZXRhZGF0YTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhR1BSID0g
cmVnVDQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBpbmNvbWluZ0J5dGVjb2RlT2Zmc2V0R1BSID0g
cmVnVDM7Ci0gICAgaml0LnN0b3JlMzIoaW5jb21pbmdCeXRlY29kZU9mZnNldEdQUiwgdGFnRm9y
KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZWdUMjsKKyAgICB1c2luZyBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6R2V0RnJvbVNjb3BlOjptZXRhZGF0YUdQUjsgLy8gSW5jb21pbmcKKyAgICB1c2lu
ZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6R2V0RnJvbVNjb3BlOjpieXRlY29kZU9mZnNldEdQUjsg
Ly8gSW5jb21pbmcKICAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3Vt
ZW50R1BSMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRH
UFIxOwotICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKG1ldGFkYXRhR1BSLCBpbmNvbWluZ0J5
dGVjb2RlT2Zmc2V0R1BSLCBzY3JhdGNoR1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9u
R1BSKSk7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIGJ5dGVjb2Rl
T2Zmc2V0R1BSLCBnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKSk7CisgICAgc3RhdGlj
X2Fzc2VydChub092ZXJsYXAobWV0YWRhdGFHUFIsIHJldHVyblZhbHVlR1BSKSk7CiAKLSAgICBq
aXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHNjcmF0Y2hH
UFIpOwotICAgIGppdC5sb2FkUHRyKEFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKLSAgICBqaXQubG9hZFB0cihB
ZGRyZXNzKHNjcmF0Y2hHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2lu
dGVyKCkpLCBpbnN0cnVjdGlvbkdQUik7Ci0gICAgaml0LmFkZFB0cihpbmNvbWluZ0J5dGVjb2Rl
T2Zmc2V0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgaml0LmVtaXRDVElUaHVua1Byb2xvZ3Vl
KC8qIHJldHVybkFkZHJlc3NBbHJlYWR5VGFnZ2VkOiAqLyB0cnVlKTsgLy8gUmV0dXJuIGFkZHJl
c3MgdGFnZ2VkIGluICdnZW5lcmF0ZU9wR2V0RnJvbVNjb3BlVGh1bmsnCiAKLSAgICAvLyBQcmVz
ZXJ2ZSBtZXRhZGF0YSBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFDU1IgPSBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlcjsKLSAgICBhdXRvIHJlc3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAg
ICAgaml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKTsKLSAgICB9OwotI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBj
b25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhQ1NSID0gc19tZXRhZGF0YUdQUjsKLSAgICBhdXRvIHJl
c3RvcmVIaWphY2tlZENTUiA9IFsmXSgpIHsKLSAgICAgICAgaml0LmxvYWRQdHIoYWRkcmVzc0Zv
cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCBzX21ldGFkYXRhR1BSKTsKLSAgICAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhzX21ldGFkYXRhR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRh
dGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgfTsKLSNlbmRpZgotICAgIEFTU0VSVChS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmNvbnRhaW5zKG1ldGFkYXRhQ1NSKSk7
Ci0gICAgaml0Lm1vdmUobWV0YWRhdGFHUFIsIG1ldGFkYXRhQ1NSKTsKLQotICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9iYWxPYmplY3RH
UFIsIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwg
dGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGluc3RydWN0aW9uR1BSKTsKKyAgICBqaXQubG9h
ZFB0cihBZGRyZXNzKGluc3RydWN0aW9uR1BSLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoaW5zdHJ1
Y3Rpb25HUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBp
bnN0cnVjdGlvbkdQUik7CisgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1
Y3Rpb25HUFIpOworCisgICAgLy8gc2F2ZSBtZXRhZGF0YUdQUiAoYXJndW1lbnRzIHRvIGNhbGwg
YmVsb3cgYXJlIGluIHJlZ2lzdGVycyBvbiBhbGwgcGxhdGZvcm1zLCBzbyBvayB0byBzdGFjayB0
aGlzKS4KKyAgICAvLyBOb3RlOiB3ZSB3aWxsIGRvIGEgY2FsbCwgc28gY2FuJ3QgdXNlIHB1c2hU
b1NhdmUsIGFzIGl0IGRvZXMgbm90IG1haW50YWluIEFCSSBzdGFjayBhbGlnbm1lbnQuCisgICAg
aml0LnN1YlB0cihUcnVzdGVkSW1tUHRyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
IGppdC5zdG9yZVB0cihtZXRhZGF0YUdQUiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlcikp
OworCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAg
IEp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNr
KHZtKTsKIAotICAgIGppdC5zdG9yZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFk
YXRhQ1NSLCBNZXRhZGF0YTo6b2Zmc2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNl
dE9mRmlyc3RCdWNrZXQoKSkpOwotICAgIHJlc3RvcmVIaWphY2tlZENTUigpOworICAgIGppdC5s
b2FkUHRyKEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCBtZXRhZGF0YUdQUik7IC8vIFJl
c3RvcmUgbWV0YWRhdGFHUFIKKyAgICBqaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIoMTYpLCBzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7IC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlcgorICAgIGppdC5zdG9y
ZVZhbHVlKHJldHVyblZhbHVlSlNSLCBBZGRyZXNzKG1ldGFkYXRhR1BSLCBNZXRhZGF0YTo6b2Zm
c2V0T2ZQcm9maWxlKCkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOwog
Ci0jaWYgQ1BVKFg4Nl82NCkKLSAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5w
b3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwotI2VsaWYgQ1BVKE1J
UFMpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIHJldHVybkFkZHJlc3NS
ZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQgb24gcGxhdGZvcm0i
Ci0jZW5kaWYKKyAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUoKTsKICAgICBqaXQucmV0KCk7
CiAKICAgICBleGNlcHRpb25DaGVjay5saW5rKCZqaXQpOwotICAgIHJlc3RvcmVIaWphY2tlZENT
UigpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbVB0cigxNiksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsgLy8gUmVzdG9yZSBzdGFjayBwb2ludGVyCisKICAgICBKdW1wIGp1bXBUb0hhbmRsZXIg
PSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CkBAIC0yNTkwLDI3
ICsyMTIyLDIwIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yCiAgICAgaWYgKHByb2ZpbGVkUmVz
b2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CiAgICAgICAgIC8vIElmIGFueSBsaW5rZWQgQ29kZUJs
b2NrIHNhdyBhIE1vZHVsZVZhciwgdGhlbiBhbGwgbGlua2VkIENvZGVCbG9ja3MgYXJlIGd1YXJh
bnRlZWQKICAgICAgICAgLy8gdG8gYWxzbyBzZWUgTW9kdWxlVmFyLgotICAgICAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBzbG93X3BhdGhfdGhyb3dfc3Ry
aWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogICAgICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogICAgIH0gZWxzZSB7Ci0jaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGFyZ3VtZW50R1BSMCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgYXJndW1lbnRHUFIwLCBjdXJyZW50SW5zdHJ1
Y3Rpb24pOwotI2Vsc2UKLSAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICAgICAgdWlu
dDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAg
IEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5kZXgp
OwogICAgICAgICBBU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChtX2J5
dGVjb2RlSW5kZXgpID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKLSAgICAgICAgY29uc3RleHBy
IEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisgICAgICAg
IHVzaW5nIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNldEdQ
UjsKIAotICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0
X3RvX3Njb3BlR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwotI2VuZGlmCisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRH
UFIpOworICAgICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIoc2xvd19vcF9w
dXRfdG9fc2NvcGVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAgICAgfQog
fQogCi0jaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZt
KQogewogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25s
eSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKQEAgLTI2MTksNDMg
KzIxNDQsMzQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNs
b3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKICAgICAvLyBDYWxsRnJhbWU6OmNv
ZGVCbG9jaygpLgogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAg
IGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgbGlua1JlZ2lzdGVyKTsKLSNlbmRpZgotCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29k
ZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BSMjsKLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
Ci0KLSAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKICAg
ICBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKICAgICBj
b25zdGV4cHIgR1BSUmVnIGluc3RydWN0aW9uR1BSID0gYXJndW1lbnRHUFIxOworICAgIHVzaW5n
IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRUb1Njb3BlOjpieXRlY29kZU9mZnNldEdQUjsgLy8g
SW5jb21pbmcKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BS
MzsgLy8gT25seSB1c2VkIGFzIHNjcmF0Y2ggcmVnaXN0ZXIKKyAgICBzdGF0aWNfYXNzZXJ0KG5v
T3ZlcmxhcChnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSLCBieXRlY29kZU9mZnNldEdQ
UiwgY29kZUJsb2NrR1BSKSk7CiAKKyAgICBqaXQuZW1pdENUSVRodW5rUHJvbG9ndWUoKTsKKwor
ICAgIC8vIENhbGwgc2xvdyBvcGVyYXRpb24KKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNl
dEdQUiwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7
CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CiAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhjb2Rl
QmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZJbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBp
bnN0cnVjdGlvbkdQUik7CiAgICAgaml0LmFkZFB0cihieXRlY29kZU9mZnNldEdQUiwgaW5zdHJ1
Y3Rpb25HUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRU
b1Njb3BlKT4oZ2xvYmFsT2JqZWN0R1BSLCBpbnN0cnVjdGlvbkdQUik7CisgICAgQ2FsbCBvcGVy
YXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uID0gaml0LmNh
bGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hl
Y2sgPSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBqaXQuZW1p
dENUSVRodW5rRXBpbG9ndWUoKTsKIAotI2lmIENQVShYODZfNjQpCi0gICAgaml0LnBvcChYODZS
ZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgaml0LnBvcFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZW5kaWYKLSAgICBqaXQucmV0KCk7Cisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIEp1bXAgZXhjZXB0
aW9uQ2hlY2sgPSBqaXQuanVtcCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAg
ICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uUHV0VG9TY29wZSkpOwotICAgIGF1dG8gaGFuZGxlciA9IHZtLmdldENUSVN0
dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik7Ci0g
ICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFu
ZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4
Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0
aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9wdXRfdG9fc2NvcGUiKTsKIH0KLSNlbmRpZgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAg
LTI2NjMsNyArMjE3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzID0g
Ynl0ZWNvZGUubV9hcmd1bWVudHM7CiAgICAgaW50IGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsK
LSAgICAKKwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJQYXlsb2FkKGFyZ3VtZW50cywgcmVn
VDApOwogICAgIGxvYWRWYWx1ZShBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6OnN0b3Jh
Z2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpLCBqc1Jl
Z1QxMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZSwganNSZWdUMTApOwpA
QCAtMjc0Myw3ICsyMjU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1l
cmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBkb25lQ2Fz
ZXMuYXBwZW5kKGp1bXAoKSk7CiAKICAgICBnZW5lcmljQ2FzZXMubGluayh0aGlzKTsKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKHRoaXMpOwpAQCAtMjgw
Niw3ICsyMzIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9uZXh0KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBvcGVyYXRpb25DYXNlcy5saW5r
KHRoaXMpOwogCi0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRoX2VudW1lcmF0b3JfbmV4dCk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTI4MjQsMTMg
KzIzNDAsMTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBKdW1wTGlzdCBkb25lQ2Fz
ZXM7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIHJlc3VsdEdQUiA9IEJhc2VsaW5lRW51bWVyYXRv
ckdldEJ5VmFsUmVnaXN0ZXJzOjpyZXN1bHRKU1IucGF5bG9hZEdQUigpOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYmFzZUdQUiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5VmFsUmVnaXN0ZXJzOjpi
YXNlSlNSLnBheWxvYWRHUFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
QmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnByb3BlcnR5SlNSLnBheWxvYWRH
UFIoKTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gQmFzZWxpbmVFbnVtZXJh
dG9yR2V0QnlWYWxSZWdpc3RlcnM6OnN0dWJJbmZvR1BSOwotICAgIGNvbnN0ZXhwciBHUFJSZWcg
c2NyYXRjaDEgPSBCYXNlbGluZUVudW1lcmF0b3JHZXRCeVZhbFJlZ2lzdGVyczo6c2NyYXRjaDE7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lRW51bWVyYXRvckdldEJ5
VmFsUmVnaXN0ZXJzOjpzY3JhdGNoMjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHNjcmF0Y2gzID0g
QmFzZWxpbmVFbnVtZXJhdG9yR2V0QnlWYWxSZWdpc3RlcnM6OnNjcmF0Y2gzOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgcmVzdWx0R1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JH
ZXRCeVZhbDo6cmVzdWx0SlNSLnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJh
c2VHUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpiYXNlSlNS
LnBheWxvYWRHUFIoKTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6cHJvcGVydHlKU1IucGF5bG9hZEdQ
UigpOworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpzdHViSW5mb0dQUjsKKyAgICBjb25zdGV4cHIgR1BS
UmVnIHNjcmF0Y2gxID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkVudW1lcmF0b3JHZXRCeVZhbDo6
c2NyYXRjaDE7CisgICAgY29uc3RleHByIEdQUlJlZyBzY3JhdGNoMiA9IEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpFbnVtZXJhdG9yR2V0QnlWYWw6OnNjcmF0Y2gyOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgc2NyYXRjaDMgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6RW51bWVyYXRvckdldEJ5VmFsOjpz
Y3JhdGNoMzsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgYmFzZUdQUik7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihtb2RlLCBzY3JhdGNoMyk7CkBAIC0yOTA2LDcgKzI0
MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Qnl0ZWNvZGUsIHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25UeXBlPgotdm9pZCBKSVQ6OmVtaXRf
ZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwgU2xvd1BhdGhGdW5jdGlvblR5cGUg
Z2VuZXJhbENhc2UpCit2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwo
Y29uc3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBnZW5lcmFsQ2Fz
ZSkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CkBAIC0yOTM2LDcgKzI0NTIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7CiAK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgZ2VuZXJhbENhc2UpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Z2VuZXJhbENhc2UpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiAKICAgICBkb25lLmxpbmso
dGhpcyk7CkBAIC0yOTQ0LDMxICsyNDYwLDMxIEBAIHZvaWQgSklUOjplbWl0X2VudW1lcmF0b3Jf
aGFzX3Byb3BlcnR5SW1wbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uCiAK
IHZvaWQgSklUOjplbWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0
eUltcGwoY3VycmVudEluc3RydWN0aW9uLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRW51bWVy
YXRvckluQnlWYWw+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CisgICAgZW1p
dF9lbnVtZXJhdG9yX2hhc19wcm9wZXJ0eUltcGwoY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVu
dW1lcmF0b3JJbkJ5VmFsPigpLCBzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBlbWl0X2VudW1lcmF0b3JfaGFz
X3Byb3BlcnR5SW1wbChjdXJyZW50SW5zdHJ1Y3Rpb24sIGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19v
d25fcHJvcGVydHkpOworICAgIGVtaXRfZW51bWVyYXRvcl9oYXNfcHJvcGVydHlJbXBsKGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9ySGFzT3duUHJvcGVydHk+KCksIHNsb3dfcGF0
aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpOwogfQogCiAjZWxpZiBVU0UoSlNWQUxVRTMy
XzY0KQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2VudW1l
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9lbnVtZXJhdG9y
X25leHQpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgc2xvd19wYXRo
X2VudW1lcmF0b3JfbmV4dCk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2dldF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9nZXRfYnlfdmFs
KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVt
ZXJhdG9yX2dldF9ieV92YWwpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKQEAgLTI5
NzcsMTUgKzI0OTMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUUKICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9pbl9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKikKIHsKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2luX2J5X3ZhbCk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9oYXNfb3du
X3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24q
KQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfZW51bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19v
d25fcHJvcGVydHkpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCA0ZGI3NmE5MDFkZjU2YWZiMTNiNDhjMWVh
ODdlZDk1OTdiOGM4MWY4Li5iZjYwYzBkMjI5MGI2NDlkZGQzNTE3MDM2NmIzNTBlMjM5N2ZiZTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0xNzEsOCArMTcx
LDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0
aVN0dWIoVk0mIHZtLCBUaHVua0dlbmVyYXRvcgogICAgIH0pOwogfQogCi0jaWYgRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
SklUVGh1bmtzOjpjdGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rp
b24gc2xvd1BhdGhGdW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2FzdDxUaHVu
a0dlbmVyYXRvcj4oc2xvd1BhdGhGdW5jdGlvbik7CkBAIC0xODEsOCArMTc5LDYgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVNsb3dQYXRoRnVu
Y3Rpb25TdHViKFZNJiB2bSwKICAgICB9KTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQotCiBzdHJ1Y3QgSklUVGh1bmtzOjpIb3N0S2V5U2VhcmNoZXIgewogICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEhvc3RGdW5jdGlvbktleSYga2V5KSB7IHJldHVybiBX
ZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2g6Omhhc2goa2V5KTsgfQogICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mIGEsIGNvbnN0IEhvc3RGdW5jdGlvbktl
eSYgYikgeyByZXR1cm4gV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoOjplcXVhbChhLCBiKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKaW5kZXggODQ3Y2UyNTAyZTQwMThhMmM2
ZDU5YWM4NjNiZjU3ZTE0NTM4Y2VmYi4uYTM3NWYyODUxYTEwMTZlMGRiNTdmY2Q4YTBjYTZmMTFk
YzI4NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC02Myw5ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+
IGN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3QoVk0mKTsKIAogICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YihWTSYsIFRodW5rR2VuZXJhdG9yKTsKLSNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGN0aVNsb3dQYXRoRnVuY3Rpb25TdHViKFZNJiwgU2xvd1BhdGhGdW5jdGlv
bik7Ci0jZW5kaWYKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0m
LCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3Is
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9u
U3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IsIEludHJpbnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1
cmUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93
UGF0aENhbGwuY3BwCmluZGV4IGI4YWNhYmU2OGZkYjk4MThkYzlmOTdjYjA3NDdhMGE0ZTEzZDcy
OGIuLjMyZjA1YjgzZjUyOWU4OTVkYmQ4ZTYyZDlmN2NjMjUwNDMyMDhjMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK25hbWVzcGFj
ZSB7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IEpJVDo6YXJndW1l
bnRHUFIzOworfQogCiB2b2lkIEpJVFNsb3dQYXRoQ2FsbDo6Y2FsbCgpCiB7CkBAIC00NCw5ICs0
Niw3IEBAIHZvaWQgSklUU2xvd1BhdGhDYWxsOjpjYWxsKCkKICAgICB1aW50MzJfdCBieXRlY29k
ZU9mZnNldCA9IG1faml0LT5tX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1faml0LT5tX2J5dGVjb2RlSW5kZXgpOwog
Ci0gICAgVU5VU0VEX1ZBUklBQkxFKG1fcGMpOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNv
ZGVPZmZzZXRSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7Ci0gICAgbV9qaXQtPm1vdmUoSklU
OjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldFJlZyk7CisgICAg
bV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9m
ZnNldEdQUik7CiAgICAgbV9qaXQtPmVtaXROYWtlZE5lYXJDYWxsKHZtLmppdFN0dWJzLT5jdGlT
bG93UGF0aEZ1bmN0aW9uU3R1Yih2bSwgbV9zbG93UGF0aEZ1bmN0aW9uKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogfQogCkBAIC01NCw0NiArNTQsNDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1bmsoVk0mIHZt
LCBTbG8KIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgY29uc3RleHByIEdQUlJlZyBi
eXRlY29kZU9mZnNldFJlZyA9IEpJVDo6YXJndW1lbnRHUFIxOwotCi0jaWYgQ1BVKFg4Nl82NCkK
LSAgICBqaXQucHVzaChYODZSZWdpc3RlcnM6OmVicCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
aml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSAgICBqaXQucHVzaFBhaXIoQ0NhbGxIZWxwZXJzOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlm
Ci0KLSAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldFJlZywgQ0NhbGxIZWxwZXJzOjp0YWdG
b3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKLQotICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5lbWl0Q1RJVGh1bmtQcm9sb2d1
ZSgpOwogCisgICAgLy8gQ2FsbCBzbG93IG9wZXJhdGlvbgorICAgIGppdC5zdG9yZTMyKGJ5dGVj
b2RlT2Zmc2V0R1BSLCBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mSW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6YXJndW1lbnRHUFIx
ID09IGJ5dGVjb2RlT2Zmc2V0UmVnKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBPUyhXSU5ET1dTKSAm
JiBDUFUoWDg2XzY0KQorICAgIC8vIE9uIFdpbmRvd3MsIHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRo
YW4gOCBieXRlcyBhcmUgcmV0dWVuZWQgdmlhIGFuIGltcGxpY2l0IHBvaW50ZXIgcGFzc2VkIGFz
CisgICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUg
c2hpZnRlZCB0byB0aGUgcmlnaHQuIE1ha2Ugc3BhY2UgZm9yIHRoaXMuCisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoU2xvd1BhdGhSZXR1cm5UeXBlKSA9PSAxNiwgIkFzc3VtZWQgYnkgZ2VuZXJh
dGVkIGNhbGwgc2l0ZSBiZWxvdyIpOworICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMigxNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lQXJnR1BSID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcGNBcmdHUFIgPSBH
UFJJbmZvOjphcmd1bWVudEdQUjI7CisgICAgc3RhdGljX2Fzc2VydChub092ZXJsYXAoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBjYWxsRnJhbWVBcmdHUFIsIHBjQXJnR1BSLCBieXRlY29kZU9mZnNl
dEdQUikpOworI2Vsc2UKKyAgICBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZUFyZ0dQUiA9IEdQ
UkluZm86OmFyZ3VtZW50R1BSMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHBjQXJnR1BSID0gR1BS
SW5mbzo6YXJndW1lbnRHUFIxOworICAgIHN0YXRpY19hc3NlcnQobm9PdmVybGFwKGNhbGxGcmFt
ZUFyZ0dQUiwgcGNBcmdHUFIsIGJ5dGVjb2RlT2Zmc2V0R1BSKSk7CisjZW5kaWYKKyAgICBqaXQu
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgY2FsbEZyYW1lQXJnR1BSKTsKKyAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgcGNBcmdHUFIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhw
Y0FyZ0dQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIHBj
QXJnR1BSKTsKKyAgICBqaXQuYWRkUHRyKGJ5dGVjb2RlT2Zmc2V0R1BSLCBwY0FyZ0dQUik7CiAK
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7
Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXROb25QYXRj
aGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5wb3Ao
WDg2UmVnaXN0ZXJzOjplYnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIGppdC5wb3BQYWlyKEND
YWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lz
dGVyKTsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQorICAgIGppdC5wb3AoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOyAvLyBwYworICAgIGppdC5wb3AoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIyKTsgLy8gY2FsbEZyYW1lCiAjZW5kaWYKLSAgICBqaXQucmV0KCk7CiAKLSAgICBhdXRv
IGhhbmRsZXIgPSB2bS5nZXRDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IpOworICAgIGppdC5lbWl0Q1RJVGh1bmtFcGlsb2d1ZSgpOworCisg
ICAgLy8gVGFpbCBjYWxsIHRvIGV4Y2VwdGlvbiBjaGVjayB0aHVuaworICAgIENDYWxsSGVscGVy
czo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5qdW1wKCk7CiAKICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRy
YUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhj
ZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKSk7CisgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0
aW9uTGFiZWwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiU2xvd1BhdGhDYWxsIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0aENh
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgKaW5kZXggODk5
YTI5MDBmZWRlMzdkZDBlYTVlNmYyYjkwNjdkNjViMDJlNzM2MC4uMzQwYzllZWNhNmU4MjY1MmE5
MzZhZTA5NjRiMDQ0M2Y2MzQxMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQ
YXRoQ2FsbC5oCkBAIC0zNSw1MCArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpJ
VFNsb3dQYXRoQ2FsbCB7CiBwdWJsaWM6Ci0gICAgSklUU2xvd1BhdGhDYWxsKEpJVCogaml0LCBj
b25zdCBJbnN0cnVjdGlvbiogcGMsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlvbikK
KyAgICBKSVRTbG93UGF0aENhbGwoSklUKiBqaXQsIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhG
dW5jdGlvbikKICAgICAgICAgOiBtX2ppdChqaXQpCiAgICAgICAgICwgbV9zbG93UGF0aEZ1bmN0
aW9uKHNsb3dQYXRoRnVuY3Rpb24pCi0gICAgICAgICwgbV9wYyhwYykKICAgICB7CiAgICAgICAg
IGFzc2VydElzQ0Z1bmN0aW9uUHRyKHNsb3dQYXRoRnVuY3Rpb24pOwogICAgIH0KIAotI2lmIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIHZvaWQgY2FsbCgpOwogICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlVGh1bmsoVk0mLCBTbG93
UGF0aEZ1bmN0aW9uKTsKIAotI2Vsc2UgLy8gbm90IEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
Ci0gICAgSklUOjpDYWxsIGNhbGwoKQotICAgIHsKLSAgICAgICAgbV9qaXQtPnVwZGF0ZVRvcENh
bGxGcmFtZSgpOwotI2lmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCi0gICAgICAgIG1faml0
LT5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtMTYpLCBNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAg
bV9qaXQtPm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjEpOwot
ICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1l
bnRHUFIyKTsKLSNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVk
SW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMSk7Ci0jZW5kaWYKLSAgICAgICAgSklUOjpD
YWxsIGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwotCi0jaWYg
Q1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKLSAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1Qw
KTsgLy8gdlBDCi0gICAgICAgIG1faml0LT5wb3AoSklUOjpyZWdUMSk7IC8vIGNhbGxGcmFtZSBy
ZWdpc3RlcgotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDAgPT0gR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KEpJVDo6cmVnVDEgPT0gR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIyKTsKLSNlbmRpZgotCi0gICAgICAgIG1faml0LT5leGNlcHRpb25D
aGVjaygpOwotICAgICAgICByZXR1cm4gY2FsbDsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIHByaXZhdGU6CiAgICAgSklUKiBtX2ppdDsKICAgICBTbG93UGF0
aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogbV9w
YzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNGYyNGQ0MDQ5NTU4YjM1Yzc3ZTRjOWZlNDZmMmVm
YmFjOWQ1MzdjZS4uNWI1MDhjYjNlMjdkOWQzM2FiOWIxNGU0MmJkNjZlZjhmNDIyNDRkZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNTAs
OSArNTAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiAKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoJnZtKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwotCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9
IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7Ci0KICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFu
ZGxlcih2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKQEAgLTYwLDggKzU4LDYg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBK
SVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFu
ZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtNzgsMjAgKzc0LDEzIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
R2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrIik7CiB9CiAKLSNlbmRp
ZgotCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQ
cmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxs
SGVscGVycyBqaXQ7CiAKLSNpZiBDUFUoWDg2XzY0KQotICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMiAqIHNpemVvZihDUFVSZWdpc3RlcikpLCBYODZSZWdpc3RlcnM6
OmVzcCk7Ci0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoUklTQ1Y2
NCkKLSAgICBqaXQucG9wUGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBD
Q2FsbEhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBqaXQucG9w
UGFpcihDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnJl
dHVybkFkZHJlc3NSZWdpc3Rlcik7Ci0jZWxzZQotIyAgIGVycm9yICJOb3QgaW1wbGVtZW50ZWQg
b24gcGxhdGZvcm0iCisgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7CisjaWYgQ1BVKFg4
Nl82NCkgLy8gT24gdGhlIHg4NiwgZW1pdENUSVRodW5rRXBpbG9ndWUgbGVhdmVzIHRoZSByZXR1
cm4gUEMgb24gdGhlIHN0YWNrLiBEcm9wIGl0LgorICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENQVVJlZ2lzdGVyKSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsK
ICNlbmRpZgogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9IGppdC5qdW1w
KCk7CkBAIC0xMDIsMzIgKzkxLDIwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gcG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlCiAgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAicG9wVGh1bmtT
dGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbiIpOwogfQogCi0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hl
Y2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
LSAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIC8vIFRoaXMgdGh1bmsgaXMgdGFpbCBj
YWxsZWQgZnJvbSBvdGhlciB0aHVua3MsIGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgYWx3YXlz
IGFscmVhZHkgdGFnZ2VkCiAKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRXhjZXB0aW9u
RnV6eigpKSkgewotICAgICAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRp
bWUgZnVuY3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBo
ZXJlLgotI2lmIENQVShYODZfNjQpCi0gICAgICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6ZWJw
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgaml0LnB1c2hQYWlyKENDYWxsSGVscGVyczo6
ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6bGlua1JlZ2lzdGVyKTsKLSNlbmRp
ZgotICAgIH0KKyAgICAvLyBFeGNlcHRpb24gZnV6emluZyBjYW4gY2FsbCBhIHJ1bnRpbWUgZnVu
Y3Rpb24uIFNvLCB3ZSBuZWVkIHRvIHByZXNlcnZlIHRoZSByZXR1cm4gYWRkcmVzcyBoZXJlLgor
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBq
aXQuZW1pdENUSVRodW5rUHJvbG9ndWUoLyogcmV0dXJuQWRkcmVzc0FscmVhZHlUYWdnZWQ6ICov
IHRydWUpOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhbmRsZUV4Y2VwdGlvbiA9IGppdC5l
bWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOwogCi0gICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkpIHsKLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBq
aXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgaml0
LnBvcFBhaXIoQ0NhbGxIZWxwZXJzOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ0NhbGxIZWxwZXJz
OjpsaW5rUmVnaXN0ZXIpOwotI2VuZGlmCi0gICAgfQorICAgIGlmIChVTkxJS0VMWShPcHRpb25z
Ojp1c2VFeGNlcHRpb25GdXp6KCkpKQorICAgICAgICBqaXQuZW1pdENUSVRodW5rRXBpbG9ndWUo
KTsKICAgICBqaXQucmV0KCk7CiAKICAgICBhdXRvIGhhbmRsZXJHZW5lcmF0b3IgPSBPcHRpb25z
Ojp1c2VFeGNlcHRpb25GdXp6KCkgPyBwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhj
ZXB0aW9uR2VuZXJhdG9yIDogaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yOwpAQCAtMTQ0LDggKzEy
MSw2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkNoZWNrRXhjZXB0aW9uIik7CiB9CiAKLSNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKLQogdGVtcGxhdGU8dHlwZW5hbWUgVGFnVHlwZT4KIGlubGlu
ZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBv
aW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmgKaW5kZXggNTg5ZTcwMDQ2NDNhMjI1MzcyNWFmMmJiOGYwZmYwNWQzMzFl
N2E0YS4uMzE0OTJiMmViZWRiZGY2OGFiYTg5OTA3MDdiY2ViZjQ1NDRmZWNlOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCkBAIC0zOCwxMyArMzgsOCBA
QCBlbnVtIGNsYXNzIENhbGxNb2RlOwogdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY7CiBjbGFzcyBWTTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQot
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldp
dGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYpOwotCi0jZW5kaWYgLy8gRU5BQkxFKEVY
VFJBX0NUSV9USFVOS1MpCi0KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
aGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRv
cihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BUaHVua1N0
YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQ
YXRoR2VuZXJhdG9yKFZNJik7CkBAIC04NCw5ICs3OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mKTsKIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZW1vdGVGdW5jdGlvbkNhbGxHZW5l
cmF0b3IoVk0mKTsKIAotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwot
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGUuaAppbmRleCBmNTQxZmY5OWI5NDUzYzJkYmVmNGVkM2EyODQ1M2U3Yzg0
OTg2ODk3Li42YTBiOWQ1NGI1YTZiNTkzN2I4NmYyMjZhMjc5Y2ZlYzkyODE3NGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlLmgKQEAgLTg0MywxNCArODQzLDYgQEAKICNkZWZpbmUgRU5BQkxFX0pJ
VF9PUEVSQVRJT05fVkFMSURBVElPTiAxCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgfHwgKENQ
VShYODZfNjQpICYmICFPUyhXSU5ET1dTKSkKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVz
ZSB0aHVua3MgY2FuIHVzZSB1cCB0byA2IGFyZ3VtZW50IHJlZ2lzdGVycywgYW5kCi0gICBtYWtl
IHVzZSBvZiBBUk02NCBsaWtlIGZlYXR1cmVzLiBGb3Igbm93LCB3ZSdsbCBvbmx5IHN1cHBvcnQg
dGhlbSBvbiBwbGF0Zm9ybXMKLSAgIHRoYXQgaGF2ZSA2IG9yIG1vcmUgYXJndW1lbnQgcmVnaXN0
ZXJzIHRvIHVzZS4KLSovCi0jZGVmaW5lIEVOQUJMRV9FWFRSQV9DVElfVEhVTktTIDEKLSNlbmRp
ZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZKSAmJiAhT1MoV0lORE9X
UykKICNkZWZpbmUgRU5BQkxFX0JJTkRJTkdfSU5URUdSSVRZIDEKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>